Мультимедийная система обучения правилам пожарной безопасности

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    2,05 Мб
  • Опубликовано:
    2012-07-05
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Мультимедийная система обучения правилам пожарной безопасности










ДИПЛОМНЫЙ ПРОЕКТ


На тему:

"Мультимедийная система обучения правилам пожарной безопасности"


Реферат

Объектом разработки данного дипломного проекта является программный инструментарий для разработки мультимедийных интерактивных обучающих систем (МИОС), предназначенных для обучения правилам поведения в чрезвычайных ситуациях. Такие системы используют трехмерную компьютерную графику для создания виртуальной обучающей среды с интерактивным окружением и концепцию обучающих сценариев для организации обучения и проверки знаний. Также разработан прототип МИОС для обучения правилам пожарной безопасности и действиям при обнаружении пожара, демонстрирующий возможности инструментария.

Проект разрабатывался в соответствии с ТЗ, составленным специалистами ООО «ИТ-компания «Сайк», бюро мультимедийных обучающих систем. Проект является внутренней инновационной разработкой, направленной на изучение методик построения обучающих систем с использованием трехмерной компьютерной графики. Большая часть требований ТЗ на сегодняшний момент реализована, остальные включены в план работ на ближайшие полгода. В настоящее время ведутся переговоры с администрацией г. Магнитогорска о разработке на основе указанного прототипа обучающей системы по пожарной безопасности для школ города.


Введение

По статистике наибольшее количество пожаров происходит из-за нарушения правил пожарной безопасности. При соблюдении правил пожарной безопасности можно избежать причины возникновения пожаров и предотвратить примерно две трети потерь. Именно поэтому так важно систематически проводить обучение на тему пожарной безопасности.

Традиционные методы обучения правилам пожарной безопасности, такие как устный инструктаж, раздача брошюр с картинками и схемами, чтение инструкций недостаточно эффективны. При таком подходе информация плохо усваивается, так как не вызывает интереса у обучаемого.

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

Однако у мультимедийных обучающих систем в их традиционной форме есть один важный недостаток: малая интерактивность. Пользователь таких систем не может взаимодействовать с объектом изучения. Например, изучая правила пользования огнетушителем или другими средствами пожаротушения, он обычно не может опробовать их на практике. Также подобные системы не позволяют смоделировать пожарную ситуацию, не могут дать обучаемому почувствовать её опасность.

По мнению консалтинговой компании Haskett consulting inc. (HCI): «Люди запоминают 20% того, что они видят, 40% того, что они видят и слышат и 70% того, что они видят, слышат и делают». Таким образом, необходимым элементом эффективного обучения являются постоянные тренировки.

Современные достижения трехмерной компьютерной графики позволяют создавать очень реалистичные «виртуальные миры». Обучающие системы, использующие эти достижения для создания интерактивной виртуальной среды, кажутся наиболее эффективными. Они позволяют обучаемому взаимодействовать пусть и не с реальными объектами, но хотя бы с их виртуальными образами, которыми могут восприниматься как весьма правдоподобные. Такие системы называют виртуальные тренажеры (далее мы будем называть их мультимедийные интерактивные обучающие системы - МИОС). Обучаясь в таких системах, мы получаем виртуальный опыт. Виртуальный опыт позволяет пережить и проанализировать те или иные ситуации в виртуальном пространстве, и на основе полученного опыта произвести действия в реальном мире. В случае с пожарной безопасностью, мы можем отработать наши навыки и закрепить знания правильного порядка действий в условиях виртуальной пожарной ситуации.

В свете вышесказанного разработка МИОС является достаточно актуальной задачей.

В дипломном проекте решаются следующие задачи:

разработать каркас МИОС, предназначенной для обучения правилам поведения в чрезвычайной ситуации, например при пожаре;

разработать редактор обучающих сценариев;

c помощью вышеперечисленных средств разработать прототип МИОС для обучения правилам пожарной безопасности и действиям при обнаружении пожара.

Для решения поставленных задач были выбраны следующие средства разработки:

Unity3d - игровой «движок» (инструмент для разработки приложений трехмерной компьютерной графики, в частности игр). Включает в себя интегрированную среду разработки. Языки программирования: C#, Unity JavaScript (диалект JavaScript), Boo (диалект Python) (в данной разработке использовался C#). К преимуществам данного средства следует отнести богатые возможности игрового «движка»: встроенный физический «движок», работа со звуком, импорт из множества форматов, тесная интеграция среды разработки и игрового «движка» (существует возможность непосредственно в среде разработке протестировать приложение), компиляция скриптов, обеспечивающая их высокую скорость выполнения (в отличие от многих подобных решений);

Autodesk 3ds Max (3D Studio MAX) - полнофункциональная профессиональная программная система для создания и редактирования трёхмерной графики и анимации;

Microsoft Visual С# 2010 Express Edition - интегрированная среда разработки на языке C# под платформы.NET и Mono;

СУБД SQLite 3 - легковесная, высокоэффективная локальная СУБД.

SQLite Expert Personal 3 - система администрирования баз данных SQLite;

Subversion - свободно распространяемая централизованная система управления версиями. Subversion отслеживает версии определенных документов (в нашем случае - файлов с исходными кодами, файлов сцен, моделей, текстур и звуковых дорожек) и создаёт централизованное их хранилище для обеспечения возможности доступа к их актуальным версиям с нескольких компьютеров.

Реализация каркаса МИОС и редактора обучающих сценариев позволит создать основу для разработки разнообразных обучающих систем, связанных с изучением правил поведения в чрезвычайной ситуации.

Разработка прототипа МИОС для обучения правилам пожарной безопасности и действиям при обнаружении пожара позволит апробировать вышеуказанный инструментарий, выделить наиболее перспективные идеи и направления в развитии данных обучающих систем.

1. Постановка задачи

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

аутентификация пользователей обучающей системы;

организация доступа к базе данных;

организация меню для навигации по функциональным блокам обучающей системы;

организация прохождения обучающего сценария в режимах обучения и проверки знаний с сохранением результатов в базу данных;

интерпретация скриптового языка программирования, использующегося для записи условий выполнения задач сценария и реакции на переходы между задачами;

просмотр результатов обучения и проверки знаний в табличной форме.

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

представление структуры сценария в виде графа;

создание, редактирование, удаление сценариев;

проверка ограничений, накладываемых на структуру сценария.

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

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

