Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемkriconf.ru
1 Тема: Ресурсная система для MMO Докладчик: Сидоренко Дмитрий
2 О чем пойдет речь Компоненты проекта MMO. Требования, предъявляемые к ресурсной системе Ресурсная система в многоязыковой среде Методы борьбы с некорректными данными Ресурсная система на основе XML Жизненный цикл базы данных Что еще хотелось бы реализовать
3 Компоненты MMO проекта Сервер Клиент Инструментарий (редактор карт, model viewer, инструментарий массового редактирования, экспортеры)
4 Требования компонент Сервер 1.Некорректные данные не должны ронять сервер 2.Возможность написания сложных семантических проверок данных Клиент 1.Возможность in-place загрузки
5 Требования компонент Инструментарий 1.Возможность распределенной работы с БД 2.Быстрый поиск по системе ресурсов 3.Удобный механизм типизации 4.Возможность массового редактирования 5.Возможность работы аутсорсеров
6 Общие требования Отсутствие дублирования данных Объектная модель данных Консистентность Быстрая загрузка Human readable – особенно на этапе разработки, пока еще нет удобных инструментов редактирования
7 Зачем нужно много языков программирования Клиент на С++ Компилятор генерирует оптимизированный native код Позволяет выполнять низкоуровневые манипуляции с памятью Сервер на Java Современный язык (простой синтаксис, garbage collection, reflection) Работает на Linux Удобная среда разработки (Intellij IDEA) Редактор на C# современный язык (…) язык изначально ориентированный на быструю разработку GUI приложений Удобные языковые конструкции (delegates, events, properties)
8 Ресурсная система в многоязыковой среде Метаописание ресурса задается на java.Используется инструментарий генерации кода для других языков, используемых в проекте. Плюсы выбора java для метаописания: Простой синтаксис Есть reflection – стандартный способ получить runtime type information Есть удобные среды разработки (Intellij IDEA) Есть аннотации – декларативные элементы языка
9 Генерация кода по метаописанию Resource.java dbcodegen Resource.cs С# компилятор Editor.exe Resource.h Resource.cpp C++ компилятор Game.exe
10 Борьба с некорректными данными Три рубежа обороны редактор (карт, спелов, квестов и т.д.) коммит хук в системе контроля версий подсистема десериализации ресурсов в игровом коде
11 Проверки ограничения диапазона Для примитивных типов данных можно задавать ограничение на значение. Ограничение проверяется на всех 3-х рубежах защиты. public class AstralShip extends Resource maxValue= f) private float maxValue=30) private int private AstralTurret [] turrets; }
12 Скажем нет 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(); }
13 Default or not default Значения по умолчанию задаются в описателе ресурса. Для некоторых полей значение по умолчанию не имеет смысла. Такие поля требуют явного задания значений. public class Mob private float thickness= private String private VisualModel model; }
14 Более сложные проверки Можно задавать условия, проверяемые не для одного, а для целой группы объектов.
15 Ресурсная система на основе XML Объекты хранятся в отдельных XML файлах Плюсы 1.Иерархическая структура 2.Использование стандартных XML parsers для десериализации 3.Human readable. Возможность редактировать в любом xml редакторе и даже в простом текстовом редакторе 4.Возможность распределенной работы Минусы 1.Сложность массовой обработки 2.Много мелких файлов тормозит файловую систему 3.Дублирование данных
16 Inlining - встраивание нескольких мелких объектов в один XML файл Многие файловые системы не оптимизированы для большого количества маленьких файлов При хранении большого количества маленьких файлов в ФС метаинформация занимает больший объем, чем полезные данные
17 Inlining - встраивание нескольких объектов в один XML файл Можно так: Но если объекты маленькие, лучше так: AstralMissile 10
18 Дублирование данных AstralMissile1.xml AstralMissile2.xml AstralMissile3.xml AstralMissile4.xml
19 Использование прототипов для удаления дублирования данных AstralMissilePrototype.xml AstralMissile1.xml AstralMissile2.xml 15 AstralMissile3.xml 15 AstralMissile4.xml 0.01
20 Удобство редактирования Spell01Name.txt 4 35
21 Массовое редактирование
22 Поиск по системе ресурсов
23 Жизненный цикл базы данных
24 Рефакторинг данных Относительно простые рефакторинги: удаление поля переименование поля переименование типа Сложные рефакторинги: нужно писать конвертор данных
25 Generics в ресурсной системе
26 Вопросы? Сидоренко Дмитрий
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.