Sharpnull, спасибо за подсказку.
я попробую применить нечто подобное, но я уверен, что успех обеспечен.
я видел в коде ContraHard Corps нечто подобное, но я не понял принципа работы всего этого.
теперь с пониманием этого секрета мне станет легче реализовывать эту технику.
что я попробую сделать:
1) помещу игроков в первый список, объекты во второй, пули врагов в третий и пули игроков в четвертый.
каждый объект будет проверять только свой список.
2) добавлю в игру 3 стека (обьекты, пули врагов, пули игрока)
3) каждый объект, пока существует, будет добавлять указатель на себя туда и в то же время список будет очищаться каждый кадр. это позволит проверять только активные объекты и игнорировать пустые ячейки и неактивные объекты.
4) проверять хитбоксы с точкой, вместо двух квадратов. будет несложно составить таблицу таких хитбоксов
Добавлено позже:DrMefistO, потому что у меня проверяются 128 ячеек объектов и если ячейка занята идет проверка что за объект и тд.
куча ненужной тягомотины.
я отчетливо помню, как в Contra Hard Corps применялось нечто отличающееся от того, что я привык видеть, а когда столкнулся с проблемой не смог ее решить сам, вот и обратился за помощью к знающим людям.
Добавлено позже:тем более, что лагать вообще ничего не может, ибо я даже id объектов не использую для получения указателя на исполняемый код этого объекта. вместо этого у меня есть этот указатель прямо в памяти самого объекта, а id служит лишь для идентификации объектов между друг другом.
это удобно потому что:
1) процессор не лезет в ром за таблицей и не проводит лишних телодвижений с умножением (смещением бит) и чтением из таблиц
2) процессор тратит минимум циклов на запуск кода объекта
3) всегда можно без всяких switch и условий поменять callback и поведение объекта тут же изменится.
4) всегда можно определить паттерны поведения объектов и присваивать их вне зависимости от id объекта. например: объект преследует игрока. это может быть враг, а может быть броня. неважно, потому что callback у них один и тот же, а вот id разные и от врага мы получим урон, а от брони и так ясно что.