Клишин Арсений, 524
<ul><li>Гейм-дизайнер  — человек, разрабатывающий правила игр. Слово «гейм-дизайнер» применяется в основном к компьютерным...
<ul><li>Изначально компьютерные игры писали один-двое; программист был одновременно разработчиком геймплея и, зачастую, гл...
<ul><li>На начальных стадиях развития проекта на основе дизайн-документа принимается решение о финансировании. Во время ак...
<ul><li>Гейм-дизайнеру нужны навыки аналитика, психолога, технического писателя и игрока, умение работать в команде. Гейм-...
<ul><li>Из вышесказанного следует, что для гейм-дизайнера не является обязательным умение программировать </li></ul><ul><l...
<ul><li>У компании-работодателя возникает дилемма : </li></ul><ul><li>Набирать высокооплачиваемых специалистов, умеющих пр...
<ul><li>Минусы : </li></ul><ul><li>Набирать высокооплачиваемых специалистов, умеющих программировать на языке, который пре...
<ul><li>Создать программное средство, обеспечивающее автоматическое создание программного кода по словесному описанию пунк...
<ul><li>Миссия  - аналог главы в рамках игры. В начале каждой миссии игрока ставят в известность о задачах (целях миссии)....
<ul><li>Архитектура AI : </li></ul><ul><li>Архитектура AI  представляет собой конечный автомат(FSM) и состоит из следующих...
<ul><li>Behavior  представляет собой набор  state ’ов который реализует некоторое поведение. Behavior дает возможность лог...
<ul><li>Command  представляет собой команду, которая выполняет реальную работу. </li></ul><ul><li>Event Handler  представл...
 
<ul><li>Кроме того: </li></ul><ul><li>Для каждого конечного автомата существуют 2 специальных state: </li></ul><ul><li>1. ...
 
<ul><li>Advanced Behavior  (наследование): </li></ul><ul><li>Behavior  позволяет отделить отдельное поведение, но этого не...
<ul><li>Advanced Behavior  (наследование): </li></ul><ul><li>Вариант 1  не приемлем из-за повторения информации.  </li></u...
 
 
 
 
 
<ul><li>В каждом состоянии будет находиться один паттерн  pt_default , срабатывающий при входе в состояние. </li></ul><ul>...
<ul><li>1)Дизайнер вбивает описание желаемого поведения объекта на русском языке в следующем формате : </li></ul><ul><li>“...
<ul><li>2) После нажатия на кнопку  “Analyze”  происходит проверка на корректность введенного текста. В нее входят в частн...
 
<ul><li>3 ) После нажатия на кнопку  “Draw”  возникает новая  “ форма ” , в которой будет отображаться диаграмма состояний...
<ul><li>Подробнее о библиотеках : </li></ul><ul><li>Разные компании используют для разработки разные скриптовые языки </li...
<ul><li>Подробнее о библиотеках : </li></ul><ul><li>Первая библиотека содержит в себе информацию о том, какие слова каким ...
<ul><li>Подробнее о библиотеках : </li></ul><ul><li>Пример работы  mystem: </li></ul>
<ul><li>Подробнее о библиотеках : </li></ul><ul><li>Вторая библиотека будет содержать в себе информацию о соответствии ком...
 
<ul><li>На диаграмме будут отражены все состояния и возможные переходы из одного состояния в другое. </li></ul><ul><li>Вну...
<ul><li>Схема является всего лишь наглядным показателем внутреннего состояния программы, однако используя данные, которые ...
 
<ul><li>Найти подходящий тезаурус </li></ul><ul><li>Написать тестовые библиотеки </li></ul><ul><li>Улучшить внешний вид пр...
Upcoming SlideShare
Loading in …5
×

Генерация программы поведения игрового персонажа по естественно-языковой спецификации

480 views
443 views

Published on

