Добавление новых типов игр без перекомпиляции программы? (C ++) - PullRequest
1 голос
/ 11 февраля 2011

У меня есть игра, в которой есть разные типы игр, например, Time Trial, Infinite Game и т. Д.

Каждый тип игры имеет разные правила синхронизации и, возможно, правила столкновения.Очевидно, что в Time Trial игра заканчивается, когда заканчивается время.

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

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

Как можно поступить так?Я предполагаю, что это с использованием libs или dll или чего-то еще (я очень мало знаю об этом, поэтому я могу быть совершенно не прав).

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

Заранее спасибо.

1 Ответ

5 голосов
/ 11 февраля 2011

Использование встроенной библиотеки DLL для расширения игры - не очень хорошая идея, особенно если код не предназначен для этого с нуля.

Лучше всего использовать некоторый язык сценариев, например LUA или Python , поэтому игровые режимы можно добавлять без написания и компиляции кода C ++. Они довольно просты в реализации (особенно если вы используете некоторую библиотеку связывания / оболочки), но требуют от вас разработки API сценариев, который может быть нетривиальной задачей (в зависимости от того, насколько вы хотите, чтобы игра была модифицируемой). Сейчас это довольно стандартный подход в игровой индустрии - в наши дни большинство коммерческих игр имеют некоторую поддержку сценариев.

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

...