Работа с графической подсистемой (Lecture 10 – Graphics)
2.5D игры и особенности разработки многопользовательских игр
1. 2.5D игры и особенности
разработки
многопользовательских игр
Полушкин Глеб (SM&Partners)
2. Клиентские платформы
●
Adobe Flash Platform (Adobe Flash player)
●
Unity3D (Unity Web player)
●
Adobe Director (Adobe Shockwave player)
●
Microsoft WPF (Microsoft SilverLight).
3. Выбор для 2.5D игр
Обычно для многопользовательских 2.5D браузерных игр выбирается Flash
Platform. C её хорошими характеристиками и транспортом - http, XMLSockets,
RTMP* протоколы
4. Серверу оставьте транспорт сообщений и данных
Остальное отдавайте клиенту:
●
Построение сцен 2.5D и сортировки объектов на сцене
●
Поиск пути
●
Логика игры
Распределение логики между
клиентом и сервером
6. Упрощения графики игрового мира
●
Упрощайте всё что можно
●
Следите за количеством точек в векторной графике
●
Используйте оптимизацию растра
7. Упрощения допустимые для
редактирования
Игровой мир сталкивается с самым непредсказуемым создателем –
пользователем:
●
Пользователь захочет выставить все доступные вещи
●
Пользователь обязательно будет ставить вещи мешающие другим
●
Пользователь обязательно найдёт все баги
10. Кто наш пользователь?
Можно узнать это из:
●
его профиля, с персональными данными,
●
профилирующих тестов
●
теста производительности его компьютера
●
GeoIP
●
анализа поведения пользователя внутри игры
11. Способы обоснованного обмана
1. Отвлечение внимания
2. Уговоры и юмор
3. Поощрение
4. Скрытие подробностей
5. Безграничные возможности
6. Введение третьего властного лица в игру
7. Красивые персонажи
14. Оценка способов сборки персонажей
Что такое миллион персонажей?
- по 8 вариантов вещей на место получаем 2пола*5мест^8вещей = 781250
уникальных персонажей ~1 миллион
- по 9 вариантов вещей на место получаем 2пола*5мест^9вещей = 3906250
уникальных персонажей ~3 миллионов
15. Критерии выбора способа сборки
Качественные характеристики:
- Качество персонажа
- Реалистичность и плавность движений персонажа
Количественные характеристики:
- Количество классов/полов/рас
- Насколько живой персонаж - как много у него движений
- Скорость интернета потенциального пользователя игры
16. Ручная сборка
Отрисовка каждого варианта персонажа руками в отдельности
●
Плохие количественные характеристики
●
Хорошие качественные характеристики
●
Подходит только для игр с совсем небольшим количеством вариантов
персонажей. Иначе способ даёт огромные объёмы рутины для художников и
аниматоров
17. Клиентская сборка векторного
персонажа
Отрисовка руками скелетной анимации и каждой вещи в векторе. Далее клиентом
натягивание векторных вещей на скелет
●
Хорошие количественные характеристики
●
Средние качественные характеристики
●
Чем сложнее скелетная анимация, тем меньше клиент может позволить себе
одновременных анимаций
18. Серверная сборка векторного
персонажа
Отрисовка руками скелетной анимации и каждой вещи в векторе. Далее сервером
натягивание векторных вещей на скелет
●
Хорошие количественные характеристики
●
Средние качественные характеристики
●
Чем сложнее скелетная анимация, тем меньше клиент может позволить себе
одновременных анимаций, но больше чем при клиентской сборке
19. Клиентская сборка растрового
персонажа
Отрисовка руками скелетной анимации и каждой вещи в растре. Далее клиентом
натягивание растровых вещей на скелет
●
Хорошие количественные характеристики
●
Плохие качественные характеристики
●
Чем сложнее скелетная анимация, тем меньше клиент может позволить себе
одновременных анимаций
20. Серверная сборка растрового
персонажа
Моделинг 3D художником и аниматором персонажа с одетыми вещами. Сервером
выбирается нужные вещи, рендерится и клиенту выдаётся нужный персонаж
●
Хорошие количественные характеристики
●
Лучшие качественные характеристики
●
При проигрывании анимации большого числа персонажей мы теряем только
оперативную память. Процессор занят проигрыванием только обычных кадров
анимации без особых нагрузок - сменой картинок.
21. Дешевая серверная растровая
сборка
●
Модель – 3DMax
●
Конвертер в blender – max2blender
●
Серверный рендер – blender+cmb-render, на выходе cmb файл c покадровай
растровой анимацией вещи с картой высот
●
Сборщик – smtool + cmb-combine, на выходе анимация swf из нужных вещей и
кадров
22. Увеличение количества вещей:
сводится к изменению blender модели
Плюсы:
- Производительность
Сборка новой незакешированной swf - 1 секунда на 100 кадров, при 5ти одетых
вещах
- Стоимость- 4 недели системного разработчика
Минусы:
- blender использует рендер без какой либо аппаратной графической поддержки -
рендер cmb долгий процесс.
23. Выбор метода сборки
●
Малое количество вещей – ручная сборка
●
Несложные, с малым количеством деталей персонажи – клиентская векторная
сборка
●
На сложных персонажах выбираем серверную растровую сбоку. Мы жертвуем
скоростью загрузку в пользу реалистичности.
24. Масштабируемость
серверной части
Игровой сервер? Разрабатывать свой или использовать готовый? Вопрос
рентабельности и масштабности проекта. В любом случае нам нужен сервер с
высокими показателями стабильности и масштабируемости. Мы рассматриваем
игровой сервер, как некий уже рабочий отлаженный программный продукт.
25. Общие возможности SmartFoxServer
по нагрузкам
Создание комнаты:
●
Одновременных подключений: 5000
●
Скорость подключений пользователей: 10 клиентов в секунду
●
Создано комнат: 1000
●
Загрузка канала: 55-60Мбит/с
●
Загрузка процессора: 5-6%
●
Потеряных сообщений: 0
26. Создание комнаты 2 - критическая нагрузка:
●
Одновременных подключений: 7500
●
Скорость подключений пользователей: 10 клиентов в секунду
●
Создано комнат: 1500
●
Загрузка канала: ~86Мб/с
●
Загрузка процессора: 18-20%
●
Потеряных сообщений: ~12К
31. Решение — сетевая оперативная память
Дополнительная информация:
http://www.smartfoxserver.com/download/SmartFoxServer-Clustering.pdf
http://en.wikipedia.org/wiki/Terracotta_Cluster
http://www.infoq.com/articles/open-terracotta-intro
32. 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