Как можно решить проблему с Fps?
Я тут игру делаю, игра у меня случайно генерируется, и также на одном уровне, и вот даже не знаю как решить проблему с фпс. Я уже сделал, что если за определенный радиус выходит объект, то он исчезает с комнаты, но если к объекту подойти, то он обратно появляется.
Но что можно сделать еще?
Игра на Game Maker: Studio
- 25 декабря 2016, 18:07
- 00
дело в том что Javascript, на котором, как я понял, ты работаешь - достаточно медленный язык. Самым эффективным способом будет просто переписать все инструкции игры непосредственно в машинный код. Тут конечно придется слегка поднапрячься, но если выгорит, это даст небывалую производительность
Эту игру делаю на GMS, а с Javascript проблем с фпс я не наблюдал, и вообще язык хороший советую.
Добавил к посту, что игра на GMS.
1) Shaders. Используй силу GPU вместо CPU, Люк!
2) Sprite/Texture Batching. Один draw call вместо тысячи.
3) Fixed Main Cycle/Loop. Не перерисовываем весь фреймбуфер каждую итерацию игрового цикла, обновляем регионами.
4) Caching + Lazy Evaluation. Повсеместное кэширование, пересчет только по надобности. Особенно для "статичных" объектов.
5) Object/Memory Pool. Меньше выделений памяти.
6) Data-Oriented Design. Размещаем данные компактно и последовательно в памяти, передаем по указателю на "массив", обрабатываем одним вызовом функции с, по возможности, разворачиваемым циклом. Меньше промахов кэша ЦПУ.
7) Spatial Space Partitioning. Особенно, если много объектов и/или дорогая физика (в т.ч. коллизии).
8) Алгоритмы и структуры данных под задачу, а не какие попало.
9) Распараллеливание вычислений на несколько ЦПУ.
10) При нестабильном фпс с резкими проседаниями, размазываем тяжелые вычисления по нескольким фреймам. Как минимум, если эти вычисления касаются визуалки, а не игрологики.
Да, довольно много информации, теперь наверно буду все это переводить на человеческий язык.
Короче я пол заменил на тайлы, теперь вроде, пока-что лагов не наблюдается.
Никогда не используй объекты для недвижимых объектов у которых нет взаимодействий. Только тайлы. Тайлы можно менять на лету, для этого им не обязательно быть объектами.
Спасибо, и я понял, что объекты не хотят просто так валятся на полу, и этим недовольством валятся на полу выдают сильные лаги.