Ответ: Метод попадания пуль
Народ, без секторных реализаций (у автора массив, он может выступать в роли хотя бы стандартного сравнения боунти бокса отрезка и объектов попадания, и то, это уже накладно.
При пулемёте, со скоростью стрельбы в 15 патронов в секунду. Если вокруг 10 объектов. Ладно один стреляет, а если двое - то уже "уопа".
Это получается на каждую пулю, будет просчёт, при этом жизнь пули примерно 50мс (например), то количество просчётов просто нарастает с каждым выстрелом.
При фиксированном цикле в 19мс (60ups), будет 60 обновлений, при этом жизнь пули примерно 3 цикла. Получается в итоге (15*1)*10*3=450, вычислений в секунду, от одного пулемётчика. А что если их 32, и они все стреляют в один момент? (15*32)*32*3=46080 вычислений в секунду! Этож полнейшая уопа.
Поэтому обязательные оптимизации в первую очередь разбиение глобального списка по секторам. (это не только к пулям относится).
Далее другие оптимизации, сокращения списков, для индор, это порталы.
Также для больших пространств, и большого количества объектов, нужно кластеровать сектора..
Короче говоря, пока у вас бегает кое как 10 мобов, и стрельба медленная, но как только что-то увеличивается, по геометрической прогрессии вырастает нагрузка вычислений.
Логика никогда не должна утеснять рендер, даже на слабых параметрах компьютера (это же не симулятор чястиц галактик с их звёздами и планетами, это простая игра).
Тем более, где сейчас встретишь игру, в которой требования к железу, будут выше на процессор, или ваш процессор вас "подведёт?" (в разумных ситуациях), нету такого.
Оптимизации нужны, но согласен, автор ещё не совсем готов к ним..
|