Советы по разработке игр и архитектуре для текстовых приключений - PullRequest
3 голосов
/ 04 декабря 2010

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

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

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

Любые комментарии приветствуются.

Ответы [ 8 ]

6 голосов
/ 04 декабря 2010

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

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

4 голосов
/ 06 декабря 2010

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

Во-вторых, я бы просто поставил под сомнение использование MySQL.Если вы создаете игру типа DOS, которая должна быть установлена ​​на системах других пользователей, вам не нужно, чтобы предварительным требованием было «Установить MySQL», хе-хе.Существует небольшая программа, написанная на C, которая может свободно использовать SQLite и которая будет лучше отвечать вашим потребностям.Если, с другой стороны, Интернет является средством для выпуска этой текстовой игры, тогда имейте в виду:)

4 голосов
/ 04 декабря 2010

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

2 голосов
/ 07 октября 2012

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

1 голос
/ 14 марта 2014

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

1 голос
/ 04 августа 2011

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

Выделены.

Попробуйте язык Prolog.

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

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

0 голосов
/ 04 августа 2011

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

0 голосов
/ 04 декабря 2010

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

...