Какие функции принадлежат движку, а какие - игре?

19

Прямо сейчас я внедряю и тестирую новые функции для своего 2D игрового движка, напрямую кодируя их в движок. Одновременно у меня есть игра-витрина с поддержкой сценариев, которая должна вызывать функции движков. Я прикрепляю, например, фиксированное движение плитки к классу Entity в движке, а не пишу это специально для игры. Это определенно нарушает идею общего движка, используемого для более чем одной игры.

Есть ли лучшие практики, чтобы продолжать фокусироваться на правильной реализации в правильных частях (то есть движок против игры)?

Кристиан Ивицевич
источник

Ответы:

25

Ну, есть несколько способов думать об этом. Один из них состоит в том, чтобы перечислить специфические функции, которые должен иметь движок (о чем вы просили здесь.) Однако другой способ - просто начать создавать игры, не слишком заботясь о «движке», и затем найденные вами функции повторно используются между несколькими В играх (в частности, функциях, используемых в каждой игре) вы должны мигрировать из исходного кода для конкретной игры в общую кодовую базу под названием «движок».

Потому что, в конце концов, вам нужна конкретная функция в движке, а не в игре, потому что она используется несколькими играми. Обычно это такие вещи, как команды рисования, контроллеры ввода и сетевой код. Движок 2D-игр будет иметь множество функций 2D-графики, таких как загрузка изображений, иерархия отображения в z-порядке, обработка таблиц спрайтов, анимация движения и т. Д. Во многих играх требуется физическое моделирование, хотя, с другой стороны, многим это не нужно. Между тем, больше «скрытых» вещей, используемых почти в каждой игре, включают таймеры, обмен сообщениями о событиях и даже математические функции, специфичные для разработки игр (например, distanceToTarget ()


Короче:

A) Движок должен иметь функции, общие для большинства игр.

Б) Вы узнаете, какие функции являются общими, создав кучу игр.

jhocking
источник
7
+1 -just start making games without worrying too much about the "engine"
JCM
1
Ну, just start making games without worrying too much about the "engine"это определенно хорошее предложение.
Кристиан Ивичевич
3
Я согласен с двумя приведенными выше комментариями, но замечание «просто создавайте игры, не беспокоясь о движке» было вырвано из контекста и бесполезно без остального: «и затем найденные вами функции повторно используются между несколькими играми (в частности, (функции, используемые в каждой игре), вы должны перейти от исходного кода для конкретной игры в общую кодовую базу, называемую «движок». Короче говоря, сделайте как можно больше игр, чтобы вы знали, что должно происходить под движком, а что - нет. т.
2
Это отличная идея, потому что она также удерживает вас от реализации функций движка, которые вам на самом деле не нужны в ваших играх.
Захари Йейтс
2
+1 за сохранение духа правила трех .
Джошуа Дрейк