Инсерционное моделирование сценариев ролевых игр
Предложена инсерционная модель однопоточной ролевой игры – первое применение инсерционного моделирования к разработке игр. На основании данной модели разработан декларативный язык описания сценариев....
Збережено в:
Дата: | 2012 |
---|---|
Автор: | |
Формат: | Стаття |
Мова: | Russian |
Опубліковано: |
Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України
2012
|
Назва видання: | Управляющие системы и машины |
Теми: | |
Онлайн доступ: | http://dspace.nbuv.gov.ua/handle/123456789/83108 |
Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
Цитувати: | Инсерционное моделирование сценариев ролевых игр / В.В. Кожаев // Управляющие системы и машины. — 2012. — № 6. — С. 53-56. — Бібліогр.: 4 назв. — рос. |
Репозитарії
Digital Library of Periodicals of National Academy of Sciences of Ukraineid |
irk-123456789-83108 |
---|---|
record_format |
dspace |
spelling |
irk-123456789-831082015-06-15T03:02:02Z Инсерционное моделирование сценариев ролевых игр Кожаев, В.В. Технические приложения инсерционного моделирования Предложена инсерционная модель однопоточной ролевой игры – первое применение инсерционного моделирования к разработке игр. На основании данной модели разработан декларативный язык описания сценариев. A model of a signal-insertion role-playing game, which is the first application of modeling to the development of insertional games is suggested. On the basis of the given model a declarative language of scenarios description is developed. Запропоновано інсерційну модель однопоточної рольової гри, що є першим застосуванням інсерційного моделювання до розробки ігор. На підставі поданої моделі розроблено декларативну мову опису сценаріїв. 2012 Article Инсерционное моделирование сценариев ролевых игр / В.В. Кожаев // Управляющие системы и машины. — 2012. — № 6. — С. 53-56. — Бібліогр.: 4 назв. — рос. 0130-5395 http://dspace.nbuv.gov.ua/handle/123456789/83108 681.3: 658.56 ru Управляющие системы и машины Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України |
institution |
Digital Library of Periodicals of National Academy of Sciences of Ukraine |
collection |
DSpace DC |
language |
Russian |
topic |
Технические приложения инсерционного моделирования Технические приложения инсерционного моделирования |
spellingShingle |
Технические приложения инсерционного моделирования Технические приложения инсерционного моделирования Кожаев, В.В. Инсерционное моделирование сценариев ролевых игр Управляющие системы и машины |
description |
Предложена инсерционная модель однопоточной ролевой игры – первое применение инсерционного моделирования к разработке игр. На основании данной модели разработан декларативный язык описания сценариев. |
format |
Article |
author |
Кожаев, В.В. |
author_facet |
Кожаев, В.В. |
author_sort |
Кожаев, В.В. |
title |
Инсерционное моделирование сценариев ролевых игр |
title_short |
Инсерционное моделирование сценариев ролевых игр |
title_full |
Инсерционное моделирование сценариев ролевых игр |
title_fullStr |
Инсерционное моделирование сценариев ролевых игр |
title_full_unstemmed |
Инсерционное моделирование сценариев ролевых игр |
title_sort |
инсерционное моделирование сценариев ролевых игр |
publisher |
Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України |
publishDate |
2012 |
topic_facet |
Технические приложения инсерционного моделирования |
url |
http://dspace.nbuv.gov.ua/handle/123456789/83108 |
citation_txt |
Инсерционное моделирование сценариев ролевых игр / В.В. Кожаев // Управляющие системы и машины. — 2012. — № 6. — С. 53-56. — Бібліогр.: 4 назв. — рос. |
series |
Управляющие системы и машины |
work_keys_str_mv |
AT kožaevvv insercionnoemodelirovaniescenarievrolevyhigr |
first_indexed |
2025-07-06T09:50:33Z |
last_indexed |
2025-07-06T09:50:33Z |
_version_ |
1836890649699287040 |
fulltext |
УСиМ, 2012, № 6 53
УДК 681.3: 658.56
В.В. Кожаев
Инсерционное моделирование сценариев ролевых игр
Предложена инсерционная модель однопоточной ролевой игры – первое применение инсерционного моделирования к разра-
ботке игр. На основании данной модели разработан декларативный язык описания сценариев.
A model of a signal-insertion role-playing game, which is the first application of modeling to the development of insertional games is
suggested. On the basis of the given model a declarative language of scenarios description is developed.
Запропоновано інсерційну модель однопоточної рольової гри, що є першим застосуванням інсерційного моделювання до роз-
робки ігор. На підставі поданої моделі розроблено декларативну мову опису сценаріїв.
Введение. Ролевыми играми будем называть та-
кие, в которых персонажи, обладающие неким
поведением, взаимодействуют между собой, пер-
сонажем игрока и средой. Под поведением, в
общем случае, следует понимать обмен сообще-
ниями между персонажами и средой и реакцию
персонажа на сообщения: отправку новых сооб-
щений, изменение свойств и решение как реаги-
ровать на следующие сообщения. Другими сло-
вами, персонажей можно считать актерами [1].
Правила поведения персонажа будем назы-
вать сценарием его поведения (далее – сцена-
рий). В настоящее время сценаристы используют
неформальные описания сценариев. Однако та-
кие описания изобилуют неточностями, поэтому
в практике разработки игр часто случается, что
воплощенная в программный код игра сущест-
венно отличается от первоначального замысла
сценариста. Таким образом, возникает задача
описания сценариев ролевых игр с помощью не-
которого формализма. Поскольку игру и персо-
нажей можно рассматривать как среду с погру-
женными в нее агентами, для создания модели
удобно использовать инсерционное исчисление
[2]. До недавнего времени инсерционное моде-
лирование использовалось в основном для вери-
фикации и анализа отказоустойчивых систем.
Однако этот инструмент можно использовать и
для моделирования систем, не требующих высо-
кой отказоустойчивости, в частности игр, рас-
смотренных в [3].
Пример игры
В центре игрового поля расположен форт, на
котором игрок может строить неподвижные баш-
ни различного типа. Кроме того, на территории
форта располагаются роботы. Из-за пределов
игрового поля к форту движутся роботы про-
тивника, стреляющие по роботам и башням иг-
рока. Последний строит башни на территории
форта, башни стреляют по противнику или соз-
дают роботов. Цель игры состоит в том, чтобы,
найдя оптимальную стратегию постройки ба-
шен, продержаться против роботов противника
в течение определенного времени.
Игровое поле. Прямоугольное игровое поле
делится на две части: форт и поле. Роботы игро-
ка могут перемещаться только по форту, робо-
ты противника – только по полю. Роботы игро-
ка не выходят за территорию форта, соответст-
венно роботы противника не могут в форт по-
пасть. Форт имеет вид односвязной фигуры
(вид фигуры изменяется от уровня к уровню).
Персонажи. В игре участвуют два типа пер-
сонажей: башни (неподвижные) и роботы (под-
вижные). Вторые в свою очередь делятся на
роботов игрока и роботов противника. У каж-
дого персонажа имеется показатель, называе-
мый «жизнь». При повреждениях значение по-
казателя снижается. Если жизнь равна нулю
или меньше, персонаж погибает.
Роботы игрока. Робот игрока предназначен
для починки башен. Под починкой понимается
продление жизни, происходящее в течение оп-
ределенного интервала времени. Для починки
робот должен подойти к башне и некоторое
время находиться возле нее. В роботов можно
стрелять так же, как и в башни.
Роботы противника. Появляются за преде-
лами игрового поля, движутся по направлению
к форту. Перед возникновением, робот против-
ника выбирает цель. После того, как робот по-
дойдет к цели на расстояние выстрела, он ос-
танавливается и начинает стрельбу. Выбор про-
исходит с помощью оценочной функции, учи-
54 УСиМ, 2012, № 6
тывающей расстояние до цели, ее важность
для жизнеобеспечения и пр. Если цель унич-
тожена (не обязательно данным персонажем),
выбирается другая цель.
Башни. Неподвижны в отличие от роботов.
Стреляют по роботам противника либо созда-
ют новых роботов. Выбор цели также происхо-
дит с помощью оценочной функции, и он воз-
можен только из числа роботов, находящихся
на расстоянии выстрела. Если цель уничтожена
так же, как и роботы противника, башни выби-
рают другую цель.
Игрок может в любой момент времени вме-
шаться в течение игры и построить новую баш-
ню; это возможно, если игрок обладает доста-
точным количеством монет, а они начисляются
за уничтожение башнями игрока роботов про-
тивника.
Время и пространство. Как время, так и
пространство (игровое поле) дискретны. Еди-
ница дискретного времени называется тиком.
Расстояние, на которое робот может перемес-
титься на один тик, зависит от его типа.
Инсерционная модель игры
Персонажи игры рассматриваются как аген-
ты, которые погружаются в среду игры. Игрок
находится во внешней среде и отождествляется
с ней.
Поведение игрока. Действия игрока: созда-
ние робота в точке x; – создание башни в точке
x, W; наблюдение за игрой в течение одного ти-
ка. Поскольку о поведении игрока ничего не из-
вестно, его можно моделировать как недетерми-
нированную систему с поведением, определяе-
мым таким уравнением: ( ( ). ( ).
x M
P R x P T x P
+ W.P), где M – множество точек игрового поля.
Среда игры определяет для каждого персо-
нажа его положение на игровом поле и показа-
тель жизни. Кроме атрибутов агентов, состоя-
ние среды определяет число монет, заработан-
ных игроком. Таким образом, общее состояние
системы имеет вид P[E[u]], где P – состояние
игрока, E[u] – состояние среды игры, u = (u1,
…, um) – состояния персонажей игры.
Действия персонажей
Действия роботов игрока
show_start_moving(x) –начало движения;
show_stop_moving(x) – окончание движения;
select_new_tower(x) – выбирает новую башню;
before_agony(x) – начало агонии;
show_splash(x) – реакция на попадание
(вспышку);
show_start_charging(x) – начало зарядки;
how_moving_process(x) – демонстрирует про-
цесc ремонта башни (заряда жизненной силой);
remove_robot(x) – удаление робота с игрово-
го поля;
show_charging_process(x) – процесc ремонта
башни (заряда жизненной силой).
Действия роботов противника
shoot(x) – стреляет по противнику;
select_target(x) – выбирает новую цель;
move_to_shoot_distance(x) – движется к цели
на расстояние выстрела;
show_splash(x) – вспышка от попадания по
роботу.
Функции погружения внешней среды и
среды игры
Создание нового робота:
]],[[]][)[).(( vuEPuEPxR
,
где – пустое действие (оно не изменяет изо-
бражения состояния игры на экране), E – но-
вое состояние среды игры, v – новый робот иг-
рока в начальном состоянии. Условие приме-
нения этого правила – достаточное количество
монет у игрока. В новом состоянии робот v ус-
тановлен в точке x.
Создание новой башни:
]],[[]][)[).(( vuEPuEPxR
аналогично созданию нового робота.
Изменение состояния игры
]],...,[[]].,...,.[)[.( 1
),...,,(
11
1
m
aaE
mm uuEPuauaEPW m ,
где (E, a1, , am) – демонстрация состояния иг-
ры на экране после выполнения всех действий.
Новое состояние iu i-го персонажа совпадает с
ui, если действие этого персонажа выполнено
успешно или равно Δ, если персонаж выведен
из строя. Условие применимости этого правила
состоит в том, что все действия персонажей, не
выведенных из строя, могут быть выполнены
успешно.
Опишем условия, при которых робот перехо-
дит в конечное состояние. Предположим, что ро-
УСиМ, 2012, № 6 55
бот и башня стреляют друг в друга. Поскольку
условием существования персонажей принято
положительное значение жизни, первым погиб-
нет тот персонаж, у которого жизнь иссякнет
раньше, причем возможна ситуация, когда по
одному персонажу игрока стреляют несколько
роботов противника и наоборот. Выстрелы осу-
ществляются с определенным разлетом, завися-
щим от характеристик конкретного персонажа.
Таким образом, возможна ситуация, когда при
выстреле попадания не происходит. В игре име-
ется как оружие массового («граната»), так и ин-
дивидуального («снайперская винтовка») по-
ражения. Оружие массового поражения стре-
ляет в определенную точку и поражает всех
персонажей, находящихся в радиусе пораже-
ния. Величина поражения обратно пропорцио-
нальна расстоянию от эпицентра взрыва. Для
простоты принято, что если персонаж нахо-
дится вне радиуса поражения, он не поврежда-
ется. Оружие индивидуального поражения мо-
жет поразить только конкретного персонажа.
Поскольку роботы противника и роботы игро-
ка находятся на разных участках игрового по-
ля, для простоты принимается, что выстрелы
роботов противника поражают только персона-
жей игрока, соответственно выстрелы персо-
нажей игрока поражают только противника.
Дальность выстрела зависит от типа оружия.
Каждый персонаж может владеть только одним
типом оружия. Соответственно для выстрела
робот противника должен приблизится к робо-
ту противника на расстояние выстрела. Если
робот, по которому стреляют, движется, то
принимается, что меткость персонажа, стре-
ляющего по нему из оружия индивидуального
поражения не меняется. К оружию массового
поражения понятие меткости выстрела по опре-
деленному персонажу не применимо, поскольку
поражается группа персонажей, находящихся на
расстоянии, меньшем, чем радиус поражения
для данного оружия.
Поведение персонажей. В соответствии с
описанием игры, у персонажа может быть дос-
таточно сложное поведение. В частности, по-
скольку он сам выбирает следующую цель, ему
должны быть доступны все данные о располо-
жении персонажей на игровом поле. Если ро-
бот противника выбрал целью робот игрока, а
этот робот движется, робот противника должен
отслеживать движение цели и менять свои дей-
ствия в соответствии с этим движением (пого-
ня за целью).
Каждый персонаж имеет свою среду, которая
локально ограничивает действия агента и поль-
зуется информацией из состояния среды. Вви-
ду сказанного функционирование персонажа оп-
ределяется уравнениями вида
. . . . , .i i i
i I
u before while after v while y while
, где
before и while – действия, производимые над
агентом соответственно до входа в состояние
из некоего другого состояния и действия, про-
исходящие при переходе состояния самого в
себя (петля); afer – действия, производимые
при переходе из состояния α в υ.
Реализация инсерционной модели
Для управления персонажами предлагается
использовать детерминированный конечный ав-
томат, когда управление происходит в процессе
переходов от состояния к состоянию с помощью
управляющих воздействий. Под последними по-
нимают функции, выполняемые над персонажа-
ми перед входом в данное состояние, перед вы-
ходом из него, при переходе из состояния A в
состояние В и при переходе из определенного
состояния в него же (петля) [1].
Ввиду того, что большинство платформ, ис-
пользуемых для разработки казуальных игр, од-
нопоточны, предлагается реализовывать актив-
ную систему обработки событий. Состояние мо-
жет измениться единожды за тик. Если это про-
изошло, выполняются воздействия, приписан-
ные к переходу из состояния в состояние, ина-
че – воздействия, выполняемые при переходе
состояния в себя. Переход в данное состояние
из текущего происходит, если справедливо ло-
гическое выражение, атомами которого служат
идендификаторы функций, реализованные на
императивном языке программирования, под-
ходящем для данной платформы и возвращаю-
щих логическое значение. Управляющие воз-
действия также являются идентификаторами ме-
тодов на императивном языке, но в отличие от
первых, требование к возвращаемому значе-
нию не выдвигается.
56 УСиМ, 2012, № 6
Язык разметки сценариев. Для задания по-
ведения персонажа создадим текстовый язык.
Программа на этом языке состоит из двух ча-
стей: раздела объявлений и собственно тела про-
граммы. В разделе объявлений указываются до-
пустимые имена состояний управляющих воздей-
ствий и атомов логических выражений. Причем,
имена состояний должны быть уникальными.
Каждое состояние состоит из списка управ-
ляющих воздействий и условий перехода. Ус-
ловие перехода в свою очередь содержит логи-
ческое выражение, при выполнении которого
происходит переход и управляющие воздей-
ствия, выполняемые при этом.
Формальное описание языка создания сце-
нариев. Представим синтаксис языка в виде
контекстно независимой грамматики.
Programm::=<states_definition> <athoms_definition>
<methods_definition> <programm_body>
states_definition::=states:<list>;
athoms_definition::=atoms:<list>;
methods_definition::=methods:<list>;
list::={<list_body>};
list_body::=<lexeme>;
list_body::=<list_body> <lexeme>;
program_body_definitions::=<states_list>
states_list::=<state_definition>
states_list::=<states_list> <state_definition>
state_definition::=state:<lexeme>
methods_before:<list>
methods_after:<list>
methods_in_process:<list>
transitions_definition:<transition_list>
transitions_list::=<transition_definition>
transitions_list::=<transition_list> <transition_definition>
transition_definition::=state:<lexeme>
condition:<logical_expression>
methods:<list>
Программа робота игрока. Представим программу ро-
бота игрока, предлагаемую для инсерционного моделиро-
вания. Программы для роботов противника и башен анало-
гичны, как и программы для роботов персонажа и башен.
states:{move_to_tower,fix_tower,wait,agony,death, not_move}
//Состояния, атомы и методы объявляются в начале про-
граммы
//(как переменные в паскале)
atoms: {is_life_more_null,
is_there_tower_for_fixing,
is_selected_tower_dead,
is_life_more_then_null,
is_robot_near_tower,
before_agony,
remove_robot,
show_splash,
show_charging_process}
methods:{show_start_moving,
show_stop_moving,
select_new_tower,
before_agony,
show_splash,
show_start_charging,
how_moving_process,
remove_robot,
show_charging_process}
program_body:
state:move_to_tower
methods_before:{show_start_moving}
methods_after:{show_stop_moving}
methods_in_process:
{show_moving_ process}
transitions:
state:agony
condition:is_life_more_
then_null
state:move_to_tower
condition: is_selected_tower_dead
methods:{select_new_
tower}
state:fix_tower
condition: !is_selected_
tower_dead && is_robot_
near_tower
methods:{show_start_
charging}
state:agony
methods_before:{before_agony}
methods_after:{remove_robot}
methods_in_process:{show_splash}
transitions: {}//Нет переходов
state:fix_tower
methods_before:{}//Нет действий
methods_after:{}
methods_in_process:{show_charging_process}
Заключение. Предложенная инсерционная модель од-
нопоточной ролевой игры – первое применение инсер-
ционного моделирования к разработке игр. На основании
описанной модели разработан декларативный язык опи-
сания сценариев. Научная новизна состоит в построении
формального описания сценария игры. Автору не из-
вестно других попыток описать сценарий формально.
1. Кожаев В.В. Использование декларативного подхода
к созданию каркаса двумерных игр // Компьютер-
ная математика. – 2011. – № 1. – С. 79–85.
2. Летичевский А.А., Капитонова Ю.В. Инсерционное
моделирование / Пр. міжнар. конф. «50 років Інсти-
туту кібернетики ім. В.М. Глушкова НАН Украї-
ни», Київ, 2008. – С. 293–301.
3. Кожаев В.В. Тестирование интереса к игре / Мате-
ріали сьомої міжнар. наук.-практ. конф. з програм-
мування. УкрПРОГ2010, Київ 2010. – С. 452–456.
4. Летичевский А.А. Инсерционное моделирование /
Курс лекций – http://schum.kiev.ua/let/
Тел. для справок: +38 063 775-7467 (Киeв)
E-mail: vkozhaev@gmail.com
© В.В. Кожаев, 2012
|