Данный проект разрабатывается по заказу ООО «ИТ-компания «Сайк», бюро мультимедийных обучающих систем. Проект является внутренней инновационной разработкой, направленной на изучение методик построения обучающих систем с использованием трехмерной компьютерной графики. В разработке также участвуют специалист по 3D-моделированию и специалист по разработке ИТ-проектов.

Разработка ведется согласно техническому заданию (ТЗ), указанному в приложении В. Важно отметить, что в рамках дипломного проекта реализованы не все требования ТЗ.


2. Обзор аналогичных программных продуктов

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

2.1 Образовательный комплекс «ОС3 Комплексная безопасность образовательных учреждений» (ООО «Айти агентство ОС3», г. Москва)

Комплекс предназначен как для самостоятельного изучения, так и для использования во время лекций студентами и педагогическими работниками всех уровней.

Материал, заложенный в данный комплекс, охватывает основы следующих трех тем:

пожарной безопасности;

антитеррористической безопасности;

санитарно-гигиенической безопасности.

Для удобства пользования материалом выделено три раздела:

. Модуль тренировки по каждой теме, включающий в себя два тренажера.

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

Интерактивный тестовый тренажер - включает в себя тестовые вопросы по материалу интерактивного информационного тренажера и является логическим его продолжением. Обучающийся может не только изучить представленный материал, но и проверить, насколько изученное было верно понято и усвоено. Если самостоятельно сделать правильный выбор не удается, есть возможность посмотреть подсказку или же верный ответ.

. Проверка знаний - тестовые вопросы данного раздела могут использоваться в процессе обучения как для самопроверки, так и для проведения среза знаний, аттестации. Каждое тестирование представляет собой случайную выборку 25 заданий из банка более чем 100 вопросов.

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

. Нормативно-правовая база - данный раздел позволяет сконцентрироваться именно на правовой стороне вопроса комплексной безопасности образовательного учреждения.

К достоинствам данного программного продукта можно отнести:

наличие раздела нормативно-правовой базы. Знание правовой стороны вопроса обеспечения безопасности в образовательных учреждения не менее важно, чем знаний средств обеспечения безопасности. Это особенно важно для руководителей этих учреждений;

охват большого количества тем.

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

2.2 Emergency Fire Evacuation Simulation (симулятор эвакуации при пожаре, Vayersoft, CША, штат Флорида)

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

К достоинствам данного программного продукта можно отнести:

использование интерактивного окружения, реалистичной трехмерной графики;

комбинацию голоса и текста для выдачи инструкций, обеспечивающую усиление эффекта участия;

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

К недостаткам данного программного продукта можно отнести:

отсутствие блока теоретической информации;

отсутствие разделения режимов обучения и проверки знаний.


В настоящее время сотрудниками лаборатории «Программного и технического обеспечения» Центра ДО ТюмГНГУ создан прототип виртуальной лаборатории «Гидромашины и компрессоры», а также ведется разработка проекта виртуального нефтегазодобывающего куста. Отличительной особенностью разрабатываемых виртуальных тренажеров является возможность многопользовательского доступа, т.е. предусмотрена возможность выполнения работы не одним студентом, а группой. В некоторых ситуациях это является необходимым.

На данный момент прототип 3D тренажера позволяет производить следующие действия:

перемещение по виртуальному пространству (с учетом препятствий);

открытие / закрытие дверей;

управление любыми задвижками;

управление различными электрическими переключателями;

подъем / спуск по различным лестницам, прыжки;

влияние внешних факторов на «виртуальное здоровье» обучаемого (падения с большой высоты, попадание в зону высокой температуры и т.д.);

перемещение различных предметов и т.д.

Для создания 3D моделей применяются пакеты Discreet 3D Studio MAX и AliasWaveFront MAYA. Полученные 3D модели переводятся в формат, подходящий для приложений, использующих для вывода графики библиотеку OpenGL (Open Graphic Library).

К преимуществам данного продукта следует отнести:

высокую интерактивность процесса обучения: существует возможность перемещения по виртуальному пространству с видом от первого лица, взаимодействия с различными предметами в удобной форме (была протестирована демо-версия продукта);

возможность коллективного выполнения лабораторных работ;

большое разнообразие лабораторных работ, высокая детализация моделируемых объектов.

К недостаткам в некоторой степени можно отнести:

использование лишь низкоуровневых библиотек для вывода графики (OpenGL). Данный подход позволяет создать гибкое решение, но довольно сложен в реализации. На данный момент существует множество игровых «движков» - комплексных решений, автоматизирующих многие функции приложения трехмерной графики. К таким функциям относятся: загрузка моделей, текстур из множества форматов, работа с шейдерами (многие «движки» также имеют набор встроенных шейдеров), звуком, видео, анимацией, построение иерархии объектов в графическом редакторе, полная автоматизация процесса рисования объектов, легкая интеграция графической и логической составляющей приложения. Многие «движки» являются бесплатными (хотя бы в урезанной версии). Поэтому использование собственных средств автоматизации вывода графики, на мой взгляд, является нецелесообразным;

отсутствие возможности составлять перечень заданий лабораторной работы без участия программиста. Если возникает потребность в специфической лабораторной работе, она должна быть разработана на заказ.

В результате изучения существующих мультимедийных обучающих систем была получена следующая информация:

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

большинство систем в обязательном порядке поддерживают два режима работы: обучение и проверка знаний, - и содержат блок с теоретической информацией;

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


3. Реализация программного продукта

3.1 Выбор средств проектирования и разработки программного продукта

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

Для разработки наиболее независимых компонентов проекта: модуль для доступа к базе данных, логическая часть редактора сценариев и других использовалась среда разработки Microsoft Visual С# 2010 Express Edition. Это интегрированная среда разработки на языке C# под платформы .NET и Mono.

В качестве СУБД выбрана SQLite 3.

Для проектирования программного продукта использовались следующие инструменты:

AllFusion Process Modeler 7 (ранее Bpwin) - инструмент для моделирования, анализа, документирования и оптимизации бизнес-процессов. AllFusion Process Modeler 7 можно использовать для графического представления бизнес-процессов. Данное средство была использовано для построения IDEF0 диаграмм процесса разработки обучающего сценария с помощью разработанного инструментария;