Клишин Арсений
13 апреля 2011

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
480
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Генерация программы поведения игрового персонажа по естественно-языковой спецификации

  1. 1. Клишин Арсений, 524
  2. 2. <ul><li>Гейм-дизайнер  — человек, разрабатывающий правила игр. Слово «гейм-дизайнер» применяется в основном к компьютерным играм. Роль гейм-дизайнера аналогична роли постановщика задачи в обычном программировании и режиссёра в кино. </li></ul><ul><li>Одной из основных задач гейм-дизайнера является разработка дизайн-документа . В этом документе простым языком (художественный стиль — распространённая ошибка!) описываются правила и особенности игры. Таким образом, ещё до того, как движок разработан, гейм-дизайнер вырабатывает целостное видение игры. </li></ul>
  3. 3. <ul><li>Изначально компьютерные игры писали один-двое; программист был одновременно разработчиком геймплея и, зачастую, главным художником. В частности, к таким гейм-дизайнерам относятся Джордан Мехнер и Алексей Пажитнов. Разработка геймплея как отдельная профессия впервые появилась в Coleco в 1970-е годы. Но в те времена это было редким исключением. </li></ul><ul><li>Выделить гейм-дизайн в отдельную профессию потребовалось в конце 1980-х годов, когда один игровой проект стал не под силу малочисленной группе людей. </li></ul>
  4. 4. <ul><li>На начальных стадиях развития проекта на основе дизайн-документа принимается решение о финансировании. Во время активной разработки все технические спецификации базируются на видении гейм-дизайнера. Дизайн-документ не статичен: он корректируется в зависимости от текущего состояния дел, требований продюсера и предложений остальных разработчиков. Сам гейм-дизайнер также принимает участие в тестировании. </li></ul><ul><li>Необходимо чтобы гейм-дизайнер был хорошо осведомлен о различных частях и этапах разработки. </li></ul>
  5. 5. <ul><li>Гейм-дизайнеру нужны навыки аналитика, психолога, технического писателя и игрока, умение работать в команде. Гейм-дизайнер должен уметь донести своё видение игры до остальных (зачастую мыслящих совершенно по-разному, как, например, художники и программисты) — поэтому важны навыки общения, он должен уметь излагать свои мысли устно и на бумаге => часто встречается гейм-дизайнер в одном лице со сценаристом, ведущим программистом или главным художником. </li></ul>
  6. 6. <ul><li>Из вышесказанного следует, что для гейм-дизайнера не является обязательным умение программировать </li></ul><ul><li>Одной из типичных задач начинающих гейм-дизайнеров является описание содержания миссий, то есть создание: </li></ul><ul><li>1)Логики миссии (другими словами, условия успешного или неуспешного ее завершения, фиксирование процесса продвижения по ней, реализация сюжета и его ветвления) </li></ul><ul><li>2)Описание поведения персонажей, участвующих в игровом процессе и их поведения. </li></ul>
  7. 7. <ul><li>У компании-работодателя возникает дилемма : </li></ul><ul><li>Набирать высокооплачиваемых специалистов, умеющих программировать на языке, который предлагает компания и при этом являющихся профессиональными дизайнерами </li></ul><ul><li>Нанимать специалистов 2-х типов – дизайнеров и программистов </li></ul>
  8. 8. <ul><li>Минусы : </li></ul><ul><li>Набирать высокооплачиваемых специалистов, умеющих программировать на языке, который предлагает компания и при этом быть профессиональными дизайнерами </li></ul><ul><li>Высокая заработная плата сотрудников </li></ul><ul><li>Нанимать специалистов 2-х типов – дизайнеров и программистов </li></ul><ul><li>При сравнительно небольшой плате за каждого сотрудника общая зарплата скорее всего будет даже больше чем в предыдущем случае </li></ul><ul><li>Между дизайнером и программистом неизбежно непонимание </li></ul>
  9. 9. <ul><li>Создать программное средство, обеспечивающее автоматическое создание программного кода по словесному описанию пунктов 1) и 2) на языке, приближенном к естественному (то есть на естественном языке с некоторыми правилами оформления и некоторыми другими ограничениями). </li></ul>
  10. 10. <ul><li>Миссия - аналог главы в рамках игры. В начале каждой миссии игрока ставят в известность о задачах (целях миссии). Миссия заканчивается когда либо цели выполнены, либо провалены. </li></ul><ul><li>Карта - игровая локация, на которой происходит миссия(и). </li></ul><ul><li>Скриптовый язык (англ.  scripting language , в русскоязычной литературе принято название язык сценариев ) — язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки ( batch languages или job control languages ). Сценарии обычно интерпретируются, а не компилируются (хотя всё чаще применяют компиляцию каждый раз перед запуском). </li></ul>
  11. 11. <ul><li>Архитектура AI : </li></ul><ul><li>Архитектура AI  представляет собой конечный автомат(FSM) и состоит из следующих элементов: </li></ul><ul><li>Behaviors </li></ul><ul><li>States </li></ul><ul><li>Patterns </li></ul><ul><li>Commands </li></ul><ul><li>Event Handlers </li></ul>
  12. 12. <ul><li>Behavior  представляет собой набор state ’ов который реализует некоторое поведение. Behavior дает возможность логически отделить разные модели поведения. </li></ul><ul><li>State  представляет собой набор pattern ’ов реализуя отдельное состояние конечного автомата. State представляет действия объединенные одной целью. </li></ul><ul><li>Pattern  представляет собой набор Command . Pattern определяет отдельные фазы выполнения состояния. </li></ul>
  13. 13. <ul><li>Command  представляет собой команду, которая выполняет реальную работу. </li></ul><ul><li>Event Handler  представляет собой реакцию на событие. На рисунке на следующем слайде номерами показаны приоритеты обработчиков событий. </li></ul><ul><li>Таким образом обработчик ищется след. образом: </li></ul><ul><li>1)Поиск в текущем Pattern </li></ul><ul><li>2)Поиск в текущем State </li></ul><ul><li>3)Поиск в текущим Behavior </li></ul>
  14. 15. <ul><li>Кроме того: </li></ul><ul><li>Для каждого конечного автомата существуют 2 специальных state: </li></ul><ul><li>1. State инициализации ( init state ) </li></ul><ul><li>2. State начала работы ( start state ) </li></ul>
  15. 17. <ul><li>Advanced Behavior (наследование): </li></ul><ul><li>Behavior  позволяет отделить отдельное поведение, но этого недостаточно когда в игре есть несколько персонажей которые на 90% схожи, но при этом один из них умеет делать A, а второй, например, никогда не сделает B. Для решения данной задачи есть несколько путей: </li></ul><ul><li>1. Сделать такой же behavior и добавить/убрать нужное. </li></ul><ul><li>2. В нужном месте сделать ветвление ( Если это персонаж 1, то не делаем A) </li></ul>
  16. 18. <ul><li>Advanced Behavior (наследование): </li></ul><ul><li>Вариант 1  не приемлем из-за повторения информации.  </li></ul><ul><li>Вариант 2  иногда более эффективен чем какие-то другие, но если ветвлений много, то сложность(понимания) скрипта возрастает. </li></ul><ul><li>Рассмотрим  вариант 3 . В нем предлагается взять за основу уже созданный  behavior  и в нужных местах переопределить  Pattern , State ,  Event_Handler . </li></ul>
  17. 24. <ul><li>В каждом состоянии будет находиться один паттерн pt_default , срабатывающий при входе в состояние. </li></ul><ul><li>Разрешается использовать только глобальные обработчики событий </li></ul>
  18. 25. <ul><li>1)Дизайнер вбивает описание желаемого поведения объекта на русском языке в следующем формате : </li></ul><ul><li>“ <Имя_шаблона> :< Имя_шаблона > . </li></ul><ul><li><st_init>: Описание инициализируемых параметров; </li></ul><ul><li><st_start>: Описание действий. Описание действий. …; </li></ul><ul><li><st_name1 >:Описание действий. Описание действий. …; </li></ul><ul><li><st_name2 >:Описание действий. Описание действий. …; </li></ul><ul><li><События>:Возможные события и реакция. Возможные события и реакция. … ; ” </li></ul>
  19. 26. <ul><li>2) После нажатия на кнопку “Analyze” происходит проверка на корректность введенного текста. В нее входят в частности : </li></ul><ul><li>Проверка на удовлетворение вышеприведенному формату </li></ul><ul><li>Проверка на недопустимые символы внутри названий состояний и поведения </li></ul><ul><li>Проверка на уникальность названий состояний </li></ul>
  20. 28. <ul><li>3 ) После нажатия на кнопку “Draw” возникает новая “ форма ” , в которой будет отображаться диаграмма состояний в виде конечного автомата. </li></ul><ul><li>Для этого программа анализирует содержание описаний состояний. </li></ul><ul><li>Программа осуществляет анализ предложений, используя для этого, в частности, входную библиотеку </li></ul>
  21. 29. <ul><li>Подробнее о библиотеках : </li></ul><ul><li>Разные компании используют для разработки разные скриптовые языки </li></ul><ul><li>Принцип их работы отличается незначительно, однако синтаксис может быть совершенно разным и список допустимых команд будет различаться </li></ul><ul><li>Для того, чтобы программа была гибкой, требуется подключать библиотеки </li></ul><ul><li>Библиотеки будут храниться в обычном текстовом файле со специальным расширением и кодом безопасности </li></ul>
  22. 30. <ul><li>Подробнее о библиотеках : </li></ul><ul><li>Первая библиотека содержит в себе информацию о том, какие слова каким командам соответствуют. </li></ul><ul><li>Например, слово “ прогуливаться ” в тексте описания состояния может соответствовать активации команды на псевдоязыке, предположим “walk;” . </li></ul><ul><li>Для создания первой библиотеки потребуется тезаурус, который будет создавать группы близких по смыслу слов </li></ul><ul><li>К неопределенной форме слова будут приводиться с помощью специальной программы. Планируется использовать парсер “mystem” от компании “ Яндекс ” . </li></ul>
  23. 31. <ul><li>Подробнее о библиотеках : </li></ul><ul><li>Пример работы mystem: </li></ul>
  24. 32. <ul><li>Подробнее о библиотеках : </li></ul><ul><li>Вторая библиотека будет содержать в себе информацию о соответствии команд на псевдоязыке командам на реальном скриптовом языке. </li></ul><ul><li>Также именно в ней будут описываться правила синтаксиса скриптового языка. </li></ul>
  25. 34. <ul><li>На диаграмме будут отражены все состояния и возможные переходы из одного состояния в другое. </li></ul><ul><li>Внутри блоков состояний через точку с запятой будут указаны команды, описывающие это состояние на псевдокоде </li></ul>
  26. 35. <ul><li>Схема является всего лишь наглядным показателем внутреннего состояния программы, однако используя данные, которые на ней отражены, а также вторую библиотеку, мы получаем конечный результат, а именно программный код, приведенный в начале. </li></ul>
  27. 37. <ul><li>Найти подходящий тезаурус </li></ul><ul><li>Написать тестовые библиотеки </li></ul><ul><li>Улучшить внешний вид программы </li></ul>

×