Как уже упоминалось, это идеальное приложение для конечного автомата.
По сути, у вас есть своего рода древовидная структура. Каждый лист / узел содержит информацию о текущем состоянии и правила перехода к следующему состоянию. Каждый узел может содержать несколько выходов, в зависимости от того, насколько сложным вам нужен ваш сюжет / поток воспроизведения.
Хороший, очень свободный аналог - книга « Выбери свое приключение» . Каждая страница содержит некоторый текст, описывающий часть истории, и решения, которые игрок может принять. Каждое решение ведет на другую страницу. Некоторые страницы могут ссылаться на ранее посещенные страницы и т. Д.
В старых текстовых приключенческих играх, таких как Zork и Leather Goddesses of Phobos , и в печально известных играх Sierra * Quest ( SpaceQuest с Рэйгером Вилко в роли космического уборщика - один из моих любимых ) использовалась очень простая версия этого типа системы. Каждая комната на карте была состоянием, с выходами, связанными с другими состояниями или комнатами. При получении элемента установите флаг в объекте глобального состояния. Каждая комната будет проверять эти флаги, чтобы определить, какие персонажи или предметы были доступны в каждой комнате.
Таким образом, ваши состояния могут быть реализованы в виде класса или структуры, каждое со свойствами для:
Список активов - список указателей на фоновую графику и все остальное, что вам нужно для отображения комнаты / состояния / уровня.
Условия входа - достижения, которые уже должны быть достигнуты, чтобы перейти на уровень
Выходы - ссылки на каждый возможный «следующий» выход. Север, Юг, Восток и Запад - некоторые примеры этого, но вы также можете включить Дверь1, Телепорт и т. Д. При попытке выйти из комнаты или при определении выхода / двери «открыто» ваша игра может проверить следующее состояние чтобы увидеть, были ли выполнены его условия входа, и изменить способ отображения выхода на экране, или просто не позволить игроку двигаться в этом направлении.
Если вы хотите получить фантазию, вы можете включить другую версию состояния с другими условиями входа, которые бы изменили способ представления комнаты игроку или действия, доступные в этой комнате.
Ваш стартовый экран, смерть / игра поверх экрана и т. Д. Могут быть состояниями внутри системы, аналогично тому, как вы можете перемещаться между экранами меню. Фактически, если у вас есть такая система меню, вы можете использовать ее для этого. Вместо стрелок вверх / вниз и «ввода» для навигации по меню вы будете искать определенные события в игровой зоне, такие как наступление на панель телепортации, уход от правой части экрана и т. Д.
С точки зрения администратора подумайте, можете ли вы получить выгоду от создания инструмента администратора, который позволил бы вам создать конечный автомат. Добавляйте комнаты на карту, создавайте связи между ними, назначайте ресурсы, такие как фоновые изображения и т. Д. Это, вероятно, излишне для вашей первой попытки; слишком легко быть поглощенным созданием инструментов администратора и никогда не заканчивать игру. Помните - вы пишете не промежуточное ПО, а игру.
Надеюсь это поможет.