Тема: Ресурсная система для MMO Докладчик: Сидоренко Дмитрий.

Презентация:



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

Реализация концепции построения и формирования отраслевой системы государственного учета, регистрации и мониторинга (ОСГУРМ) информационных ресурсов сферы.
Интеллектуный редактор Инфологических схем баз данных.
Тема 5. Введение в среду визуального программирования Borland Delphi 7.0.
ФОРС-Центр Разработки Подсистема «Право». Подсистема «Право» предназначена для создания и ведения ведомственной базы данных электронных документов нормативно-правовой.
1 © Luxoft Training 2013 Модуль 8 Введение Задачи аннотаций Стандартные аннотации Создание собственных аннотаций 8-1 Аннотации.
Лекция 3 Принципы объектно- ориентированного программирования.
Эффективная разработка отчётов на платформе.NET Александр Федяшов Fast Reports Inc.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
Программа для моделирования IDEF0 диаграмм «Ide-editor» Исполнители: Насонов А.А. Куц Д.В. Заводовский В.Б. Шалыгина М. М.
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 1. Средство для задания.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Визуальный редактор инфологических схем баз данных.
Лекция 5 Способы конструирования программ. Основы доказательства правильности.
Лекция 31. Динамическая информация о типе Красс Александр СПбГУ ИТМО, 2009.
Лекция 21. Шаблоны (часть 1) Красс Александр СПбГУ ИТМО, 2008.
Участники команды : Система управления ЖКХ Куратор проекта : Проект:Проект: Коротков Игорь Курбонов Сухроб Артемьев Артём Терновский Алексей Шеметун Елена.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Факультет инноваций и высоких технологий Московский физико-технический институт.
Транксрипт:

Тема: Ресурсная система для MMO Докладчик: Сидоренко Дмитрий

О чем пойдет речь Компоненты проекта MMO. Требования, предъявляемые к ресурсной системе Ресурсная система в многоязыковой среде Методы борьбы с некорректными данными Ресурсная система на основе XML Жизненный цикл базы данных Что еще хотелось бы реализовать

Компоненты MMO проекта Сервер Клиент Инструментарий (редактор карт, model viewer, инструментарий массового редактирования, экспортеры)

Требования компонент Сервер 1.Некорректные данные не должны ронять сервер 2.Возможность написания сложных семантических проверок данных Клиент 1.Возможность in-place загрузки

Требования компонент Инструментарий 1.Возможность распределенной работы с БД 2.Быстрый поиск по системе ресурсов 3.Удобный механизм типизации 4.Возможность массового редактирования 5.Возможность работы аутсорсеров

Общие требования Отсутствие дублирования данных Объектная модель данных Консистентность Быстрая загрузка Human readable – особенно на этапе разработки, пока еще нет удобных инструментов редактирования

Зачем нужно много языков программирования Клиент на С++ Компилятор генерирует оптимизированный native код Позволяет выполнять низкоуровневые манипуляции с памятью Сервер на Java Современный язык (простой синтаксис, garbage collection, reflection) Работает на Linux Удобная среда разработки (Intellij IDEA) Редактор на C# современный язык (…) язык изначально ориентированный на быструю разработку GUI приложений Удобные языковые конструкции (delegates, events, properties)

Ресурсная система в многоязыковой среде Метаописание ресурса задается на java.Используется инструментарий генерации кода для других языков, используемых в проекте. Плюсы выбора java для метаописания: Простой синтаксис Есть reflection – стандартный способ получить runtime type information Есть удобные среды разработки (Intellij IDEA) Есть аннотации – декларативные элементы языка

Генерация кода по метаописанию Resource.java dbcodegen Resource.cs С# компилятор Editor.exe Resource.h Resource.cpp C++ компилятор Game.exe

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

Проверки ограничения диапазона Для примитивных типов данных можно задавать ограничение на значение. Ограничение проверяется на всех 3-х рубежах защиты. public class AstralShip extends Resource maxValue= f) private float maxValue=30) private int private AstralTurret [] turrets; }

Скажем нет NullPointerException public class AstralShip private AstralMissile [] missiles; public static class AstralMissile { public void launch() { } public class MissileLauncher { public void AstralShip.AstralMissile [] missiles){ for (AstralShip.AstralMissile missile:missiles){ missile.launch(); }

Default or not default Значения по умолчанию задаются в описателе ресурса. Для некоторых полей значение по умолчанию не имеет смысла. Такие поля требуют явного задания значений. public class Mob private float thickness= private String private VisualModel model; }

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

Ресурсная система на основе XML Объекты хранятся в отдельных XML файлах Плюсы 1.Иерархическая структура 2.Использование стандартных XML parsers для десериализации 3.Human readable. Возможность редактировать в любом xml редакторе и даже в простом текстовом редакторе 4.Возможность распределенной работы Минусы 1.Сложность массовой обработки 2.Много мелких файлов тормозит файловую систему 3.Дублирование данных

Inlining - встраивание нескольких мелких объектов в один XML файл Многие файловые системы не оптимизированы для большого количества маленьких файлов При хранении большого количества маленьких файлов в ФС метаинформация занимает больший объем, чем полезные данные

Inlining - встраивание нескольких объектов в один XML файл Можно так: Но если объекты маленькие, лучше так: AstralMissile 10

Дублирование данных AstralMissile1.xml AstralMissile2.xml AstralMissile3.xml AstralMissile4.xml

Использование прототипов для удаления дублирования данных AstralMissilePrototype.xml AstralMissile1.xml AstralMissile2.xml 15 AstralMissile3.xml 15 AstralMissile4.xml 0.01

Удобство редактирования Spell01Name.txt 4 35

Массовое редактирование

Поиск по системе ресурсов

Жизненный цикл базы данных

Рефакторинг данных Относительно простые рефакторинги: удаление поля переименование поля переименование типа Сложные рефакторинги: нужно писать конвертор данных

Generics в ресурсной системе

Вопросы? Сидоренко Дмитрий