All streams
Search
Write a publication
Pull to refresh

Comments 7

Что за ecs-фреймворк использовался? Ну и не обязательно перекладывать managed-арреи в native-арреи, можно через ансейф сказать, что вот этот кусок managed-аррея является native-арреем на основе кода из вот этого репа: https://github.com/stella3d/SharedArray

ECS-фреймворк использовал leoecs :)

Про SharedArray не знал, спасибо!

Если использовалась "классика", то не сильно поможет, для "лайта" были готовые пакеты для поддержки джобов.

А когда-то этот самый Dyna Blaster работал на 386SX в одном потоке на двух (ЕМНИП, если вообще не на одном) мегах оперативки, пусть и не так быстро. Есть ещё куда стремиться :)

Ну и частоты процессора / памяти были порядка десятков мГц. а сейчас - на пару порядков выше

В данном случае для обработки столкновений с уровнем можно использовать двумерный массив, а движущиеся объекты сортировать по (x, y) и находить потенциальные пересечения практически одним проходом (алгоритм sweep and prune). Если я правильно понимаю, то столкновения можно проверять только для пересечения персонажа с врагами и бонусами, и расставлять флаг взрыва на сетке чтобы убивать всех наступивших на этот флаг.

Чтобы не быть голословным пример из моей игры

Красные квадраты - обозначают твердые части уровня, в игре это просто массив булевых значений. Столкновение проверяется через обращение к элементу массива (в зависимости от размера объекта может быть и больше обращений, например для босса - 8), если значение true - значит есть столкновение и нужно рассчитать импульс для выталкивания. Выталкивание считается исходя из того, что границы элементов сетки всегда целые числа, поэтому можно просто отбрасывать целую часть AABB и получить смещение. (или 1 - смещение для левой границы).

PS: красные каракули внизу - это эффекты.

Sign up to leave a comment.

Articles