SlideShare a Scribd company logo
1 of 33
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.pdf
http://en.wikipedia.org/wiki/Terracotta_Cluster
http://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
Спасибо за внимание!
Глеб Полушкин
SM&Partners
+7 495 787 68 57
business@smandpartners.ru

More Related Content

Similar to 2.5D игры и особенности разработки многопользовательских игр

2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)Ontico
 
Rocket Jump: Рецепты игровой графики Rocket Jump
 Rocket Jump: Рецепты игровой графики Rocket Jump Rocket Jump: Рецепты игровой графики Rocket Jump
Rocket Jump: Рецепты игровой графики Rocket JumpDevGAMM Conference
 
Vizor Interactive: Технологии успеха
Vizor Interactive: Технологии успехаVizor Interactive: Технологии успеха
Vizor Interactive: Технологии успехаDevGAMM Conference
 
Tanki Online — multiplayer 3D-action in browser
Tanki Online — multiplayer 3D-action in browserTanki Online — multiplayer 3D-action in browser
Tanki Online — multiplayer 3D-action in browserAnton Volkov
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковDevGAMM Conference
 
Unreal Engine 4: Best Practices and Recent Showcases
Unreal Engine 4: Best Practices and Recent ShowcasesUnreal Engine 4: Best Practices and Recent Showcases
Unreal Engine 4: Best Practices and Recent ShowcasesDevGAMM Conference
 
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)DevGAMM Conference
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
зомби ферма. как это сделано - Виктор и Андрей Кузьмины - Vizor interactive
зомби ферма. как это сделано - Виктор и Андрей Кузьмины - Vizor interactiveзомби ферма. как это сделано - Виктор и Андрей Кузьмины - Vizor interactive
зомби ферма. как это сделано - Виктор и Андрей Кузьмины - Vizor interactiveSociality Rocks!
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»DevGAMM Conference
 
Moving from Flash to HTML5 – converting large projects
Moving from Flash to HTML5 – converting large projectsMoving from Flash to HTML5 – converting large projects
Moving from Flash to HTML5 – converting large projectsDevGAMM Conference
 
Видео+Конференция 2013. Перспективные инновации в обработке видеосигналов. Ко...
Видео+Конференция 2013. Перспективные инновации в обработке видеосигналов. Ко...Видео+Конференция 2013. Перспективные инновации в обработке видеосигналов. Ко...
Видео+Конференция 2013. Перспективные инновации в обработке видеосигналов. Ко...TrueConf
 
6 ip video design tool
6   ip video design tool6   ip video design tool
6 ip video design tooljournalrubezh
 
C++ в играх, больших и не очень
C++ в играх, больших и не оченьC++ в играх, больших и не очень
C++ в играх, больших и не оченьcorehard_by
 
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновВидео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновTrueConf__
 
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesAlexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesWhite Nights Conference
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven developmentTestableapple
 
Android - 10 - Graphics
Android - 10 - GraphicsAndroid - 10 - Graphics
Android - 10 - GraphicsNoveo
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Noveo
 

Similar to 2.5D игры и особенности разработки многопользовательских игр (20)

2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
 
Rocket Jump: Рецепты игровой графики Rocket Jump
 Rocket Jump: Рецепты игровой графики Rocket Jump Rocket Jump: Рецепты игровой графики Rocket Jump
Rocket Jump: Рецепты игровой графики Rocket Jump
 
Lime.JS
Lime.JSLime.JS
Lime.JS
 
Vizor Interactive: Технологии успеха
Vizor Interactive: Технологии успехаVizor Interactive: Технологии успеха
Vizor Interactive: Технологии успеха
 
Tanki Online — multiplayer 3D-action in browser
Tanki Online — multiplayer 3D-action in browserTanki Online — multiplayer 3D-action in browser
Tanki Online — multiplayer 3D-action in browser
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
 
Unreal Engine 4: Best Practices and Recent Showcases
Unreal Engine 4: Best Practices and Recent ShowcasesUnreal Engine 4: Best Practices and Recent Showcases
Unreal Engine 4: Best Practices and Recent Showcases
 
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
зомби ферма. как это сделано - Виктор и Андрей Кузьмины - Vizor interactive
зомби ферма. как это сделано - Виктор и Андрей Кузьмины - Vizor interactiveзомби ферма. как это сделано - Виктор и Андрей Кузьмины - Vizor interactive
зомби ферма. как это сделано - Виктор и Андрей Кузьмины - Vizor interactive
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
 
Moving from Flash to HTML5 – converting large projects
Moving from Flash to HTML5 – converting large projectsMoving from Flash to HTML5 – converting large projects
Moving from Flash to HTML5 – converting large projects
 
Видео+Конференция 2013. Перспективные инновации в обработке видеосигналов. Ко...
Видео+Конференция 2013. Перспективные инновации в обработке видеосигналов. Ко...Видео+Конференция 2013. Перспективные инновации в обработке видеосигналов. Ко...
Видео+Конференция 2013. Перспективные инновации в обработке видеосигналов. Ко...
 
6 ip video design tool
6   ip video design tool6   ip video design tool
6 ip video design tool
 
C++ в играх, больших и не очень
C++ в играх, больших и не оченьC++ в играх, больших и не очень
C++ в играх, больших и не очень
 
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновВидео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
 
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesAlexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven development
 
Android - 10 - Graphics
Android - 10 - GraphicsAndroid - 10 - Graphics
Android - 10 - Graphics
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (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. Упрощения допустимые для редактирования Игровой мир сталкивается с самым непредсказуемым создателем – пользователем: ● Пользователь захочет выставить все доступные вещи ● Пользователь обязательно будет ставить вещи мешающие другим ● Пользователь обязательно найдёт все баги
  • 8. Решение для редактора - Редактор должен быть таким же игровым элементом
  • 9. Метод обоснованного обмана пользователя Зачем обман – экономим ресурсы Но важно знать кого именно мы обманываем. Кто наш пользователь?
  • 10. Кто наш пользователь? Можно узнать это из: ● его профиля, с персональными данными, ● профилирующих тестов ● теста производительности его компьютера ● GeoIP ● анализа поведения пользователя внутри игры
  • 11. Способы обоснованного обмана 1. Отвлечение внимания 2. Уговоры и юмор 3. Поощрение 4. Скрытие подробностей 5. Безграничные возможности 6. Введение третьего властного лица в игру 7. Красивые персонажи
  • 12. Пользователь в игре уже настроен на то что его обманут в игровом процессе
  • 13. Персонажи - как не испортить ими идеальный игровой мир
  • 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К
  • 27. Атака личными сообщениями: ● Одновременных подключений: 20000 ● Скорость подключений пользователей: 10 клиентов в секунду ● Всего комнат: 1 ● Загрузка канала: ~28Мб/с ● Загрузка процессора: 22-24% ● Потеряных сообщений: 0
  • 28. Вывод: высокая стабильность и масштабируемость Дополнительные данные тестирования http://www.smartfoxserver.com/products/benchmarks.htm
  • 29. Кластер с общей базой данных
  • 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
  • 33. Спасибо за внимание! Глеб Полушкин SM&Partners +7 495 787 68 57 business@smandpartners.ru