Microsoft Visio - редактор диаграмм и блок-схем для Windows. Использует векторную графику для создания диаграмм. Данный инструмент использовался для создания UML-диаграмм: диаграмм компонентов для описания зависимостей между компонентами системы, диаграмм последовательностей для описания порядка работы пользователя в системе, - а также схемы базы данных.

3.2 Перечень реализованных требований ТЗ

В рамках дипломного проекта реализованы не все требования ТЗ. Для каркаса МИОС на данный момент реализованы все требования кроме следующих:

просмотр теоретических материалов и навигация по ним;

управление данными пользователей, теоретических материалов, результатов обучения;

получение справки по объектам сцены в режиме прохождения сценария.

Требования к редактору сценариев и прототипу МИОС для обучения правилам пожарной безопасности и действиям при обнаружении пожара реализованы полностью.

3.3 Разработка каркаса интерактивной мультимедийной обучающей системы и редактора обучающих сценариев

программный мультимедийный чрезвычайный пожарный

В данном разделе будут описаны процесс разработки, функционирование и структура каркаса МИОС и редактора обучающих сценариев. Описание каркаса будет представлено в контексте применения его в МИОС для обучения правилам пожарной безопасности и действиям при обнаружении пожара.

Описание процесса обучения

Обучение проходит в три этапа:

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

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

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

Структура теоретического материала

Теоретический материал имеет иерархическую структуру. Элемент этой структуры называется дидактической единицей. Каждая дидактическая единица включает название и содержание - форматированный текст и изображения. Не существует четкой классификации дидактических единиц. Она определяется учителем. Например, единицы верхнего уровня можно назвать разделами, единицы нижележащего уровня - темы, далее лекции или параграфы и т.п.

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

Структура обучающего сценария

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

Составляющие сценария описаны ниже.

Структура сцены

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

Обучаемый может взаимодействовать с объектом, только если он активен в данный момент. Активность объекта определяется только схемой сценария. Обычно активны только те объекты, которые нужно использовать для выполнения текущей задачи (активация других объектов может быть использована для провокации обучаемого на совершение неправильных действий, то есть использование ненадлежащих объектов). Существует индикация активности объекта, так чтобы пользователь знал, что его можно использовать. Так при наведении прицела - специального указателя, всегда отображающегося в центре экрана - или курсора мыши на активный объект, последний приобретает мерцающую красную подсветку, и рядом с ним возникает сообщение о возможности использования объекта.

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

Существуют специальные объекты - триггеры, это области на сцене. При попадании в них обучаемого выполняется некоторое действие, например, открываются двери лифта, происходит успешное завершение сценария (если обучаемый достиг точки эвакуации).

Реакцию на использование объектов будем называть поведением или логикой объектов. Поведение объектов, а также их графическое представление фиксированы.

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

Структура схемы сценария

Схема сценария содержит описание всех задач сценария: формулировка, условие выполнения, - и порядок их выполнения. Также схема определяет условия, когда сценарий успешно завершен и когда он провален.

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

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

Имеются выделенные состояния. Единственное начальное состояние, несколько успешных состояний (основное задание сценария выполнено), и несколько провальных состояний (основное задание сценария провалено). При переходе в успешное или провальное состояния, сценарий завершается.

Если возможно сразу несколько переходов, то все они выполняются разом. То есть если при переходе в новое состояние оказалось, что задача нового состояния уже выполнена, сразу происходит переход в следующее состояние.

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

На рисунке 3.1 проиллюстрирована структура схемы сценария.

Рисунок 3.1 - Структура схемы сценария (граф состояний)

Переходы между состояниями 1 и 2 иллюстрируют возможность циклического перехода.

Как видно из структуры схемы, в сценарии возможно несколько вариантов развития событий в зависимости от действий пользователя. Сценарий является нелинейным. Однако все ветви сценария заранее предусмотрены в его схеме.

Схемы сценария в отличие от сцен не являются фиксированными, они хранятся в базе данных. Для создания и редактирования схем и предусмотрен редактор сценариев.

С одной сценой может быть связано несколько схем - образуется несколько альтернативных вариантов сценария.

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

Приведем пример скрипта для условия перехода (текст представлен на русском языке для облегчения понимания, в действительности используется английский язык). Нам нужно выполнить задание: попытаться потушить пожар огнетушителем, в случае неудачи нужно срочно покинуть помещение. На сцене будут объекты «огонь» и «огнетушитель». Тогда условие перехода из состояния «Попытайтесь потушить пожар огнетушителем» в состояние «Покиньте помещение» может быть следующим: «вернуть (огнетушитель. использован) и (огнетушитель. запас_огнетушащего_вещества = 0) и (огонь. горит)». То есть переход осуществляется, если мы воспользовались огнетушителем и полностью израсходовали его запас огнетушащего вещества, а огонь продолжает гореть.

Ограничение по времени, уровень здоровья

На выполнение всех заданий сценария может быть отведено определенное время. Если обучаемый не уложится в это время, сценарий будет провален. Ограничение по времени указывается в схеме сценария.

Также виртуальный персонаж обучаемого (далее персонаж обучаемого) может «погибнуть». Например, из-за ожогов от огня или от нехватки кислорода. В этом случае сценарий также будет провален.

Таким образом, возможны три условия провала сценария: истечение времени, «гибель» виртуального персонажа обучаемого, переход сцены в провальное состояние.

Графический интерфейс пользователя в режиме прохождения сценария содержит информацию об оставшемся времени (счетчик времени) и уровне здоровья виртуального персонажа обучаемого.

Если сценарий будет провален, по его завершению будет выведена информация о причине провала.

Принципы работы обучающих сценариев в режимах демонстрации и проверки знаний

Прохождение сценария может выполняться в двух режимах: обучение и проверка знаний. В режиме обучения обучаемый должен изучить сценарий и подготовиться к проверке знаний. В режиме проверки знаний он проходит сценарий на оценку. Рассмотрим подробнее различия режимов.

Особенности режима обучения:

формулировка текущего задания показывается на экране;

нет ограничения на время выполнения сценария (однако счетчик времени продолжает работать, по истечении отведенного на сценарий времени, обучаемый будет уведомлен об этом);

персонаж обучаемого не может «погибнуть» (однако уровень здоровья может упасть до нуля, тогда обучаемый будет уведомлен о том, что он мог бы умереть в такой ситуации);

обучаемый может получить справку по объектам сцены.

Особенности режима проверки знаний:

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

если время, отведенное на выполнения сценария, истечет, сценарий будет провален;

