INHELLER wrote:
St.AnGer > Ну да. Теперь тормоза происходят раз в 3 кадра, а не каждый кадр. :D
Я имел в виду скорее... Постараться так сделать, чтобы оно поменьше вызывалось в течении одного кадра... Или "внутри" одного кадра (как удобнее). Всё-таки надо бы понять из-за чего всё это безобразие очень часто вызывается. Хотя как вариант, там ещё могут быть скрыты и какие-нибудь части, которые тоже вызывают интенсивный перебор.
Ну просто не верю, что несколько if else-ов могут так тормозить. Да ещё и с учётом того, что их выполняется не каждый if else.
Хы. Или как вариант Blitz3D реально хрень.
Там всё от количества монстров зависит ведь. У меня нет разбивки на сектора или какой то зависимости от положения игрока - все монстры обновляются каждый кадр. Т.е. если 20 монстров - идёт 20 переборов цикла
for each со всеми этими условиями. Если 100 монстров - соответственно 100 переборов. Ну и к этому прибавляем перебор циклов дверей, декораций, игроков, триггеров, снарядов, лифтов, воды, партиклов... И это получается жесть для слабенького проца. Но, если честно, у меня нэтбук умирает уже на 5 одновременно активных монстрах.
И да, Blitz3d не хрень

он просто уже лет 5-6 как устарел, но такой мне родной, что прям аж не могу
Ну и тут всё таки главную роль играет то, что из меня очень плохой оптимизатор. Изначально у меня на нэтбуке и без монстров на более-менее больших картах всё лагало, потому что каждый квадратик текстуры отрисовывался отдельным квадом и физическим телом. Но это я решил, объединив все квады в один сюрфейс (читай один объект, который отрисовывается за один дип, а не тучу объектов за тучу дипов), и оптимизировав количество физических тел. А вот с монстрами проблема... Понимаю, что решить её как то можно, а как - не знаю

уже всё перепробовал что можно. Если монстры не активны - хоть 50 штук воткни около игрока, всё летает без тормозов. Осталось разбивку уровня на виртуальные сектора попробовать, но там будет другая проблема сразу - монстры в неактивных секторах не будут обновляться, т.е. не будут делать ничего. На это, в принципе, можно закрыть глаза, но блин, в DooM'ах всегда все монстры были активны и это работало.