Разработка игр: Как вы создаете сюжетную игру? - PullRequest
8 голосов
/ 08 июня 2010

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

Вот несколько вещей, которые есть в сюжетной игре (и где мне интересно, как они это делают):

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

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

  • Игрок сделал в первый раз ....
  • Игрок входит в десятый раз, когда локация
  • Игрок говорил с ### th раз этому человеку
  • и т.д.

Когда я говорю о сюжетных играх, я думаю:

  • Легенда о Zelda (все игры серии)
  • Okami

И вот несколько примеров игр уровня в уровне:

  • Mario
  • Braid
  • Физика мелков

Спасибо

Ответы [ 5 ]

5 голосов
/ 08 июня 2010

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

  • ФСМ отслеживает «прогресс» конкретного квеста - какие переключатели выбрасываются, какие разговоры проводятся и т. Д.
  • Каждый NPC имеет FSM для отслеживания «информационного состояния этого NPC - каждое состояние соответствует определенной фазе в пределах арки NPC в игре, обычно заканчивающейся в состоянии случайной кавычки.
  • Сохраненная игра может, например, отслеживать состояние каждого объекта в игровой вселенной.

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

1 голос
/ 08 июня 2010

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

например.

if(GameState.Player.Karma < 0 && GameState.NPCs.BillyTheInnocentLamb.KilledByPlayer)
{
    GameState.NPCs.FredTheShephard.HatesPlayer == true;
}

Теперь сделайте это миллион раз, и вы получите РПГ.

1 голос
/ 08 июня 2010

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

0 голосов
/ 09 июня 2010

"Но я не думаю, что у них есть сохранить файл с большим количеством логических и целые числа для хранения вещей "

Я думаю, что они делают. :)

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

0 голосов
/ 08 июня 2010

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

Используя его, вы увидите, что механизм - это, по сути, то, что сказали другие: например, у вас есть несколько предложений, которые может сказать NPC, и он скажет одно или другое в зависимости от определенных условий. Например, добры вы или злы, насколько вы хороши в том, чтобы убедить его в чем-то, или насколько вы хороши в том, чтобы подкупить его, в частности, у вас есть / нет вещи, но даже такие вещи, как время суток!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...