Я уже сделал несколько простых игр: введите уровень, встаньте в конец, продолжите к следующему уровню.
Но я все еще задаюсь вопросом, как "настоящие" разработчики игр создают игры с историей.
Вот несколько вещей, что имеет игра истории (и где я задаюсь вопросом о том, как они делают ее):
Последние точки являются немного три раза тем же.
Но, я не думаю, что у них есть сохранять-файл с большим количеством булевских переменных и целых чисел для содержания вещей как:
Когда я говорю об играх истории, я думаю к:
И это - несколько примеров level-in-level-out игр:
Спасибо
Обычно эти игры используют набор флагов для управления поведением определенных персонажей и элементов декораций. Это очень похоже (часто прямо эквивалентно) на конечный автомат, который является немного более общим и мощным подходом к проблеме.
Важная часть - это проектирование не только состояния, но и переходы, чтобы их было как можно проще подключить.
Я никогда не работал над чем-либо подобным, но я предполагаю, что общий подход заключается в загрузке / сохранении / запросе структуры "GameState", которая содержит всю необходимую информацию для игры. выполнить соответствующие действия.
например.
if(GameState.Player.Karma < 0 && GameState.NPCs.BillyTheInnocentLamb.KilledByPlayer)
{
GameState.NPCs.FredTheShephard.HatesPlayer == true;
}
Теперь сделайте это миллион раз, и вы получите РПГ.
Если вам удастся взглянуть на Oblivion (фантастическая игра!), Вы можете попробовать использовать их Construction Set, который позволяет вам полностью персонализировать игру, создавая дополнительные квесты на картах и т. Д.
Используя его, вы увидите, что механизм, по сути, совпадает с тем, что говорили другие: например, у вас есть несколько предложений, которые NPC может сказать, и он будет произносить одно или другое в зависимости от определенных условий. Например, добры вы или злые, насколько хорошо вы умеете убеждать его в чем-то или насколько хорошо вы умеете подкупать его, конкретные вещи, которые у вас есть / которых нет, но даже такие вещи, как время дня!
Как видите, любую из этих вещей можно легко выразить с помощью значения (например, хорошее / плохое может иметь значение от 0 до 100, то же самое для вашего навыка подкупа и т. Д.), И тогда это просто a вопрос наличия большого количества «если» :)
Я думаю, вы найдете он варьируется от жанра к жанру, но во время игры он, вероятно, просто хранится в структуре данных в памяти, а при сохранении он сохраняется в файле сохранения (просто посмотрите на размер некоторых файлов сохранения для различных игр, я видел файлы сохранения размером в несколько МБ ).
"Но я не думаю, что у них есть файл сохранения с множеством логических значений и целые числа для хранения вещей "
Я думаю, что да. :)
Иногда это может быть формальная структура: например, это может быть список именованных счетчиков и флагов, которые могут быть запрошены из языка сценариев игры и которые могут напрямую соответствовать записям в проектном документе. Игра может увеличивать счетчики и переворачивать флаги в ответ на внутриигровые события и запрашивать эти флаги и счетчики при принятии решения, какие действия выполнять, и все это можно легко сохранить. в компактном формате.