если уровень здоровья персонажа обучаемого упадет до нуля, сценарий будет провален;

обучаемый не может получить справку по объектам сцены.

Интерпретатор скриптов

Как было сказано выше, для составления условий перехода и действий входа и выхода в схеме сценария был разработан скриптовый язык программирования и интерпретатор этого языка (следует сказать, что язык пока не получил имени).

Синтаксис данного языка является подмножество синтаксиса языка C#. По сути он является сильно урезанной версией языка С#. На нем нельзя объявить тип данных, глобальную переменную, функцию или процедуру. Каждый скрипт - это последовательность операторов, его можно считать безымянной функцией без параметров и с возвращаемым значением произвольного типа (или без возвращаемого значения). Скрипт для действия входа или выхода не возвращает значения, скрипт для условия перехода обязательно возвращает булево значение.

Синтаксис языка включает следующие элементы (запись элементов полностью аналогична языку С# и потому не приводится):

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

оператор объявление локальной переменной с присвоением начального значения;

оператор присваивания локальной переменной или свойству объекта выражения;

оператор вызова метода объекта;

оператор условного перехода;

оператор цикла с предусловием;

оператор досрочного выхода из цикла (break);

оператор возврата управления (return).

блок операторов. Область видимости переменной ограничена блоком, в котором она объявлена. Однако имя переменной может быть использовано только один раз в пределах скрипта. Все операторы скрипта можно считать объединенными в глобальный блок.

Для обращения к объектам сцены внутри скрипта интерпретатору нужно передать список ссылок на объекты и их имена. Также интерпретатору можно передать список описателей типов для возможности объявления переменных этих типов. Для доступа к членам объектов и создания объектов используется механизм рефлексии платформы.NET. Суть этого механизма заключается в том, что в период выполнения для каждого типа можно получить специальный объект - описатель типа, содержащий всю информацию о типе и методы для создания его экземпляров, обращения к его членам - методам и свойствам. Это и позволяет в период выполнения строить код для манипуляции объектами сцены. Детали реализации интерпретатора и его интеграции с остальными частями системы описаны в разделе 3.3.9.

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

Fire fire = burner. Burn(computer);. MaxEnergy = 5.5;. Emission = 40;. MinRadius = 0.7;. MaxRadius = 1.7;. MaxSmokeEnergy = 4;. SmokeEmission = 25;. NormalizedEnergy = 1;. FireEnergyLoss = 0.001;

Приведем также пример скрипта для условия перехода из задания «Позвоните пожарным» в задание «Покиньте помещение и закройте за собой дверь».

return phone. Used && (phone. LastNumber == «01»);

Скрипт возвращает «истину» если, объект «телефон» был использован, и последний набранный номер на нем «01».

Структура результатов обучения и проверки знаний, система оценки

Из результатов прохождения сценария обучаемый может получить следующую информацию:

дата и время начала прохождения;

название сценария;

режим прохождения: обучение или проверка знаний;

время, затраченное на прохождение;

время, затраченное на каждую из задач сценария;

статус: сценарий успешно пройден или сценарий провален (с указанием причины).

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

Описание пользовательского интерфейса

Пользовательский интерфейс в режиме главного меню

Главное меню предназначено для навигации между функциональными частями системы. Меню состоит из страниц. Каждая страница содержит кнопки возврата к предыдущей странице и выполнения основного действия, связанного со страницей (например, запуск обучающего сценария, или переход к следующей странице).

Опишем реализованные на данный момент страницы меню.

главная страница - предназначена для навигации по корневым блокам системы. Содержит следующие команды: переход на страницу выбора сценария в режиме обучения или проверки знаний, переход на страницу результатов обучения, переход на страницу редактора сценариев, переход на страницу настроек системы, выход из системы;

страница выбора сценария - предназначена для выбора сценария и запуска его прохождения. Содержит список доступных сценариев с описанием каждого из них;

страница настроек системы. На данный момент содержит единственную настройку - учитывать ли расстояние до объекта при его активации. Учет может быть отменен, если обучаемому трудно ориентироваться в виртуальном пространстве;

страница редактора сценариев - используется для запуска редактора сценариев, речь о котором пойдет ниже.

Пользовательский интерфейс в режиме прохождения сценария

Пользовательский интерфейс в режиме прохождения сценария содержит следующие элементы:

индикатор уровня здоровья персонажа обучаемого - представляет собой полоску, заполнение которой отражает процент оставшегося виртуального здоровья;

счетчик времени - представляет собой полоску, заполнение которой отражает процент оставшегося времени на прохождение сценария;

окно с формулировкой текущего задания;

область появления сообщений - предназначено для отображения сообщений о возможной гибели персонажа или об истечении времени в режиме обучения;

меню паузы - появляется по нажатию клавиши <Esc>, предназначено для досрочного завершения сценария и выхода в главное меню;

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

прицел, служащий для указания используемых объектов;

сообщение о возможности использования объекта, появляющееся при наведении курсора или прицела на объект, при условии, что персонаж обучаемого находится достаточно близко к объекту.

На рисунке 3.2 изображен фрагмент работы системы, иллюстрирующий вышеописанные элементы интерфейса.

Рисунок 3.2 - Пользовательский интерфейс в режиме прохождения сценария: 1 - счетчик времени, 2 - индикатор здоровья, 3 - окно с формулировкой текущего задания, 4 - прицел, 5 - сообщение о возможности использования объекта (в данном случае телефона), 6 - телефон, подсветка говорит о возможности использования этого объекта

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

Рисунок 3.3 - Пользовательский интерфейс в режиме прохождения сценария (показ окна с результатами прохождения сценария)

Порядок работы пользователя в обучающей системе

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

Рисунок 3.4 - Порядок работы пользователя в обучающей системе

Редактор сценариев

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

Следует сказать, что для редактирования схемы сценария может быть использовано любое средство администрирования реляционной СУБД. Но так как схема сценария структурно представляет собой ориентированный граф, было принято решение, разработать редактор сценариев.

Описание основных функций

Редактор сценариев выполняет следующие функции:

загрузка сценария из БД с проверкой целостности его структуры. Если данные, хранящиеся в БД некорректны, будет выведено соответствующее сообщение;

создание и редактирование сценария: добавление, удаление и редактирования задач, переходов;

сохранение сценария в БД с проверкой ограничений, налагаемых на структуру сценария;

удаление сценария.

Далее термины задача и состояние сцены используются как взаимозаменяемые.

Опишем свойства сценария, задач и переходов между задачами. Заполнение свойства обязательно, если не указано иное.

Сценарий имеет следующие свойства:

название - отображается при выборе сценария для начала обучения;

описание - разъяснение пожарной ситуации, действий, которые должен выполнить обучаемый (может быть не задано);

ограничение по времени (может быть не задано);

название сцены.

Задача имеет следующие свойства:

название - служит для удобства навигации между задачами в редакторе (может быть не задано);

текст;

действие входа (может быть не задано);

действие выхода (может быть не задано);

тип - обычная, успешная, провальная.

Переход между задачами имеет единственное свойство - условие перехода.

На структуру сценария налагаются следующие ограничения:

сценарий должен содержать одну и только одну стартовую задачу (начальное состояние). Стартовая задача - это задача, в которую нет ни одного перехода. Это необходимо для однозначного определения задачи, с которой начинается сценарий, а также для обеспечения связности графа задач;

сценарий должен содержать хотя бы одну успешную задачу;

запрещен переход задачи в саму себя;

запрещен переход из успешной или провальной задачи;

запрещено дублирование переходов;

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

Запрещено менять структуру сценария - состав задач, состав переходов (но не их свойства), если по данному сценарию есть результаты обучения.

Описание пользовательского интерфейса

Опишем основные элементы главного окна редактора сценариев:

командная панель - содержит главное меню и палитру компонентов. Главное меню включает в себя следующие команды:

) «Новый» - начать новый сценарий;

) «Сохранить» - сохранить изменения в текущем сценарии;

) «Сохранить как новый» - создать новый сценарий и записать в него содержимое текущего сценария. Текущий сценарий не изменяется. Созданный сценарий становится текущими. Команда полезна при создании сценария на основе существующего (создание по шаблону);

) «Открыть» - открыть существующий сценарий. При выборе команды появляется окно выбора сценария. Данное окно также содержит команду удаления сценария;

) «Выход» - закрыть редактор сценариев и вернуться в главное меню.

