PrototypeX Posted November 19, 2016 Share Posted November 19, 2016 (edited) Есть вопрос, почему то, из-за большого кол-ва пикапов, начинает проседать фпс у игроков. Допустим на сервере 2460 домов, умножаем на 2 (пикап входа и пикап выхода для каждого дома) Дома работают на Мирах (Dimensions), т.е. каждый пикап выхода находится в уникальном мире, из которого один выход - на позицию пикапа входа. Итого 4920 пикапов. Наблюдается проседание фпс, после отключения ресурса, проседаний не наблюдается. С чем связано это? + небольшой сабж: для каждого пикапа на клиенте есть distantion + getElementData + isElementOnScreen (выводит инфу о доме, aka 3D текст). Но при замене пикапа на маркер, всё гуд. Пикапы всё таки красивее (домики), посоветуйте что нибудь, как с этим бороться, типо прорисовывать пикапы на ближайшем расстоянии а не на всем сервере. Пикапы создаются на стороне сервера на текущий момент. Edited November 19, 2016 by PrototypeX Link to comment
Kenix Posted November 19, 2016 Share Posted November 19, 2016 Можешь написать свой стример на клиенте, который бы проверял позицию и если позиция пикапа дальше %ЗНАЧЕНИЕ%, то используешь функцию setElementDimension и отправляешь в какое то особое измерение, а если дистанция меньше, то в текущее измерение, в котором находится игрок. Link to comment
PrototypeX Posted November 19, 2016 Author Share Posted November 19, 2016 2 hours ago, Kenix said: Можешь написать свой стример на клиенте, который бы проверял позицию и если позиция пикапа дальше %ЗНАЧЕНИЕ%, то используешь функцию setElementDimension и отправляешь в какое то особое измерение, а если дистанция меньше, то в текущее измерение, в котором находится игрок. Интересная мысль, спасибо за подсказку. Попробую реализовать! Link to comment
TheNormalnij Posted November 19, 2016 Share Posted November 19, 2016 Скорее всего ты используешь там функцию getElementsByType, в ней есть параметр, позволяющий обрабатывать только те элементы, которые стримятся. Link to comment
PrototypeX Posted November 20, 2016 Author Share Posted November 20, 2016 15 hours ago, TheNormalnij said: Скорее всего ты используешь там функцию getElementsByType, в ней есть параметр, позволяющий обрабатывать только те элементы, которые стримятся. Да, это помогло на клиентской стороне для других ресурсов. Но с домами обнаружил следующее: Убрал пикапы выходов из домов и понял, что лагов нет. Но как только я начинаю создавать обратно эти пикапы, опять начинаются лаги. В качестве эксперемента убрал пикапы выходов и создал циклом помимо домов, ещё около 5-6 тыс. пикапов в math.random(0, 2000) координатах по всей карте. Лаги снова появились, видимо есть какой-то серверный лимит или стример подлагивает я не понимаю!( Вот фрагмент подгрузки домов из строки с веб сервера, при включении ресурса: function reLoadHouses(responseData, errno) if errno == 0 then local JSonBody = fromJSON(responseData) if tostring(JSonBody["status"]) == "ok" then local houses = JSonBody["houses"] for i,_ in pairs(houses) do local houseInfo = houses[i] local houseID = tonumber(houseInfo["id"]) if tonumber(houseInfo["own"]) == 0 then house[houseID] = createPickup(houseInfo["x"], houseInfo["y"], houseInfo["z"], 3, 1273, 0) else house[houseID] = createPickup(houseInfo["x"], houseInfo["y"], houseInfo["z"], 3, 1272, 0) end houseINT = tonumber(houseInfo["int"]) houseExit[houseID] = createPickup(intererios[houseINT][2], intererios[houseINT][3], intererios[houseINT][4], 3, 1318, 0) setElementData(houseExit[houseID], "house.id", houseID) setElementData(houseExit[houseID], "house.type", "exit") setElementInterior(houseExit[houseID], intererios[tonumber(houseInfo["int"])][1]) setElementDimension(houseExit[houseID], tonumber(houseInfo["id"])) setElementData(house[houseID], "house.id", tonumber(houseInfo["id"])) setElementData(house[houseID], "house.type", tostring(houseInfo["type"])) setElementData(house[houseID], "house.int", tonumber(houseInfo["int"])) setElementData(house[houseID], "house.x", tonumber(houseInfo["x"])) setElementData(house[houseID], "house.y", tonumber(houseInfo["y"])) setElementData(house[houseID], "house.z", tonumber(houseInfo["z"])) setElementData(house[houseID], "house.own", tonumber(houseInfo["own"])) setElementData(house[houseID], "house.ownlog", tostring(houseInfo["ownlog"])) setElementData(house[houseID], "house.park", tonumber(houseInfo["park"])) setElementData(house[houseID], "house.cost", tonumber(houseInfo["cost"])) setElementData(house[houseID], "house.key", tostring(houseInfo["key"])) end end end end Link to comment
PrototypeX Posted November 21, 2016 Author Share Posted November 21, 2016 Вопрос решён, можно закрывать. Проблема была в том, что надо было всего лишь перезайти после перезапуска ресурса. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now