Метод построения пошаговых ролевых игр на базе XML-скриптов и автоматов



© К.А.Ворошилов, А.В.Ефремов

Санкт-Петербургский государственный университет информационных технологий, механики и оптики

Проектная документация
Исполняемая программа
Исходные тексты

Аннотация

С тех пор, как появились ролевые компьютерные игры, встал вопрос о программировании поведения персонажей, которыми управляет компьютер, а не игрок. Такие персонажи называются неигровым, или non-player characters (npc).

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

В настоящей работе описан метод построения скриптов поведения (которые до этого строились эвристически) по графам переходов автоматов, являющихся наглядной спецификацией поведения объектов

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

В этом примере в качестве основы для создания игрового пространства выбрана игра "Герои МатМеха", основной идеей которой является подготовка к сдаче и сдача всех зачетов одного из учебных семестров математико-механического факультета Санкт-Петербургского государственного университета в крайне сжатые сроки (одна неделя).

Авторы решили написать аналогичную игру, воссоздав похожий игровой мир, но используя более близкую им атмосферу кафедры "Компьютерные технологии" факультета "Информационные технологии и программирование" Санкт-Петербургского государственного университета информационных технологий механики и оптики.

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

Для реализации проекта была использована платформа .NET, которая обеспечивает наибольшую скорость и удобство разработки. При создании интерпретатора в качестве основного языка был использован язык C#, а для реализации предлагаемого формального языка - язык XML.