Методы для сокращения сложности в игровом [закрытом] программировании

7
задан Jake Woods 27 January 2010 в 07:41
поделиться

1 ответ

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

Я пытаюсь сохранить соединения к минимум и уменьшить муфту Многие из этих систем должны говорить в так или иначе, что не Требуется удерживание всей базы кода в вашей голове за один раз.

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

  • Как объекты взаимодействуют друг с другом?
  • Где должен быть код, который обрабатывает определенные подсистемы. Go?
  • Сколько моей кодовой базы я должен подумать одновременно?
  • Как я могу уменьшить сцепление между игровыми организациями?

Ничего из этого не имеет отношения к играм, но это проблема, что Вы часто возникают с играми, потому что существует так много разрозненных подсистем, которые мы еще не разработали стандартные подходы к. Если вы принимаете Web Development, то существует просто небольшое количество установленных парадигм: «один файл шаблона / кода на URI» чего-то вроде PHP, или, возможно, «Модель / вид шаблона / контроллера / контроллера» ROR, Django, плюс пара других. Но для игр все катится своим собственным.

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

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

Отличительные игровые состояния могут быть немного сложными, но они на самом деле не так важны, как люди, предполагающие, что они Отказ Пауза может быть закодирована как логический, который, когда набор, просто отключает обновления AI / PhysiciCs. Меню могут быть закодированы как простые накладки GUI. Таким образом, ваше «государство меню» просто становится случай приостановки игры и показывает меню, а также отталкивая игру, когда меню закрывается - не требуется явное управление состоянием.

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

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

9
ответ дан 7 December 2019 в 03:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: