Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемГригорий Денисов
1 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР LUA Отладчик для MS Visual Studio Докладчик: Дамир Тенишев Presentation/Presenter Title Slide
2 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Зачем нам скрипты? Возможность передать описание игровой логики дизайнерам. Высокоуровневый, подверженный частым изменениям код. Скрипты удобно использовать для Game Logic, AI, GUI и т.п. Сделать разработку быстрее и, следовательно, дешевле.
3 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Работаем со скриптами Часто используются пользователями, не имеющими специальной подготовки. Требуется много мелких изменений. Изменения требуют проверки. В существующем коде могут быть обнаружены ошибки В существующем коде могут быть обнаружены ошибки Нужно иметь возможность быстро разбираться в процессах, происходящих в системе.
4 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Как отлаживать скрипты Визуальный просмотр текстов и сила ума. Все функции и переменные покрыты детальным логом. Отладчик: контроль исполнения; просмотр стека вызовов; просмотр и модификация и переменных.
5 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Виды отладчиков Готовые языковые среды с отладчиком, но они позволяют работать только со встроенными языковыми средствами. Собственные отладчик и редактор текстов, интегрированные с движком. Комбинированный вариант: написание плагинов расширения для существующих интегрированных сред.
6 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Visual Studio IDE Известная и привычная среда разработки. Управление проектами. Текстовый редактор. Возможность использовать системы контроля версий. Инфраструктура отладки, совместимая со многими языками (С++, C#, HLSL, SQL,..). Дополнительные плагины (LuaLite - syntax highlighting).
7 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР LUA отладчик в VS Подсоединение/отсоединение к процессу: Attach, Detach. Контроль исполнения: Break, Continue, Step In, Step Out. Просмотр виртуальных машин исполнения (окно Threads). Назначение точек останова / Breakpoints. Просмотр глобальных и локальных переменных (окно Watch). Просмотр значений переменных под курсором. Синхронизация с исходными кодами (lua файлы). Вывод окна с ошибками исполнения.
8 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Что нужно иметь ? Visual Studio 2005 SDK, свободно доступен на Обзор архитектуры отладчика: MSDN: Visual Studio Debugging Extensibility. SDK содержит исчерпывающий пример отладчика скриптового языка: «Text Interpreter».
9 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Модули отладчика Регистратор Debug-метрик VS, необходим для информирования VS о существовании LUA DebugEngine. Регистратор LUA программы в системе. COM-фабрика, для создания DebugEngine. Набор интерфейсных объектов для общения с VS. Блок обработки сообщений обеспечивает работу COM-взаимодействий. Контроллер исполнения: умеет работать с виртуальными машинами, останавливает и запускает исполнение, получает информацию о стеке, запрашивает переменные и их значения, контролирует точки останова.
10 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Регистрация метрик Информация о DebugEngine вносится в реестр, чтобы Visual Studio узнала про новый тип отладчика и могла его отобразить в окне Processes const char * szRegPath = "Software\\Microsoft\\VisualStudio\\8.0"; SetMetric(metrictypeEngine, __uuidof(Engine), metricName, L"LUA", false, szRegPath); SetMetric(metrictypeEngine, __uuidof(Engine), metricCLSID, CLSID_Engine, false, szRegPath); SetMetric(metrictypeEngine, __uuidof(Engine), metricPortSupplier, CLSID_LocalPortSupplier, false, szRegPath );
11 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Окно Processes
12 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Регистрация программы Программу надо зарегистрировать в системе через CLSID_ProgramPublisher: HRESULT hr = m_srpProgramPublisher.CoCreateInstance(CLSID_ProgramPublisher); if ( FAILED(hr) ) { ATLTRACE("Failed to create the program publisher: 0x%x.", hr); return; } hr = m_srpProgramPublisher-> PublishProgramNode(static_cast (this)); if ( FAILED(hr) ) { ATLTRACE("Failed to publish the program node: 0x%x.", hr); m_srpProgramPublisher.Release(); return; } PublishProgramNode(static_cast (this)); if ( FAILED(hr) ) { ATLTRACE("Failed to publish the program node: 0x%x.", hr); m_srpProgramPublisher.Release(); return; }">
13 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР COM-фабрика Необходимa для того, чтобы VS создала Debug Engine через CoCreateInstance. DebugEngine находится в одном процессе с виртуальной машиной. Для реализации регистрации используется стандартный класс CAtlExeModule из библиотеки ATL. Регистрация фабрики производится только на время работы приложения, без занесения данных в реестр.
14 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Интерфейс для VS (1) Набор интерфейсных Com объектов: IDebugEngine2 – обеспечивает контроль за сеансом отладки IDebugProgramNode2 – через данный класс процесс регистрируется в операционной системе IDebugProgram2 – представление отлаживаемого процесса для VS IDebugStackFrame2 – представление информации о состоянии стека в VS IDebugThread2 – представление информации о свойствах нитки исполнения (в нашем случае отдельной LUA машины) IDebugExpressionContext2, IDebugProperty2, IDebugExpression2 – предоставление в VS информации о значении переменных IDebugPendingBreakpoint2 – представление точки останова
15 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Интерфейс для VS (2) Набор Debug Events для передача событий в VS: IDebugEngineCreateEvent2 – создана Debug Engine IDebugThreadCreateEvent2 – создана нитка исполнения (у нас представляет отдельную машину исполнения LUA) IDebugThreadDestroyEvent2 – закончила работу нитка исполнения (у нас представляет отдельную машину исполнения LUA) IDebugBreakEvent2 – программа остановлена (например, при обработке Break All) IDebugBreakpointBoundEvent2 – точка останова успешно установлена IDebugBreakpointEvent2 – сработала точка останова IDebugExceptionEvent2 – возникла ошибка исполнения Все Events имеют параметры, указатели на интерфейсы: IDebugProgram2, IDebugThread2, IDebugBoundBreakpoint2, которые VS использует для получения информации об отлаживаемом процессе.
16 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Контроллер исполнения Инкапсулирует скриптовые виртуальные машины. Использует стандартный интерфейс библиотеки LUA. Требуется зарегистрировать все машины исполнения (нужно отслеживать все lua_newstate/lua_close). LUA код должен быть скомпилирован с отладочной информацией (имя файла, строки). Управление исполнением через механизм хуков (lua_sethook, вызов внешнего callbackа на событиях: Execute Line, Call, Return). Доступ к стеку (lua_getstack предоставляет доступ ко всем функциям в стеке). Запрос информации по объектам: lua_getinfo. Доступ к переменным: lua_getlocal, lua_setlocal. Перехват ошибок LUA-программы посредством hooka.
17 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Сценарий работы На старте движка информация о наличии LUA программы публикуется в системе. При попытке подсоединиться к отлаживаемому процессу VS создает в нашем процессе DebugEngine. Регистрация виртуальных машин исполнения в контроллере исполнения и в VS. Начинается прием управляющих сигналов от VS в контроллер исполнения : DebugBreak;Execute;SetBreakPoint;…
18 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Как это выглядит?
19 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Недостатки отладчика Отладчик не поддерживает параллельную отладку в режиме Native, это связано с тем, что (для простоты) DebugEngine располагается в отлаживаемом процессе, и при остановке процесса через Native, DebugEngine блокируется, так как модуль обмена сообщениями не получает управления. С отладчиком мы написали очень много скриптового кода, 5 Мb LUA.
20 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Что дальше? Отладка для любых языков, где есть возможность управлять работой виртуальной машины. Реализовать Native interoperation.
21 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Вопросы … ? ? ?
22 Апрель КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР Parallax Arts Studio, Санкт-Петербург Адреса для тех, кому стало интересно, что дальше… PARALLAX Website Приходите к нам – вместе мы сделаем больше ! Контакты © Parallax Arts Studio, Inc. All rights reserved. This presentation is for informational purposes only. Parallax makes no warranties, express or implied, in this summary.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.