При выборе команд «Новый», «Открыть» и «Выход», если текущий сценарий был изменен, появляется диалог с предложением сохранить изменения.

Палитра компонентов позволяет создавать компоненты схемы сценария. На данный момент палитра содержит единственный компонент - «Задача» (добавление переходов будет описано ниже).

область схемы сценария - содержит представление схемы сценария в виде графа и выполняется следующие функции:

) изменение взаимного расположения задач путем «перетаскивания» их курсором мыши;

) вызов редактора свойств задачи, перехода или сценария;

) добавление перехода между задачами - осуществляется через указание задачи, из которой создается переход, и задачи, в которую создается переход.

редактор свойств - предназначен для отображения и редактирования свойств задачи, перехода или сценария. Содержит также команду для удаления указанных компонентов (при этом сценарий не может быть удален, если он еще не был сохранен в базу данных). Редактор отображает свойства выбранного компонента сценария. Для выбора любого компонента используется кнопка со знаком «+», расположенная рядом с этим компонентом. В каждый момент времени выбранным может быть только один компонент;

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

На рисунке 3.5 проиллюстрированы элементы главного окна редактора сценария.

Рисунок 3.5 - Главное окно редактора сценария: 1 - командная панель, 2 - главное меню, 3 - палитра компонентов, 4 - область схемы сценария, 5 - представление задачи (указанная задача выбрана), 6 - название задачи (цвет названия обозначает её тип: белый - обычная, зеленый - успешная, красный - провальная), 7 - текст задачи, 8 - кнопка выбора задачи, 9 - переход, 10 - кнопка выбора перехода, 11 - кнопка выбора сценария, 12 - редактор свойств (в данном случае свойств задачи), 13 - кнопка удаления компонента схемы сценария, 14 - статусная строка

Процесс разработки обучающих сценариев

Опишем процесс разработки обучающих сценариев с помощью разработанного инструментария. Результатом разработки являются одна сцена и несколько схем сценария, описывающих варианты развития одной чрезвычайной ситуации. В разработке участвуют: программист, 3D-моделлер, специалист по разработке ИТ-проектов. На рисунках 3.6 - 3.8 изображены IDEF0 диаграммы, описывающие этот процесс.

Поясним некоторые элементы диаграмм.

В требования заказчика могут входить:

подробное описание чрезвычайной ситуации: место действия, характер опасности и т.п.;

перечень навыков, правил, последовательностей действий, которые должен усвоить обучаемый с помощью сценариев;

примерное описание обучающих сценариев.

На основании этих данных, а также данных из предметной области специалист по разработке ИТ-проектов должен составить обучающие сценарии в текстовой форме.

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

Затем необходимо разработать объекты сцены, провести интеграцию сцены и схем сценариев, протестировать и отладить получившиеся сценарии. Стоит отметить, что в процессе разработки сцены графическая и логическая составляющая объектов могут разрабатываться параллельно 3D-моделлером и программистом.

















Проектирование и разработка основных компонентов

Под компонентами системы будем понимать единицы компиляции на платформе.NET - сборки (файлы с расширением.dll) и исполнимые файлы (с расширением.exe). Каждый компонент выполняет ряд связанных функций в системе и представляет собой совокупность классов на языке C#. В данном разделе будет приведено описание функций каждого компонента, перечня классов, входящих в компонент с описанием функций каждого, а также будет приведена диаграмма компонентов, отражающая зависимости между ними.

В процессе проектирования были выделены следующие компоненты:

Sike. FireSafety. StateMachine.dll - реализует представление схемы сценария в виде графа состояний, осуществляет переходы между состояниями;

Sike. FireSafety. Data.dll - реализует доступ к базе данных;

Sike. FireSafety. Scenario.dll - реализует объектную модель схемы сценария;

Sike. Scripting.dll - реализует интерпретатор скриптов;

Sike. FireSafety.exe - главный компонент, реализует меню, режим прохождения сценария, редактор сценариев (через использование Sike. FireSafety. Scenario.dll);

Sike. FireSafety. TestResultsViewer.exe - обозреватель результатов обучения и проверки знаний.

Компонент Sike. FireSafety. StateMachine.dll

Состоит из единственного класса - State, служащего для представления отдельного состояния в графе состояний.

Класс State содержит следующие свойства:

