210 likes | 372 Vues
Технологии создания многоплатформенного игрового движка. Максим Строев. Темы обсуждения. Классификация платформ Обзор средств разработки Обзор аппаратных особенностей Особенности представления графических и звуковых данных. Темы обсуждения. Поддержка компиляторами стандарта С++
E N D
Технологии создания многоплатформенного игрового движка Максим Строев
Темы обсуждения • Классификация платформ • Обзор средств разработки • Обзор аппаратных особенностей • Особенности представления графических и звуковых данных КРИ 2004
Темы обсуждения • Поддержка компиляторами стандарта С++ • Правила кодирования • Статический и динамический полиморфизм • Применение механизма свойств (traits) при создании многоплатформенных библиотек КРИ 2004
Классификация платформ Игровые платформы • PC, Playstation, Xbox, GameCube и т.д. • Наличие мощных аппаратных графических и звуковых подсистем • Наличие специализированного API для создания игр КРИ 2004
Классификация платформ Универсальные платформы • PDA (PocketPC, Palm) • Отсутствие API для создание игр • Сложность реализации высококачественного вывода графики и звука КРИ 2004
Обзор средств разработки GCC/EGCS • Стандартизированность использования • Богатый вспомогательный инструментарий • Хорошая поддержка С/С++ (исключение: EGCS) • Бесплатность и открытость развития • Плохое тестирование и слабые оптимизационные возможности для «непопулярных» платформ КРИ 2004
Обзор средств разработки RedHat GNUPro Developer Tools • Стабильность разработки и тестирования • Стандартизованность использования • Богатый вспомогательный инструментарий • Поддержка большого количества embedded систем • Высокая стоимость тех. поддержки RedHat и обновлений КРИ 2004
Обзор средств разработки Metrowerks CodeWarrior Development Studio • Хорошая поддержка С/С++ • Специфическая среда разработки • Коммерческий КРИ 2004
Обзор средств разработки Microsoft eMbedded Visual C++ • Плохая поддержка языка С++ • Специфическая среда разработки (но: поддержка makefile) КРИ 2004
Обзор аппаратных особенностей Что следует учитывать при разработке? • Endianess (big-endian, little-endian) • Запись бинарных данных в одном endian, чтение на платформе с другим КРИ 2004
Обзор аппаратных особенностей Что следует учитывать при разработке? • Endianess (big-endian, little-endian) • Запись бинарных данных в одном endian, чтение на платформе с другим • Разрядность фундаментальных типов данных С++ КРИ 2004
Обзор аппаратных особенностей Что следует учитывать при разработке? • Endianess (big-endian, little-endian) • Запись бинарных данных в одном endian, чтение на платформе с другим • Разрядность фундаментальных типов данных С++ • Выравнивание (alignment) • Требования и рекомендации • Natural alignment requirements КРИ 2004
Особенности представления графических и звуковых данных Представление: • внутренние • внешнее Внутренние представление: • «рефлексивное» представление • внешнее описание прозрачности КРИ 2004
Статический и динамический полиморфизм Динамический полиморфизм • Механизмы наследования и виртуальных функций • Тип выражения определяется во время исполнения КРИ 2004
Статический и динамический полиморфизм Статический полиморфизм • Параметризация одного типа другим • Реализуется на этапе компиляции • Специализация шаблонов Почему важен? На этапе компиляции известны типы реализаций для целевой платформы. КРИ 2004
Механизм свойств (traits) Свойства (traits) являются множеством связанных типов и функций для применения данных типов. Как это работает? КРИ 2004
Механизм свойств (traits) Использование типов-тэгов для определения платформы. КРИ 2004
Механизм свойств (traits) Реализация класса Mutex для нескольких платформ c применением динамического полиморфизма. КРИ 2004
Механизм свойств (traits) Недостатки: • Необходимость «фабрики реализаций» • Потеря оптимизации из-за наличия виртуальных вызовов • Ограничение предоставляемых возможностей объявленным интерфейсом • Отсутствие необходимости в динамическом полиморфизме Реализация класса Mutex для нескольких платформ c применением динамического полиморфизма. КРИ 2004
Механизм свойств (traits) Реализация класса Mutex для нескольких платформ c применением статического полиморфизма. КРИ 2004
Реализация класса Mutex для нескольких платформ c применением статического полиморфизма. Механизм свойств (traits) КРИ 2004