LINUX.ORG.RU

Введение в разработку игр


1

1

Игровой процесс

Большая часть игр работают по принципу конечного автомата управляемого событиями. Примеры алгоритмов работы игры:

Инициализация сцены Игровой движок передает скрипт движку запрос о получении сцены. Скрипт движок загружает параметры сцены и передает игровому движку идентификатор ресурсов сцены. Игровой движок так же загружает параметры сцены и загружает необходимые для сцены ресурсы. Которые в свою очередь подгружают необходимые для воспроизведения сцены ресурсы в память.

Шаг конечного автомата Игровой движок получает событие от игрока и передает эти данные скрипт движку. Скрипт движок обрабатывает эти данные и запрашивает изменения у физического движка. Физический движок сообщает изменения сцены скрипт движку, который обновляет координаты объектов и передает их игровому движку. Игровой движок в свою очередь обрисовывает сцену с помощью графического движка, воспроизводит фоновую музыку с помощью аудио движка и при необходимости воспроизводит звуки с помощью звукового движка.

Хотелось бы услышать ваши комментарии...

Материал взят из: http://linpax.org/article/view/14



Последнее исправление: zcasper (всего исправлений: 1)

Ответ на: комментарий от BambarbiyaKirgudu

а, прошу прощения, по ссылке короткие разъяснения присутствуют

BambarbiyaKirgudu
()

Инициализация сцены Игровой движок передает скрипт движку запрос о получении сцены.

Скорее менеджер сцен передает сей запрос, но по факту он тоже часть движка, так что не суть важно, но раз уж дальше идет разделение на физ-движок, звук-движок и т.п. то логично и это разделить.

Шаг конечного автомата Игровой движок получает событие от игрока и передает эти данные скрипт движку.

То же, в принципе все верно, но в деталях за это отвечает так скажем отдельный «движок» типа той же OIS, собственно является модулем «глобального» движка.

Хотелось бы услышать ваши комментарии...

А что тут комментировать, отличная шпаргалка, в десяток строк запихали информацию объемов нескольких толстых книжек :] Только ясна она будет лишь тем, кто и так это знает на опыте, что и как делается.

makeB
()

Аудио-движок и звуковой движок - разные вещи, хаха. А вообще, сумбурно очень и перегружено, притом что речь идёт об очевидных вещах.

unC0Rr ★★★★★
()
Последнее исправление: unC0Rr (всего исправлений: 1)

Физический движок сообщает изменения сцены скрипт движку, который обновляет координаты объектов

Ересь. Физический движок интегрирует уравнения движения сам, и с помощью колбэков может дёргать скриптовый когда нужно.

dmfd
()
Ответ на: комментарий от makeB

Это цикл статей, в дальнейшем всё будет более популярно и красиво с примерами

zcasper
() автор топика
Ответ на: комментарий от zcasper

Что, разницу между

физический движок сообщает изменения сцены скрипт движку, который обновляет координаты

и

физический движок сам обновляет координаты, дёргая коллбэки при наступлении заданных событий

совсем не видите?

dmfd
()
Ответ на: комментарий от dmfd

Я просто думаю ещё, о многопользовательском режиме.

В том случае карта генерится на сервере и у клиентов рационально бы иметь кеш версию карты.

В таком случае я думаю рационально принимать от скрипт движка необходимые изменения и вносить их в карту сервера и клиентов.

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

Поправьте если что не так понял, поправим статью :)

zcasper
() автор топика
Ответ на: комментарий от unC0Rr

unCORr

Вообще удобно вынести фоновую музыку отдельно, от звуков. Не смотря на схожесть

zcasper
() автор топика
Ответ на: комментарий от zcasper

Я просто думаю ещё, о многопользовательском режиме.

ЕМНИП, там всё отличие в том, что весь инпут от игрока дополнительно пересылается на сервер, где всё считается параллельно с клиентом. Если есть какие-то расхождения, состояние клиента подгоняется под состояние сервера. В остальном различий нет.

А то, что выше написано, во-первых создаёт жуткий боттлнек: через скрипты на медленном скриптовом языке должно проходить состояние всех объектов сцены. Последствия для производительности будут печальными.

Во-вторых, это неудобно: зачем в скриптах делать то, что умеет физический движок.

dmfd
()

Обновленная версия алгоритмов (с учётом комментариев)

Инициализация сцены Игровой движок передает скрипт движку запрос о получении сцены. Скрипт движок сообщает игровому движку идентификатор сцены и её ресурсов. После чего игровой движок наполняет менеджер ресурсов данными сцены.

Шаг конечного автомата Игровой движок получает событие от игрока и передает эти данные скрипт движку. Скрипт движок с помощью физического движка обновляет сцену и при необходимости синхронизируется с сервером. Игровой движок обрисовывает изменения сцены с помощью графического движка. Воспроизводит фоновую музыку с помощью аудио движка. При необходимости воспроизводит звуки с помощью звукового движка.

zcasper
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.