Ищу информацию по архитектуре игр серии Worms

81
19 мая 2021, 21:20

Меня интересует, как внутри организованы игры серии Worms.

Для упрощения, я рассматриваю Worms World Party и Worms Armageddon. Найти сакральные коды, чтобы хотя бы одним глазком посмотреть на них, мне не удалось.

Опытным путем я разобрался с тем, как реализована механика коллизий и взрывов, навигация червя по растровому ландшафту и даже планирование действий AI системой. Но есть и то, над чем я очень плотно думаю уже довольно долго.

А именно: как объекты взаимодействуют между собой?

Ведь типов объектов довольно много, они разные, но в тоже время и очень похожи. Например, на все действует баллистика (кроме пуль). Черви, гранаты, мины - ведут себя одинаково при воздействии на них импульса. В то же время, мины взрываются при контакте с червями, и только при контакте с ними. Ящики при контакте с червями что-то им дают, и так далее.

Все эти взаимодействия происходят постоянно.

Я попытался построить такое взаимодействие при помощи паттерна Entity-Component-System, хотя и сильно сомневаюсь, что в 2001 году такое использовали. Даже элементарная система баллистики превратилась в лапшу, которую не получается упростить. Постоянно возникают неудобные моменты при попытке разделить сущности на компоненты, а системы на подсистемы.

В теории это конечно хорошо, когда объект представлен набором компонентов, которыми можно управлять прямо в рантайме. Проблема в том, что при использовании ECS (вместо ООП) зависимости и логика никуда не исчезают, а только размалываются на более мелкие части, которые расплываются во все стороны и перепутываются.

Безусловно, если ECS уже реализована, то это очень удобно для дизайнера, который может взять компоненты A, B и C, и сделать собираемый ящик, гранату с запалом или взрывающуюся бочку с напалмом. Но программировать это невероятно тяжело, потому что приходится мыслить совсем другими категориями.

Затем я попытался построить взаимодействие между объектами при помощи различных ООП подходов. Проблемы тоже были.

В общем, я очень хочу понять, как все это делается правильно.

READ ALSO
Подмена маски номера телефона в зависимости от вводимой цифры

Подмена маски номера телефона в зависимости от вводимой цифры

Всем приветВообщем задачка нужно сделать маску как на https://www

112
overflow: hidden !important

overflow: hidden !important

На дисплеях с большим расширением я скрываю скролл по горизонтали

130