делегаты входного и выходного действия (делегатом в терминах языка C# называется метод обратного вызова) - методы, не принимающие параметров и не возвращающие значения;

ссылка на данные, связанные с состоянием - обычно это данные задачи сценария;

Класс State предоставляет следующие методы:

добавление перехода в другое состояние. Принимает в качестве параметров состояние и делегат условия перехода - метод, не принимающий параметров и возвращающий булево значение;

осуществление входа в данное состояние (выполняет действие входа);

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

Компонент Sike. FireSafety. Data.dll

Состоит из класса DataBase и классов, представляющих сущности базы данных.

Класс DataBase выполняет следующие функции:

установка, поддержание и разрыв соединения с базой данных;

выполнение запросов к базе данных. Для каждого запроса в классе содержится отдельный метод;

объектно-реляционное проецирование - строки таблиц при загрузке преобразуются в объекты соответствующих классов сущностей и возвращаются в виде обобщенных коллекций типа IEnumerable, параметризованных классом сущности. При сохранении данных происходит обратный процесс. Таким образом, интерфейс класса DataBase не раскрывает тот факт, что используется SQLite база данных или реляционная база данных вообще. При необходимости тип базы данных может быть легко изменен.

На рисунке 3.10 изображена схема базы данных.

Рисунок 3.10 - Схема базы данных

Опишем таблицы базы данных.

Таблица TheoryItems - дидактические единицы:

Name (строка) - отображаемое имя;

ContentPath (строка) - путь к содержанию единицы;

ParentID (целое число) - идентификатор родительской единицы;

Таблица TestItems - элементы проверки знаний:

Name (строка) - отображаемое имя;

Description (строка) - путь к файлу с описанием;

TypeID (целое число) - идентификатор типа элемента (0 - обучающий сценарий, остальные значения зарезервированы для других типов).

ObjectID (целое число) - идентификатор элемента проверки знаний (Scenarios.ID для сценариев);

TheoryItemID (целое число) - идентификатор дидактической единицы.

Таблица Scenarios - сценарии:

SceneName (строка) - имя сцены (Unity3d).

TimeLimit (вещественное число фиксированной точности) - ограничение по времени, сек.

Можно сказать, что таблица Scenarios наследуется от таблицы TestItems. Такая структура таблиц облегчает добавление новых типов элементов проверки знаний. Можно было объединить в таблице TestItems поля разных типов проверки знаний, однако, использование наследования приводит к более ясной структуре таблиц.

Таблица Tasks - задачи (состояния сцены):

Text (строка) - текст задачи;

ProgID (строка) - название задачи (используется только редактором сценариев);

ScenarioID (целое число) - идентификатор сценария;

Kind (целое число) - тип задачи (0 - обычная задача, 1 - успешная задача, 2 - провальная задача);

EnterAction (строка) - скрипт входного действия;

ExitAction (строка) - скрипт выходного действия.

Таблица TaskJumps - переходы между задачами (состояниями):

FromTaskID (целое число) - идентификатор задачи, из которой совершается переход;

ToTaskID (целое число) - идентификатор задачи, в которую совершается переход;

Condition (строка) - скрипт условия перехода.

Таблица TestResults - результаты обучения:

BeginTestDate (дата) - дата начала прохождения элемента проверки знаний;

Mode (целое) - режим прохождения (0 - обучение, 1 - проверка знаний);

TestItemID (целое число) - идентификатор элемента проверки знаний;

UserID (целое число) - идентификатор пользователя.

Таблица ScenarioTestResults - результаты обучения по сценариям (спецификация TestResults):

TestResultID (целое число) - идентификатор результата обучения;

IsUserDead (булево) - персонаж обучаемого погиб;

IsTimeout (булево) - время истекло.

Таблица TaskCompletings - информация о выполнении задач сценария:

Order (целое число) - порядковый номер задачи;

CompleteTime (вещественное число фиксированной точности) - время выполнения задачи, сек;

ScenarioTestResultID (целое число) - идентификатор результата обучения с помощью сценариев;

TaskID (целое число) - идентификатор задачи.

Учитывая, что одно и то же задание обучаемый может выполнять несколько раз, все попытки выполнения задания будут записаны в эту таблицу. Так как порядок выполнения строго не определен, используется поле Order.

Login (строка) - логин.

Password (строка) - пароль.

Логин и пароль используются для аутентификации пользователя в системе.

Компонент Sike. FireSafety. Scenario.dll

Реализует объектную модель схемы сценария, то есть предоставляет методы для доступа к структуре схемы сценария и её изменения.

Состоит из классов: Scenario, Task, TaskCollection, TaskJump, TaskJumpCollection.

Класс Scenario реализует основные функции компонента:

загрузка и сохранение схемы сценария;

проверка ограничений, накладываемых на структуру схемы сценария, во время загрузки и перед сохранением;

чтение и запись свойств схемы сценария;

доступ к коллекции задач схемы сценария - экземпляру класса TaskCollection;

проверка изменения схемы сценария со времени её последнего сохранения;

проверка, задействована ли схема сценария в обучении (в этом случае состав задач и переходов не может редактироваться, можно лишь изменять свойства схемы сценария, задач и переходов);

нахождение начальной задачи;

удаление схемы сценария по её уникальному идентификатору в базе данных.

Класс Task представляет задачу сценария и выполняет следующие функции:

чтение и запись свойств задачи;

доступ к коллекции переходов из данной задачи - экземпляру класса TaskJumpCollection.

Класс TaskJump представляет переход между задачами и выполняет следующие функции:

чтение и запись свойств перехода между задачами;

доступ к задаче, в которую осуществляется данный переход.

Классы TaskCollection и TaskJumpCollection представляют коллекции задач и переходов между задачами соответственно, выполняют следующие функции:

добавление элемента;

удаление элемента;

доступ к элементу по индексу или уникальному идентификатору в базе данных.

Компонент Sike. Scripting.dll

Данный компонент реализует интерпретатор скриптов. Следует отметить, что данный интерпретатор является интерпретатором компилирующего типа.

Основой функционирования интерпретатора скриптов являются следующие четыре этапа:

лексический анализ текста скрипта и его преобразование в список лексем;

синтаксический анализ списка лексем и его преобразование в древовидное представление;

семантический анализ полученного дерева и последующее построение на его основе исполняемого делегата;

исполнение построенного ранее делегата по запросу пользователя.

Общая схема функционирования интерпретатора скриптов представлена на рисунке 3.11.

На каждом из этапов работы интерпретатора скриптов используются следующие структуры данных.

Исходными данными для этапа лексического анализа является строка символов, содержащая исходный текст скрипта, а также описание лексем в формате XML. Результатом выполнения данного этапа является список объектов класса Token.

Класс Token содержит следующие свойства:

делегат, осуществляющий поиск лексемы в указанной строке, начиная с указанной позиции (используется на этапе лексического анализа);

позиция лексемы в тексте скрипта;

длина лексемы;

текст лексемы.

Рисунок 3.11 - Общая схема работы интерпретатора скриптов

Исходными данными для этапа синтаксического анализа является список объектов класса Token, полученный на этапе лексического анализа, а также описание грамматики в формате XML. Результатом выполнения данного этапа является дерево на основе класса SyntaxTreeNode. Объекты данного класса могут содержать в себе либо объекты класса Token, либо другие объекты класса SyntaxTreeNode.

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

Описываемый компонент состоит из следующих классов:

LexAnalyzer - осуществляет процедуру лексического анализа;

SyntaxAnalyzer - осуществляет процедуру синтаксического анализа;

Script - основной класс, выполняет функции компиляции и исполнения скрипта. Агрегирует классы LexAnalyzer и SyntaxAnalyzer для выполнения лексического и синтаксического анализа. Выполняет семантический анализ и построение исполняемого делегата.

Опишем последовательность работы с классом Script:

с помощью статичных свойств GlobalObjects и GlobalTypes задать объекты и типы, доступные всем скриптам;

создать экземпляр класса Script для построения очередного скрипта;

с помощью свойств экземпляра Objects и Types задать объекты и типы, доступные только данному скрипту;

-        задать значение свойства Text - текст скрипта;

вызвать метода Parse для компиляции скрипта, перехватить исключения, связанные с ошибками компиляции скрипта (ошибка может быть лексической, синтаксической или семантической);

вызвать метод Run для выполнения скрипта, метод возвращает результат работы скрипта, если в его тексте встречается оператор return, иначе null.

Опишем интеграцию интерпретатора скриптов с остальными компонентами системы.

Компонент Sike. FireSafety.exe использует компонент Sike. FireSafety. Scenario.dll для загрузки схемы сценария. Далее он строит граф состояний с помощью компонента Sike. FireSafety. StateMachine.dll. Делегаты действий входы и выхода, а также делегаты условий перехода класса State как раз и строятся с помощью интерпретатора скриптов. Предварительно компонент Sike. FireSafety.exe находит на сцене объекты, которыми должны манипулировать скрипты, и передает их классу Script.

Компонент Sike. FireSafety.exe

Является главным компонентом системы. Компонент может быть разбит на следующие подкомпоненты:

главное меню - предназначено для навигации между функциональными блоками системы;

плеер сценария - контролирует прохождение сценария, реализует пользовательский интерфейс режима прохождения сценария, осуществляет сохранение результатов прохождения;

загрузчик сценария - осуществляет загрузку и подготовку сценария к прохождению.

редактор сценариев - реализует пользовательский интерфейс для редактирования сценария с помощью компонента Sike. FireSafety. Scenario.dll.

Приведем описание только одного подкомпонента - плеера сценария, а именно его главного класса ScenarioManager - менеджера сценария.

Объект класса ScenarioManager является одним из объектов сцены и существует всегда в единственном экземпляре. После загрузки схемы сценария, описанной в подпункте 3.3.9.4, менеджер сценариев получает граф состояний и запускается на выполнение методом StartScenario. В данном методе менеджер сценариев сохраняет время начала прохождения сценария, активизирует пользовательский интерфейс режима прохождения сценария и выполняет вход в начальное состояние.

Перед просчетом каждого кадра «движок» Unity3d вызывает метод Update менеджера сценария. В данном методе выполняются следующие проверки: проверка на истечение времени на выполнение задач сценария, проверка на «гибель» персонажа обучаемого и проверка выполнения текущей задачи (через обращение к текущему состоянию - экземпляру класса State). Если оказывается, что время истекло или персонаж обучаемого погиб, и активен режим проверки знаний, прохождение сценария завершается. Если оказывается, что текущая задача выполнена, запоминается время выполнения задачи. Если новая текущая задача оказывается успешной или провальной прохождение сценария завершается. При завершении сценария менеджер производит сохранение накопленной статистики выполнения задач в базу данных и вызывает метод StopScenario, осуществляющий возврат в главное меню.

Компонент Sike. FireSafety. TestResultsViewer.exe

Компонент предназначен для просмотра результатов обучения и проверки знаний в табличном виде. По каждому результату прохождения сценария представляет информацию, указанную в пункте 3.3.4. Существует возможность фильтрации результатов по обучаемому и периоду прохождения. На рисунке 3.12 изображена UML диаграмма компонентов, иллюстрирующая зависимости между описанными компонентами.

Рисунок 3.12 - Диаграмма компонентов каркаса МИОС и редактора сценариев


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

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

Пожар в обоих сценариях начинается из-за возгорания персонального компьютера. Первый сценарий называется «Пожар в офисе. Тушение возможно», он демонстрирует ситуацию, когда пожар не очень силен и может быть потушен обучаемым с помощью огнетушителя. В случае если обучаемому не удалось это сделать, он должен позвонить в пожарную часть и эвакуироваться из здания, предварительно включив систему пожарной сигнализации. Второй сценарий называется «Пожар в офисе. Эвакуация». Данный сценарий является вариацией первого и использует ту же сцену. Согласно сценарию, пожар слишком силен, чтобы его можно было потушить огнетушителем, поэтому обучаемый должен сразу позвонить пожарным и далее эвакуироваться из здания. При попытке тушения пожара сценарий будет провален.

Процесс разработки сценария велся в соответствии с порядком, приведенным в пункте 3.3.8. Опишем только функцию А2-1. Подробное описание сценариев и их схемы приведены в приложении А.

Выделены следующие неинтерактивные объекты:

стены, пол, потолок коридоров, кабинета в котором начался пожар, лестничных спусков;

лампы для освещения коридоров и кабинета;

неинтерактивные двери в кабинеты, в которые не может попасть персонаж обучаемого;

лестницы: основная и запасная;

эвакуационные знаки, знак пожарной кнопки, огнетушителя;

предметы интерьера кабинета: стулья, столы, компьютеры (монитор, системный блок, мышь, клавиатура) и другие.

Модели как интерактивных, так и неинтерактивных объектов могут разрабатываться 3D-моделлером независимо от программиста.

Выделены следующие интерактивные объекты (с ними будут связаны задачи сценария):

двери из кабинета и на лестницу. Сами по себе не интерактивны, но содержат интерактивный объект - ручку, при использовании которой дверь открывается или закрывается;

окно в кабинете - поведение полностью аналогично двери;

электрощит - является композицией объектов дверка (поведение аналогично двери за исключением отсутствия ручки - дверка используется непосредственно), двухпозиционного переключатель и других частей, не являющихся интерактивными. При использовании переключателя включается или выключается электричество в кабинете. Флаг включенности электричества хранится непосредственно в объекте электрощит;

огнетушитель. При использовании огнетушителя он берется персонажем обучаемого. При нажатии клавиши «G» он выбрасывается. При нажатии клавиши «R» огнетушитель переходит в режим подготовки. В этом режиме передвижение и возможность осматриваться персонажа обучаемого блокируются. Использование объектов теперь происходит с помощью курсора мыши. Активируются подобъекты пломба и кольцо. При использовании пломбы она срывается, при использовании кольца оно выдергивается. После использования этих объектов огнетушитель переходит в нормальный режим и считается подготовленным. Передвижение и возможность осматриваться персонажа обучаемого разблокируются. Когда огнетушитель подготовлен и запас огнетушащего вещества не нулевой, при нажатии и удержании левой кнопки мыши огнетушитель распыляет огнетушащее вещество, расходуя его запас;

огнетушащее вещество, распыляется огнетушителем. При попадании частиц этого вещества на огонь происходит тушение последнего;

огонь. Содержит следующие параметры: стойкость к тушению, видимый размер, размер зоны поражения персонажа обучаемого, скорость роста, интенсивность испускания дыма, урон, наносимый персонажу обучаемого в единицу времени, текущая энергия, флаг горения для проверки в схеме сценария. При попадании персонажа обучаемого в зону поражения огня, персонаж теряет некоторое количество здоровья;

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

система пожарной сигнализации. Содержит флаг включенности для проверки в схеме сценария. Управляет объектами пожарная кнопка, сирена с пульсирующей ламой (модель Маяк12-КП). Интерактивными являются только пожарные кнопки. При использовании кнопки проигрывается анимация нажатия кнопки, и включается пожарная сигнализация;

лифт и кнопка вызова лифта. При использовании кнопки вызова, двери лифта открываются. При использовании кнопки спуска на первый этаж на панели управления лифтом двери лифта закрываются, и он считается использованным. Это проверяется в схеме сценария;

триггеры - регистрируют факт выхода из кабинета, отдаления от кабинета, прохождение лестничного пролета, попадания в точку эвакуации (зона перед выходом из здания).

оболочка персонажа обучаемого. Осуществляет перемещение персонажа по сцене, обзор сцены с видом от первого лица. Содержит методы для подбора и использования объектов, блокировки перемещения и обзора, определения текущего уровня здоровья, определения какой предмет держит персонаж в данный момент.

Разработанные каркас МИОС и редактор сценариев были апробированы при разработке МИОС для обучения правилам пожарной безопасности и действиям при обнаружении пожара и показали себя достаточно эффективными и гибкими. Каркас МИОС позволил автоматизировать процесс настройки обучающей системы и сосредоточится только на разработке обучающих сценариев. Редактор сценариев явился наглядным и удобным средством для разработки схем сценариев. Организация процесса разработки сценариев также показала себя с лучшей стороны. Можно отметить, что в процессе разработки возникла необходимость в выделении этапа оптимизации расчета графики.


Заключение

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

Для достижения поставленной цели были решены следующие задачи:

изучены аналогичные программные продукты, выявлены недостатки и достоинства данных продуктов, определены перспективные направления разработки;

разработан каркас МИОС, базирующийся на обучающих сценариях, предполагающих нелинейное прохождение, использование скриптовой системы;

разработан редактор сценариев, позволяющий специалисту в предметной области в удобной форме создавать обучающие сценарии;

описана организация процесса разработки обучающих сценариев при участии программиста, 3D-моделлера и специалиста по разработке ИТ-проектов;

с использованием вышеуказанного инструментария разработан прототип МИОС, предназначенной для обучения правилам пожарной безопасности и действиям при обнаружении пожара;

выполнена оценка эффективности разработанного инструментария и организации процесса разработки обучающих сценариев.

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

Разработанный инструментарий показал себя достаточно гибким и эффективным при создании прототипа.

В качестве перспективных направлений развития продукта можно отметить следующие (помимо реализации всех требований технического задания):

расширение возможностей взаимодействия с объектами сцены, повышение реалистичности объектов;

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

добавление возможности совместного прохождения сценариев несколькими обучаемыми. Например, для отработки совместных действий работников предприятия при тушении пожара.


Список источников

1. Голубятников И.В. Основные принципы проектирования и применения мультимедийных обучающих систем. - М: Машиностроение, 1999.

. Годов А.А. Моделирование электронного обучающего средства. / Сб. трудов Международ, науч. конф. «Математические методы в технике и технологиях» (ММТТ-2000). - СПб., 2000. - 166 с.

. СНиП 21-01-97. Пожарная безопасность зданий и сооружений / Госстрой России. - М.: ГУП ЦПП, 1997.

. СНиП 2.04.09-84. Пожарная автоматика зданий и сооружений. / Госстрой СССР. - М.: Государственный комитет по делам строительства, 1995 г.

. ППБ 01-03. Правила пожарной безопасности в РФ. - М., 1980.

6. Will Goldstone. Unity Game Development Essentials. - Packt Publishing, 2009.

. Unity3d Documentation. - http://unity3d.com/support/documentation.

. CSharp Language Specification Version 3.0. - Microsoft Corporation 1999-2007.

9. А.М. Бершадский. Формальные языки, грамматики и основы построения трансляторов: Учебное пособие. - Пенза: Изд-во Пенз. гос. ун-та, 2002.

. Александр Легалов. Варианты взаимодействия блоков транслятора. - http://www.softcraft.ru/.

. М. Черкашин. Журнал «Монитор» (Компилятор пишется так…). - http://www.codenet.ru/


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!