здравствуйте! пишу игрушку-стрелялку с видом сверху. очень интересует ваш опыт.
при инициализации "раунда" в классе
Game (создается новый экземпляр при каждом новом раунде) заполняется массив
obj со ссылками на собственно человечков, снаряды и т.д. то есть перед началом раунда имеется массив:

Код AS3:
obj[0] = [ object Guy ];
obj[1] = [ object Guy ];
и т.д.
также есть вспомогательный массив
free_obj, который хранит в себе булевы значения
true/false, длина такая же, как и у
obj. если
free_obj[ n ] == false, этот объект опрашивается. если
true, объекта как бы уже нет (погиб например), и опрос не производится.
функция
ongoing класса
Game вызывается через
ENTER_FRAME 36 раз в секунду и вызывает соответствующую функцию
main каждого человечка/снаряда, которой передаются нажатия клавиш (если человечек - главный герой, то есть управляемый игроком).
в ней изменяются координаты соответственно модели поведения и производится расчет пересечений/столкновений с другими объектами. то есть если у нас 10 объектов, опрос будет выглядеть так: 1 объект опрашивает 2,3,4...10й, потом второй объект опросит 1,3,4...10й и так далее.
расчет столкновений реализован так - если расстояние между двумя объектами больше определенного значения (как правило, двойной диаметр опрашиваемого плюс скорость по модулю), сравниваются значения координат/ширины/высоты и отправляется ответ от функции - было столкновение, или не было. то есть если первый объект в одном конце экрана, а второй в другом, они друг друга опрашивать не будут.
раз в 4-5 секунд производится оптимизация массива, например, если у нас было 4 объекта-человечка, которые постоянно стреляют, то при генерации нового снаряда само собой увеличивается длина массива. потом (после взрыва снарядов) эти элементы уже не нужны, потому что указывают на
null, и массив перестраивается - остаются только не-
null-значения.
производительность этого движка меня как-то не устраивает.
очень прошу подсказать, что я делаю не так, потому что я почти уверен, что эти вещи можно как-то оптимизировать. заранее спасибо за ответы.