Шрифт:
Интервал:
Закладка:
Вот еще два примера.
1. В шахматах у короля есть свойство «режима движения» с тремя важными состояниями («свободное движение», «шах», «мат»).
2. В «Монополии» всякую сущность на игровом поле можно рассматривать как динамичное свойство «количества построек» с шестью состояниями (0, 1, 2, 3, 4, отель), а также как свойство «закладной» с двумя состояниями (да, нет).
Нужно ли, чтобы игрок знал о каждом изменении состояния? Не обязательно. Некоторые изменения состояний лучше оставить скрытыми. Но есть и такие, о которых сообщать игроку очень важно. Обязательно следуйте правилу: если два объекта ведут себя одинаково, они должны выглядеть одинаково. Если они ведут себя по-разному, выглядеть они должны тоже по-разному.
Объекты в видеоиграх, особенно те, которые представляют собой персонажей с развитым искусственным интеллектом, имеют столько свойств и состояний, что геймдизайнер может легко в них запутаться. Будет полезным составить блок-схему состояний для каждого свойства, чтобы вы могли лучше понять, какие состояния связаны между собой и что является катализатором их изменений. С точки зрения программирования состояние каждого свойства может быть представлено в виде «механизма состояний», это поможет держать под контролем столь сложные системы и в дальнейшем облегчит процесс исправления ошибок. Рис. 12.12 – это простая диаграмма для свойства «движения» привидения в Pac Man.
Круг, обозначенный как «в клетке», – это изначальное состояние привидения (двойной круг часто используется для отображения стартовой позиции). Каждая стрелка показывает возможные изменения состояния вместе с событиями, которые провоцируют эти изменения. Диаграммы вроде этой очень полезны, когда нужно описать сложное поведение в игре. Они заставляют вас обдумать абсолютно все, что может произойти с объектом и что провоцирует эти события. Перенося эти изменения состояний в компьютерный код, вы автоматически запрещаете любые переходы между состояниями, которые противоречат ей (например, «В клетке» → «Синий»), что помогает избавиться от сбивающих с толку ошибок. Эти схемы могут быть довольно сложными и иногда иерархичными. Например, вполне возможно, что в алгоритме настоящего Пак-Мана есть несколько субсостояний «Преследовать Пак-Мана», такие как «Найти Пак-Мана», «На хвосте у Пак-Мана», «Двигаться через тоннель» и т. д.
Вы сами должны решать, какими будут свойства и состояния каждого объекта. Часто одни и те же вещи можно реализовать несколькими способами. Например, в покере руки игрока можно определить как зону для игрового пространства, в которой находятся пять объектов в виде карт. А можно назвать объектом сами руки игрока, а карты – пятью их свойствами. Как и в случае со всеми остальными аспектами геймдизайна, «правильным» способом мышления здесь будет тот, который больше всего подходит в данный момент конкретно вам.
Игры, заставляющие держать в голове слишком много состояний (слишком много игровых фигур, слишком много свойств у каждого персонажа), могут запутать игроков. В главе 13 мы рассмотрим различные техники оптимизации количества состояний, с которыми сталкивается игрок. Если вы представите свою игру как набор свойств с изменяющимися состояниями, вы откроете для себя много интересного, в этом вам поможет призма 28.
Призма 28: Призма механизма состояний
Чтобы воспользоваться этой призмой, подумайте, какая информация изменяется по ходу вашей игры. Спросите себя:
• Какие объекты есть в моей игре?
• Какие у этих объектов свойства?
• Какие состояния могут быть у этих свойств?
• Что вызывает изменение состояния для каждого из свойств?
Играя, мы постоянно принимаем решения. Эти решения основываются на информации. Решая, какими в вашей игре будут различные свойства и как будут изменяться их состояния, вы определяете суть ваших игровых механик.
Секреты
Очень важным решением будет вопрос о доступности информации. Во многих настольных играх вся информация открыта: иными словами, все игроки располагают одинаковым количеством информации. В шахматах оба игрока могут видеть все фигуры на доске и все захваченные фигуры, нет никаких секретов, кроме того, о чем думает другой игрок. В карточных играх бо́льшая часть игры проходит в скрытом приватном состоянии. Вы знаете свои карты, но карты оппонента являются для вас тайной. Суть игры в покер заключается в основном именно в необходимости разгадать карты оппонента, пытаясь скрыть информацию о том, какие карты у вас на руках. Игра становится абсолютно другой, когда вы варьируете открытую и приватную информацию. В традиционном «draw poker» все состояния приватные – игроки могут только угадывать ваши карты, основываясь на том, сколько вы ставите. В «stud poker» часть состояний открытые, а часть – приватные. Это дает оппонентам больше информации о положении друг друга, что делает игру совершенно иной. Такие настольные игры, как «Морской бой» и Stratego, целиком основываются на попытках угадать состояния приватных свойств оппонента.
В видеоиграх мы сталкиваемся с чем-то новым: состояние, о котором знает только сама игра. Это поднимает вопрос о том, как с точки зрения игровой механики нужно воспринимать виртуальных соперников: как других игроков или просто как часть игры. Эта идея хорошо раскрыта в следующей истории: в 1980 году мой дедушка купил игровую консоль Intelevision, с которой в комплекте продавался картридж Las Vegas Poker and Blackjack. Дедушке игра очень понравилась, но бабушка отказывалась играть. «Компьютер жульничает», – настаивала она. Я сказал ей, что это глупо – это просто компьютер, как он может жульничать? Она объяснила мне: «Он знает все мои карты и все карты, оставшиеся в колоде! Как он может не жульничать?» Мне пришлось признать, что мои объяснения о том, что компьютер «не смотрит на карты», принимая решения о своих дальнейших действиях, звучали неубедительно. Но это показывает, что в игре есть трое, кому известны состояния различных свойств: мой дедушка, знавший состояние своих карт; алгоритм внутреннего оппонента, который «знал» состояние своих карт; и, наконец, главный алгоритм игры, знавший все о картах обоих игроков, о каждой карте в колоде и обо всех остальных аспектах игры.
Значит, с точки зрения открытых/приватных свойств, есть смысл рассматривать виртуального оппонента как отдельную сущность, наравне с игроками. Сама же игра – это тоже отдельная сущность со специальным статусом, которая сама в себя играть не может, но может принимать решения, реализующие гейм-плей. Целия Пирс также указывает на другой вид информации, скрытый от всех указанных выше сущностей: случайно генерируемая информация, например бросок игральных костей. Если вы не верите в предопределенность, можно даже сказать, что этой информации не существовало вовсе до того момента, пока она не была сгенерирована и отображена. И ее в любом случае нельзя определять как приватную.
Все сказанное отлично вписывается в диаграмму Венна, которую я называю «иерархией знающих» и с помощью которой можно визуально представить отношения между открытыми и приватными состояниями.