Comments 8
Отличная статья! Поделитесь, на каком размере чанка в итоге остановились и есть ли какие-то ограничения (количество памяти под чанк, количество акторов и т.п.)?
Спасибо, потрясающая статья. Написано очень просто и понятно даже для людей, тесно незнакомых с движком UE4
Насколько я помню, ещё один минус world compositor - сложности его настройки для работы в сетевой игре
Не смотрел код загрузчика. А там только сфера/круг работает? Логично было бы подгружать то, что актор может увидеть — например только то, что попадает в поле зрения камеры и уменьшить радиус круга. Таким образом, если брать еще алгоритм с пограничными чанками, то это может еще сильней уменьшить нагрузку. Но появится артефакт, если актор остановился, повернулся, то необходимо загружать те чанки, которые не попадали в круг.
Можно пойти дальше и вычислять скорость передвижения актора — чем она больше, тем более «вытянутой» получается область загрузки (что-то наподобие яйца, где в узкой части актор, смотрящий в направлении широкой части). И когда актор замедляется, то яйцо снова превращается в круг и подгружаются необходимые чанки.
Можно пойти дальше и вычислять скорость передвижения актора — чем она больше, тем более «вытянутой» получается область загрузки (что-то наподобие яйца, где в узкой части актор, смотрящий в направлении широкой части). И когда актор замедляется, то яйцо снова превращается в круг и подгружаются необходимые чанки.
Подгрузка того, что игрок может увидеть слишком затратна. Однако вместо этого в UE базового включено отключение рендеринга того, что игрок не видет. На счёт изменения форму загрузки, если честно, не знаю.
Код, который отвечает за то, что и когда грузить мы переписывали в том числе, да, проверка там идет по сфере.
Загрузка по видимости не даст особого эффекта, потому что игрок может часто вращать камерой, либо быстро покидать закрытые участки и выходить на открытую местность. Загрузка + добавление в мир процесс порой довольно долгий и может занимать несколько секунд, так что чанки просто не будут успевать отображаться.
Мы думали про систему с зонами для загрузки, чтобы в итоге отказаться от World composition целиком, но она скорее подойдет для игр с более закрытыми пространствами.
Насчет учета направления, куда движется игрок, я упомянул, что мы это реализовали, но в итоге не использовали. Такой подход есть и в UE5 World Partition, берется вектор направления взгляда и делается скалярное произведение с направлением в сторону чанка. Получается множитель для приоритета, чтобы раньше грузить чанки, к которым игрок движется в данный момент. Это эффективнее, чем вытягивать сферу, потому что не цепляет чанки позади игрока.
Загрузка по видимости не даст особого эффекта, потому что игрок может часто вращать камерой, либо быстро покидать закрытые участки и выходить на открытую местность. Загрузка + добавление в мир процесс порой довольно долгий и может занимать несколько секунд, так что чанки просто не будут успевать отображаться.
Мы думали про систему с зонами для загрузки, чтобы в итоге отказаться от World composition целиком, но она скорее подойдет для игр с более закрытыми пространствами.
Насчет учета направления, куда движется игрок, я упомянул, что мы это реализовали, но в итоге не использовали. Такой подход есть и в UE5 World Partition, берется вектор направления взгляда и делается скалярное произведение с направлением в сторону чанка. Получается множитель для приоритета, чтобы раньше грузить чанки, к которым игрок движется в данный момент. Это эффективнее, чем вытягивать сферу, потому что не цепляет чанки позади игрока.
Sign up to leave a comment.
World Composition для игр с открытым миром — Unreal Engine 4