powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Покритикуйте структуру игровых взаимодействий
5 сообщений из 5, страница 1 из 1
Покритикуйте структуру игровых взаимодействий
    #39743616
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оцените структуру взаимодействий в простой игре, покритикуйте по необходимости. Допустим, 2D, вид сверху, персонаж может бегать и стрелять пульками в других персонажей. Есть стены. Структура классов:

Код: pascal
1.
2.
3.
4.
Игра
    Менеджер объектов
        Объекты
    ...



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

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

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



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

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

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



Насколько жизнеспособно? Что можно скорректировать и как, вообще, все это принято делать в геймдеве?
...
Рейтинг: 0 / 0
Покритикуйте структуру игровых взаимодействий
    #39743700
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть куча специализированных сайтов по геймдеву. Вопросы архитектуры лучше решать там. Там можно найти кучу полезной инфы
...
Рейтинг: 0 / 0
Покритикуйте структуру игровых взаимодействий
    #39743705
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeus,

Пиши код, тогда будет, что обсудить в разделе Delphi. А с такими абстракциями тебе в более общие разделы форума.
...
Рейтинг: 0 / 0
Покритикуйте структуру игровых взаимодействий
    #39743715
amadeus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно, написал не там, но если есть, что сказать по теме, буду рад.
...
Рейтинг: 0 / 0
Покритикуйте структуру игровых взаимодействий
    #39743727
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amadeusВозможно, написал не там, но если есть, что сказать по теме, буду рад.
По теме: посмотри, как устроены современные игровые движки. В исходники не лезть, просто изучить прогиаминую модель игрового мира.
Например, мой сын, когда был мелким школьником, использовал Love2D, там все понятно, придумано и продумано. И доступно: он, например, кроме игрушек, наоборот, на базе этого игрового движка умудрялся создавать простые десктоп-программы, типа пэинта или простой базы данных.

Я о том, что глупо изобретать колесо, и изучив существующие наработки.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Покритикуйте структуру игровых взаимодействий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]