Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Покритикуйте структуру игровых взаимодействий  [new]
amadeus
Member

Откуда:
Сообщений: 15
Оцените структуру взаимодействий в простой игре, покритикуйте по необходимости. Допустим, 2D, вид сверху, персонаж может бегать и стрелять пульками в других персонажей. Есть стены. Структура классов:

Игра
    Менеджер объектов
        Объекты
    ...


Это, конечно, не вся структура, в данный момент интересует вопрос перемещений и выстрелов. Поле "Объекты" хранит в себе все игровые объекты: персонажи, стены и снаряды (пульки). Поле "Менеджер объектов" отвечает за работу с объектами и подтверждение действий от них; каждый объект имеет в себе ссылку на этот самый менеджер.

Движение производится следующим образом:

0. Объект выполняет все действия, не связанные с остальным миром. Например, рассчитывает анимацию.
1. Объект вычисляет позицию, в которой должен оказаться.
2. Объект делает запрос на перемещение к Менеджеру с указанием позиции.
3. Менеджер перебирает все вложенные объекты и проверяет запрашивающий Объект на столкновение с ними:
    3.1. Если Объект окажется внутри другого объекта, то Менеджер корректирует его позицию (подойти вплотную к препятствию, подвинуться в сторону обхода препятствия и т.д.).
    3.2. Если Объект столкнется со снарядом, то Менеджер возвращает разрешение на движение вперед:
        3.2.1. Менеджер уничтожает снаряд, с которым столкнулся Объект.
        3.2.2. Менеджер вызывает метод "Повредить" у Объекта.


Здесь, также, вопрос, стоит ли переносить метод расчета позиции объекта в Менеджер или оставить это действие в самом Объекте?

Выстрел производится следующим образом:

0. Объект выполняет все действия, не связанные с остальным миром. Например, проверяет возможность выстрела.
1. Объект делает запрос на выстрел к Менеджеру с указанием параметров выстрела (например, тип снаряда).
2. Менеджер создает Снаряд в позиции Объекта и устанавливает ему все необходимые параметры.
3. Снаряд живет своей жизнью.


Насколько жизнеспособно? Что можно скорректировать и как, вообще, все это принято делать в геймдеве?
6 дек 18, 15:54    [21755989]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте структуру игровых взаимодействий  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1944
Есть куча специализированных сайтов по геймдеву. Вопросы архитектуры лучше решать там. Там можно найти кучу полезной инфы
6 дек 18, 16:52    [21756110]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте структуру игровых взаимодействий  [new]
Dimonka
Member

Откуда:
Сообщений: 1125
amadeus,

Пиши код, тогда будет, что обсудить в разделе Delphi. А с такими абстракциями тебе в более общие разделы форума.
6 дек 18, 16:56    [21756119]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте структуру игровых взаимодействий  [new]
amadeus
Member

Откуда:
Сообщений: 15
Возможно, написал не там, но если есть, что сказать по теме, буду рад.
6 дек 18, 17:11    [21756134]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте структуру игровых взаимодействий  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 197
amadeus
Возможно, написал не там, но если есть, что сказать по теме, буду рад.

По теме: посмотри, как устроены современные игровые движки. В исходники не лезть, просто изучить прогиаминую модель игрового мира.
Например, мой сын, когда был мелким школьником, использовал Love2D, там все понятно, придумано и продумано. И доступно: он, например, кроме игрушек, наоборот, на базе этого игрового движка умудрялся создавать простые десктоп-программы, типа пэинта или простой базы данных.

Я о том, что глупо изобретать колесо, и изучив существующие наработки.
6 дек 18, 17:29    [21756156]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить