Jump to content

Пикапы вызывают проседания FPS


Recommended Posts

Есть вопрос, почему то, из-за большого кол-ва пикапов, начинает проседать фпс у игроков.

Допустим на сервере 2460 домов, умножаем на 2 (пикап входа и пикап выхода для каждого дома)

Дома работают на Мирах (Dimensions), т.е. каждый пикап выхода находится в уникальном мире, из которого один выход - на позицию пикапа входа.

 

Итого 4920 пикапов. Наблюдается проседание фпс, после отключения ресурса, проседаний не наблюдается.

С чем связано это? + небольшой сабж: для каждого пикапа на клиенте есть distantion + getElementData + isElementOnScreen (выводит инфу о доме, aka 3D текст).

Но при замене пикапа на маркер, всё гуд. Пикапы всё таки красивее (домики), посоветуйте что нибудь, как с этим бороться, типо прорисовывать пикапы на ближайшем расстоянии а не на всем сервере. Пикапы создаются на стороне сервера на текущий момент.

Edited by PrototypeX
Link to comment

Можешь написать свой стример на клиенте, который бы проверял позицию и если позиция пикапа дальше %ЗНАЧЕНИЕ%, то используешь функцию setElementDimension и отправляешь в какое то особое измерение, а если дистанция меньше, то в текущее измерение, в котором находится игрок.

Link to comment
2 hours ago, Kenix said:

Можешь написать свой стример на клиенте, который бы проверял позицию и если позиция пикапа дальше %ЗНАЧЕНИЕ%, то используешь функцию setElementDimension и отправляешь в какое то особое измерение, а если дистанция меньше, то в текущее измерение, в котором находится игрок.

Интересная мысль, спасибо за подсказку. Попробую реализовать!

Link to comment
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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...