Логическая структура компьютерной игры
А. Л. Пажитнов
Компьютерные игры (КИ) заняли прочное место в программном обеспечении ЭВМ. В западных странах это уже целая индустрия. У нас в стране КИ планируются как основной компонент программного обеспечения (ПО) для бытовых компьютеров. В производственной сфере КИ будут использоваться в качестве обучающих тренажеров, а также как одно из средств психологической разгрузки персонала. Важное место займут игры и в обучении (одна из форм компьютерных обучающих программ). В психологии КИ используются в качестве диагностических и тренинговых методик. Сами по себе КИ как предмет использования в других областях человеческой деятельности и как новое явление культуры становятся объектом изучения психологии.
Проанализируем структуру типичной компьютерной игры с точки зрения её внутреннего устройства и функционирования во время игрового взаимодействия. Результат такого анализа, возможно, поможет приблизиться к пониманию законов создания КИ, а также оценивать и классифицировать их.
Понятие игры и игровой деятельности вообще слишком широко, чтобы провести сколько-нибудь содержательный анализ. Поэтому ограничим наше рассмотрение компьютерными играми реального времени на персональной ЭВМ (ПЭВМ) для одного играющего без применения специального оборудования (дополнительных клавиатур, "мышек", "джойстиков" и пр.).
Игра такого рода с точки зрения играющего представляет собой определенную задачу – в ней имеются условия, цель и средства её достижения. Решение задачи – процесс, управляемый играющим в реальном времени по установленным правилам. Течение процесса оценивается по установленному критерию.
Выделим в КИ три функциональные компоненты: игровую среду (ИС), взаимодействие с играющим и оценку игровой ситуации. При очевидной связи и взаимозависимости их можно рассматривать как самостоятельные.
Игровая среда – это совокупность всех объектов и связей в игре и законов их изменения. Другими словами, ИС – это основа, "мир", в котором развивается игровое действие. Так, в шахматах игровой средой будет совокупность, в которую входят: доска, два набора фигур, правила перемещения фигур по доске, а также правила взятия (и превращения) фигур. В популярной КИ "Посадка на Луну" игровой средой будет вектор, описывающий параметры "сажаемого на Луну корабля" (массу, запас топлива, высоту, скорость), а также некоторое уравнение, связывающее эти параметры. Для распространенной КИ "Pacman" ИС – это лабиринт, в котором передвигаются персонажи: один, управляемый играющим, и несколько "врагов", управляемых программой.
Взаимодействие с играющим – это совокупность средств, предоставляемых играющему для изменений игровой среды, т. е. для действий и изменений в ИС, которые происходят, когда играющий нажимает определенные клавиши дисплея. Заметим, что игры реального времени от игр-головоломок отличаются именно этой компонентой: в играх реального Бремени период времени между нажатиями существенно влияет на ход игры.
Оценка игровой ситуации – это соотношения и условия, которые определяют задачу для играющего в данной игре. Сюда включается система очков и штрафов за игровые действия, описание начальной и конечной игровой ситуации.
Из перечисленных компонент важнейшая, безусловно, – это игровая среда. Если она найдена удачно, то, изменяя другие компоненты, можно создать вариант игры с теми или иными свойствами (темпом, сложностью).
После разработки игры на функциональном уровне (когда создана ИС, определены средства взаимодействия с играющим и намечена система оценок) начинается этап разработки компьютерной программы, реализующей данную игру.
Игровая программа состоит, как правило, из двух частей: первая реализует внутреннюю (логическую) структуру КИ, т. е. отображение игры в системе машинных данных и алгоритмов, вторая – отображает процесс игры на экране терминала для играющего. Хотя вторая часть, определяющая форму протекания игры, связана больше с эстетическими и эргономическими критериями и не является, на наш взгляд, основной при создании новой игры, ей в настоящее время придается огромное значение. В зарубежных КИ эксплуатируется довольно небольшое количество идей, реализованных с незначительными модификациями в правилах, но в огромном множестве внешних форм. В смысле программирования изобразительная сторона игры – значительно более трудоемкая часть, нежели логическая. Тем не менее, основу игровой программы составляет её логическая структура.
Подавляющее большинство КИ рассматриваемого нами типа имеет более или менее сходную логическую структуру. Выделим в ней три иерархических уровня (плана) – оперативный, тактический и стратегический. Эти уровни находят, как правило, адекватное представление в структуре компьютерной программы.
Оперативный план – это совокупность действий внутри программы между двумя возможными воздействиями играющего. Это, как правило, передвижение на один шаг всех движущихся персонажей, элементарные изменения игровых ресурсов (времени игры и др.). В оперативный план входит также опрос, было ли воздействие играющего и, если было, соответствующая реакция на него. Все изменения ИС за данный шаг обязательно отображаются на экране терминала.
Этот план наиболее тесно связан с компонентой КИ, которую мы назвали взаимодействием с играющим.
Разработка этого плана – наиболее критическое место (ограничения реального времени чувствуются сильнее всего). Поэтому разработчики стремятся к тому, чтобы совокупность изменений ИС на этом уровне была минимальной. Тогда можно иметь достаточный темп игры и уделить большее внимание изобразительной части.
Тактический план – это совокупность игровых действий, ведущих к достижению какой-либо локальной цели. Это наименее четко выделяемый уровень в структуре КИ. Хотя в некоторых играх он может вообще отсутствовать, для большинства КИ характерна следующая ситуация. Играющий действиями на оперативном уровне достигает в игре некоторого кульминационного положения, в результате чего он получает ощутимый выигрыш (или проигрыш). После этого в ИС происходят значительные изменения и начинается новый "тур". Так, в играх со стрельбой играющий, передвигая "пушку" (или цель), прицеливается, а затем "стреляет" (нажимая клавишу, служащую спусковым крючком), после чего фиксируется попадание (или промах) и появляется новая цель.
Часть программы, реализующая подобный тур, и является тактическим уровнем игры. Тактический план, естественно, включает в себя оперативный план, но имеет и собственную часть. В ней, как правило, более детально оценивается игровая ситуация и более значительно изменяется ИС (соответственно меняется экспозиция на экране). Это придает игре своеобразный ритм. Для игр с переменной сложностью – таких, в которых задача для играющего усложняется по мере роста его совершенствования в игре – сложность очередного тура выбирается именно в тактическом плане.
Тактический план игры лучше всего можно соотнести с компонентой, которую мы назвали оценкой игровой ситуации.
Стратегический план – это совокупность действий по созданию и поддержке ИС. Сюда входит тактический план, а также некоторые собственные действия, а именно: инициализация всех объектов и параметров, участвующих в игре; генерация основной игровой экспозиции; отслеживание критерия окончания игры: фиксация результатов игры.
Поскольку именно на стратегическом уровне определяются объекты и связи игры, то он лучше всего соотносится с компонентой КИ, которую мы назвали игровой средой. Эта часть программы наиболее разнообразна в разных играх, именно в ней проявляется вся изобретательность и оригинальность разработчика.
Исходя из проведенного анализа структуры КИ реального времени можно предложить обобщенную схему программы для реализации таких игр. Воспользуемся нотацией языка Паскаль и наметим состав головной программы КИ рассматриваемого типа. Содержание вызываемых процедур определяется, собственно, конкретными правилами.
BEGIN { Main } Initialize_All; Draw_Poster; IF Help_Needed THEN Write_Help_Text; { +++++ Strategic level ++++++ > REPEAT Define_Players_Level; Initialize_Game; WHILE Not_End_Of_Game DO { ++++ Tactic level +++++ } BEGIN Initialize_MicroGame (Level_Of_Player, Currerrt_Result); WHILE Not_End_Of_MicroGame DO { +++++ Operating level +++++ } BEGIN Step; Ask_Management; Delay(Current_delay); END; { ----- Operating level --- } Change Score; END; {---- Tactic level----} Give_Mark; Save_Result; until Once_More; {--- Strategic level ----} END. { Main}
В процедуре Initialize_All инициализируются все элементы и параметры ИС, не подлежащие изменению в ходе игры. Как правило, такие действия необходимы, так как не все языки программирования позволяют иметь константы или инициализировать переменные определенной структурной сложности.
В процедуре Draw_Poster на экране пишутся название игры, имена авторов и другая справочная информация.
Логическая функция Help_Needed задает играющему вопрос, знаком ли он с правилами игры? Если нет, то процедура Write_Help_Text выдает на экран терминала сведения о том, как пользоваться игрой.
Цикл REPEAT–UNTIL реализует стратегический план игры.
В процедуре Define_Players_Level у играющего уточняется уровень сложности, на котором он хотел бы играть, и устанавливаются соответствующие параметры. В зависимости от них в процедуре Initialize-Game устанавливаются начальные значения для переменных ИС, изменяющихся в ходе игры.
Внутри цикла
WHILE Not_End_of_Game DO BEGIN ... END
реализуется тактический план игры. О нём – ниже.
Стратегический уровень заканчивается вызовами двух процедур: Give_Mark даст дифференцированную оценку проведенной игре; Save_Result служит для запоминания результата игры в таблице рекордов. После окончания цикла логическая функция Оnсe_Моrе спрашивает играющего, хочет ли он сыграть ещё.
Тактический план построен аналогично стратегическому. В начале в процедуре Initialize_Micro_Game генерируется очередная игровая ситуация. (Мы изобразили эту процедуру с параметрами, характеризующими квалификацию играющего и достигнутые результаты с тем, чтобы подчеркнуть, что в принципе сложность очередной тактической задачи может зависеть от этих факторов.)
Далее следует цикл, реализующий оперативный план.
Последняя процедура тактического плана – Change_Score– служит для подведения результатов для очередной локальной ситуации в игре.
Управление циклом тактического плана осуществляется логической функцией Not_End_of_Game, в которой проверяются все условия окончания игры. В некоторых случаях это может быть простая логическая переменная.
Оперативный план – самый внутренний цикл в схеме. Им управляет, как и в случае тактические плана, логическая функция Not_End-of_Micro-Game, которая проверяет условия перехода к следующей игровой ситуации. Чаще – это логическая переменная или проверка какого-то условия.
Процедура Step производит все локальные изменения ИС за один шаг.
Процедура Ask_Management проверяет, было ли в течение данного цикла управляющее воздействие и (если было) внесение соответствующих изменений в ход игры.
Delay – процедура, реализующая задержку для создания приемлемого темпа игры. Она приведена здесь с параметром, чтобы подчеркнуть, что для воссоздания равномерного темпа игры величина задержки может меняться. Чаще всего она изменяется в процедуре Ask_Management, поскольку времена реакции на различные воздействия могут заметно отличаться.
В заключение описания данной схемы заметим, что, она не претендует на оптимальность реализации и полный охват всех возможных структур игр. Однако на логическом уровне большинство КИ реального времени могут быть сведены к подобной схеме.
Подобное рассмотрение структуры КИ дает возможность классифицировать игры и целенаправленно изменять их в процессе разработки, сообразуясь с той или иной потребностью, ради которой пишется игра.
Каждый из рассмотренных планов игры можно соотнести с определенным характером деятельности в игре, так как от играющего требуется тренированность различных психологических качеств.
Так, оперативный план ближе всего к психофизиологическим реакциям (ощущениям и психомоторике) Для успешных действий на оперативном уровне требуются концентрация внимания, быстрота реакций, психомоторная координация.
Тактический план относится к более высоким уровням психической деятельности. Для успешных тактических действий нужны эмоциональная устойчивость, зрительная память, адекватное восприятие и осознание ситуации, умение быстро принимать решение.
Стратегический план относится преимущественно к интеллектуальной деятельности. Здесь играющему необходимы те качества, которые позволяют решать задачи: воображение, логическое и комбинаторное мышление и др.
Поэтому психологическая характеристика игры (а тем самым и класс ее адресатов) может быть определена из того, как распределена нагрузка игры по трем уровням и как оцениваются действия на каждом из них.
Если на стратегическом уровне ставится тривиальная задача, каждая новая ситуация в тактическом плане проста, то для того, чтобы игра представляла хоть какой-то интерес, вся нагрузка приходится на оперативный уровень. При этом получаются очень динамичные игры, протекающие за короткое время с большим эмоциональным напряжением. Это наиболее любимые игры для детей младшего и среднего школьного возраста. Есть смысл назвать их "автоматными играми", поскольку по содержанию и характеристикам они ничем не отличаются от игр игровых автоматов.
Игры с примитивной стратегической задачей, но большим разнообразием ситуаций, персонажей, препятствий и целей (с нагруженным тактическим планом) – наиболее популярный и захватывающий класс игр. Их можно назвать "ситуативными" или "авантюрными". Такие игры бывают содержательно интересны для играющего только на этапе освоения игры. Затем, когда успешные реакции на типичные ситуации закрепляются, центр нагрузки у играющего перемещается в оперативный план, и если играющий продолжает играть в данную игру, то не столько ради процесса игры, сколько ради достижения высокого результата.
Игры со сложной задачей на стратегическом уровне, как правило, протекают в низком темпе (оперативный план сводится, по существу, к ограничению времени на обдумывание очередного хода) и чаще имеют обедненный тактический план. Иногда тактический план в таких играх не выделен, сливаясь со стратегическим. Эти игры есть смысл назвать "компьютерными головоломками". Обычно это скучноватые игры, не пользующиеся широкой популярностью.
Лучшими, на наш взгляд, получаются игры, в которых все три плана нагружены равномерно. Если игровая среда, для которой возможно подобное распределение нагрузки, получается, то это большая (и редкая) удача разработчика. Такая среда, как правило, бывает достаточно богатой и позволяет поставить внутри себя большое разнообразие задач, а значит создать много вариантов игры и распределить их по уровням сложности. Поэтому интерес к игре может быть поддержан достаточно долго. Подобные игры имеют еще то преимущество, что недостаточная тренированность на одном из уровней может быть скомпенсирована на другом, и игра бывает интересна для широкого круга играющих.
Заметим, что такие "сбалансированные" игры часто обладают тренинговым эффектом, поскольку недостаток того или иного качества не мешает играющему получать средние результаты за счет наличия других, и тем самым не отвращает его от игры. Стремление же получить лучший результат – стимул тренировки всех необходимых качеств.
Статья представляет собой переработанный для журнала текст доклада, прочитанного автором 13 мая 1986 г. в Большом зале Политехнического музея на семинаре "Компьютерные игры". Опубликована в журнале "Микропроцессорные средства и системы" №3, 1987 г. Перепечатывается с разрешения автора.