Дизайн игр и архитектура для текстовых приключений

Я пытаюсь создать приключенческую игру для школьной школы. Я немного застрял в создании карты мира и комнат.

Должны ли описания помещений быть частью исходного кода или должны быть отделены? Я подумывал о размещении всех таких описаний и свойств комнаты в базе данных MySQL, а затем иметь код для организации логики каждой комнаты; помещая описание каждой комнаты в исходный код, кажется немного неопрятным.

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

Любые комментарии будут оценены.

8 ответов

Нет, не указывайте описание уровня/комнаты внутри кода, это не так динамично.

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


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


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

Во-вторых, хотя я бы просто поставил под вопрос использование MySQL. Если вы делаете игру с настройками dos, которая должна быть установлена ​​в системах людей, вы не хотите, чтобы pre-req был "Install MySQL", хе-хе. Там есть небольшая программа, написанная на C, которая бесплатна для всех, чтобы использовать вызываемый SQLite, который лучше всего соответствовал бы вашим потребностям. Если, с другой стороны, сеть является средой для выпуска этой текстовой игры, то есть у нее:)


Вы можете просто использовать такую ​​систему, как ADRIFT, тогда все, о чем вам нужно беспокоиться, - это описания и логика.


Я предлагаю использовать двигатели, у которых уже есть яркое сообщество вокруг них. Таким образом, ваш исходный код - только это; исходный код игры. Я бы пошел с TADS 3 или Сообщить 7


Если описания комнат являются частью исходного кода или должны быть выделенным?

Разделение.

Попробуйте язык пролога.

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

Вы можете увидеть примеры текстовых приключений Prolog в простом поиске Google.


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


Я бы отделил описания от кода, имея объект Room, которому принадлежит объект Description, который вызывает "базу данных" через некоторый Facade, чтобы вы могли использовать файл или базу данных или что угодно. Это также в конечном итоге позволит вам добавить некоторые скрипты в саму комнату, например, иметь объекты в вашем описании, которые имеют поведение.

licensed under cc by-sa 3.0 with attribution.