SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)

Rocket Jump: Рецепты игровой графики Rocket Jump
 Rocket Jump: Рецепты игровой графики Rocket Jump Rocket Jump: Рецепты игровой графики Rocket Jump
Rocket Jump: Рецепты игровой графики Rocket JumpDevGAMM 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
 
C++ в играх, больших и не очень
C++ в играх, больших и не оченьC++ в играх, больших и не очень
C++ в играх, больших и не оченьcorehard_by
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow Vadim Nesterov
 
Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Андрей Бростовский
 
Vizor Interactive: Технологии успеха
Vizor Interactive: Технологии успехаVizor Interactive: Технологии успеха
Vizor Interactive: Технологии успехаDevGAMM 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
 
Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...
Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...
Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...Mail.ru Group
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковDevGAMM Conference
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven developmentTestableapple
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрокаSQALab
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Daria Oreshkina
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновOntico
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Andrey Smirnov
 
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновВидео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновTrueConf__
 
Акулов Егор, Mail.ru Group
Акулов Егор, Mail.ru GroupАкулов Егор, Mail.ru Group
Акулов Егор, Mail.ru GroupNata_Churda
 
Компонентная архитектура игровой механики MMORPG.
Компонентная архитектура игровой механики MMORPG.Компонентная архитектура игровой механики MMORPG.
Компонентная архитектура игровой механики MMORPG.Андрей Бростовский
 

Similaire à 2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин) (20)

Rocket Jump: Рецепты игровой графики Rocket Jump
 Rocket Jump: Рецепты игровой графики Rocket Jump Rocket Jump: Рецепты игровой графики Rocket Jump
Rocket Jump: Рецепты игровой графики Rocket Jump
 
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
 
C++ в играх, больших и не очень
C++ в играх, больших и не оченьC++ в играх, больших и не очень
C++ в играх, больших и не очень
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»
 
Vizor Interactive: Технологии успеха
Vizor Interactive: Технологии успехаVizor Interactive: Технологии успеха
Vizor Interactive: Технологии успеха
 
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)
 
Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...
Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...
Droidcon Moscow 2015. Nearby новые возможности взаимодействия рядом. Антон Пу...
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven development
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!Сергей Парамонов — Что наша жизнь — игра!
Сергей Парамонов — Что наша жизнь — игра!
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей Смирнов
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин СмирновВидео + Конференция. Как получить правильное изображение? Константин Смирнов
Видео + Конференция. Как получить правильное изображение? Константин Смирнов
 
Little Service in 2h
Little Service in 2hLittle Service in 2h
Little Service in 2h
 
Акулов Егор, Mail.ru Group
Акулов Егор, Mail.ru GroupАкулов Егор, Mail.ru Group
Акулов Егор, Mail.ru Group
 
Компонентная архитектура игровой механики MMORPG.
Компонентная архитектура игровой механики MMORPG.Компонентная архитектура игровой механики MMORPG.
Компонентная архитектура игровой механики MMORPG.
 
Developing our own rendering
Developing our own renderingDeveloping our own rendering
Developing our own rendering
 

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Plus de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

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