2.5d игры и особенности разработки...
DESCRIPTION
TRANSCRIPT
2.5D игры и особенности разработки многопользовательских игр
Полушкин Глеб (SM&Partners)
Клиентские платформы●Adobe Flash Platform (Adobe Flash player)
●Unity3D (Unity Web player)
●Adobe Director (Adobe Shockwave player)●Microsoft WPF (Microsoft SilverLight).
Выбор для 2.5D игрОбычно для многопользовательских 2.5D браузерных игр выбирается Flash
Platform. C её хорошими характеристиками и транспортом - http, XMLSockets, RTMP* протоколы
Серверу оставьте транспорт сообщений и данных
Остальное отдавайте клиенту:
● Построение сцен 2.5D и сортировки объектов на сцене
● Поиск пути● Логика игры
Распределение логики между клиентом и сервером
Допустимые упрощения в построении игрового мира
Упрощения графики игрового мира● Упрощайте всё что можно● Следите за количеством точек в векторной графике● Используйте оптимизацию растра
Упрощения допустимые для редактирования
Игровой мир сталкивается с самым непредсказуемым создателем – пользователем:
● Пользователь захочет выставить все доступные вещи
● Пользователь обязательно будет ставить вещи мешающие другим
● Пользователь обязательно найдёт все баги
Решение для редактора -Редактор должен быть таким
же игровым элементом
Метод обоснованного обмана пользователя
Зачем обман – экономим ресурсы
Но важно знать кого именно мы обманываем. Кто наш пользователь?
Кто наш пользователь?Можно узнать это из:
● его профиля, с персональными данными,
● профилирующих тестов
● теста производительности его компьютера● GeoIP● анализа поведения пользователя внутри игры
Способы обоснованного обмана 1. Отвлечение внимания
2. Уговоры и юмор
3. Поощрение
4. Скрытие подробностей
5. Безграничные возможности
6. Введение третьего властного лица в игру
7. Красивые персонажи
Пользователь в игре уже настроен на то что его обманут в игровом
процессе
Персонажи - как не испортить ими идеальный игровой мир
Оценка способов сборки персонажейЧто такое миллион персонажей?
- по 8 вариантов вещей на место получаем 2пола*5мест^8вещей = 781250 уникальных персонажей ~1 миллион
- по 9 вариантов вещей на место получаем 2пола*5мест^9вещей = 3906250 уникальных персонажей ~3 миллионов
Критерии выбора способа сборкиКачественные характеристики:
- Качество персонажа
- Реалистичность и плавность движений персонажа
Количественные характеристики:
- Количество классов/полов/рас
- Насколько живой персонаж - как много у него движений
- Скорость интернета потенциального пользователя игры
Ручная сборкаОтрисовка каждого варианта персонажа руками в отдельности
● Плохие количественные характеристики
● Хорошие качественные характеристики
● Подходит только для игр с совсем небольшим количеством вариантов персонажей. Иначе способ даёт огромные объёмы рутины для художников и аниматоров
Клиентская сборка векторного персонажа
Отрисовка руками скелетной анимации и каждой вещи в векторе. Далее клиентом натягивание векторных вещей на скелет
● Хорошие количественные характеристики
● Средние качественные характеристики
● Чем сложнее скелетная анимация, тем меньше клиент может позволить себе одновременных анимаций
Серверная сборка векторного персонажа
Отрисовка руками скелетной анимации и каждой вещи в векторе. Далее сервером натягивание векторных вещей на скелет
● Хорошие количественные характеристики
● Средние качественные характеристики
● Чем сложнее скелетная анимация, тем меньше клиент может позволить себе одновременных анимаций, но больше чем при клиентской сборке
Клиентская сборка растрового персонажа
Отрисовка руками скелетной анимации и каждой вещи в растре. Далее клиентом натягивание растровых вещей на скелет
● Хорошие количественные характеристики
● Плохие качественные характеристики
● Чем сложнее скелетная анимация, тем меньше клиент может позволить себе одновременных анимаций
Серверная сборка растрового персонажа
Моделинг 3D художником и аниматором персонажа с одетыми вещами. Сервером выбирается нужные вещи, рендерится и клиенту выдаётся нужный персонаж
● Хорошие количественные характеристики
● Лучшие качественные характеристики
● При проигрывании анимации большого числа персонажей мы теряем только оперативную память. Процессор занят проигрыванием только обычных кадров анимации без особых нагрузок - сменой картинок.
Дешевая серверная растровая сборка
● Модель – 3DMax● Конвертер в blender – max2blender● Серверный рендер – blender+cmb-render, на выходе cmb файл c покадровай растровой анимацией вещи с картой высот
● Сборщик – smtool + cmb-combine, на выходе анимация swf из нужных вещей и кадров
Увеличение количества вещей:
сводится к изменению blender модели
Плюсы:
- Производительность
Сборка новой незакешированной swf - 1 секунда на 100 кадров, при 5ти одетых вещах
- Стоимость- 4 недели системного разработчика
Минусы:
- blender использует рендер без какой либо аппаратной графической поддержки - рендер cmb долгий процесс.
Выбор метода сборки● Малое количество вещей – ручная сборка
● Несложные, с малым количеством деталей персонажи – клиентская векторная сборка
● На сложных персонажах выбираем серверную растровую сбоку. Мы жертвуем скоростью загрузку в пользу реалистичности.
Масштабируемостьсерверной части
Игровой сервер? Разрабатывать свой или использовать готовый? Вопрос рентабельности и масштабности проекта. В любом случае нам нужен сервер с высокими показателями стабильности и масштабируемости. Мы рассматриваем игровой сервер, как некий уже рабочий отлаженный программный продукт.
Общие возможности SmartFoxServer по нагрузкам
Создание комнаты:
● Одновременных подключений: 5000
● Скорость подключений пользователей: 10 клиентов в секунду
● Создано комнат: 1000
● Загрузка канала: 55-60Мбит/с● Загрузка процессора: 5-6%● Потеряных сообщений: 0
Создание комнаты 2 - критическая нагрузка:
● Одновременных подключений: 7500
● Скорость подключений пользователей: 10 клиентов в секунду
● Создано комнат: 1500● Загрузка канала: ~86Мб/с● Загрузка процессора: 18-20%● Потеряных сообщений: ~12К
Атака личными сообщениями:
● Одновременных подключений: 20000
● Скорость подключений пользователей: 10 клиентов в секунду
● Всего комнат: 1● Загрузка канала: ~28Мб/с● Загрузка процессора: 22-24%● Потеряных сообщений: 0
Вывод: высокая стабильность и масштабируемость
Дополнительные данные тестирования
http://www.smartfoxserver.com/products/benchmarks.htm
Кластер с общей базой данных
Кластерное решение от Terracotta
Решение — сетевая оперативная память
Дополнительная информация:http://www.smartfoxserver.com/download/SmartFoxServer-Clustering.pdfhttp://en.wikipedia.org/wiki/Terracotta_Clusterhttp://www.infoq.com/articles/open-terracotta-intro
SmartFoxServer Amazon EC2 AMIУ SmartFoxServer есть образ слепок системы Ubuntu 7.04 с предустановленным
SmartFoxServer PRO 1.6.3 с разработческой лицензией под Amazon EC2.
Данные по слепку системы● http://www.smartfoxserver.com/labs/ami/● http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1903&categoryID=101