SlideShare a Scribd company logo
1 of 29
Download to read offline
Что наша жизнь - игра! Особенности
           разработки
           сетевых игр

          Сергей Парамонов
         компания «Тортуга»
Зачем нам все это?
Зачем нам все это?
• Плюсы
  – Каждый писал игрушки в детстве
  – Рынок доступен каждому
  – Это интересно
  – Радость от результатов
• Минусы
  – Играть и разрабатывать — не одно и то же
  – Большой уровень вхождения
  – Играть в игры уже не хочется
Жизнь расставила приоритеты
Рынок игр в Америке
Рынок игр в Америке
Цифровой Клондайк
Сложность разработки

• Сложная бизнес-логика, и это не миф.
• Нетривиальность в реализации
  ОО-иерархий.
• Разнообразие против универсальности.
Обычная задача http-контроллера


• Валидация параметров
• Запрос к базе данных
• Рендеринг данных
Обычная задача для game-handler
            melee attack

• Валидация параметров
• Расчет урона
• Отправка клиенту списка
  команд(нанесение урона, смерть юнита)
Обычная задача для game-handler
               melee attack
•   Валидация параметров
•   Расчет урона:
    – у атакующего юнита есть меч, который наносит двойной урон для
      скелетов
    – у атакованного есть броня +10% от двуручного оружия
    – на атакованного наложено заклинания “проклятье” – атакующий наносит
      половинный удар
    – битва проходит на святой земле, где с вероятностью 70% урон от
      “черных ” заклинаний сокращается на половину
    – у атакуемого юнита висит амулет, увеличивающий силу черной магии на
      25%
    – у атакуемого юнита есть аура: 20% урона с вероятностью 25%
      возвращается атакующему

•   Отправка клиенту списка команд (нанесение урона, смерть юнита)
Другие виды задач
• Общие
  – Селекция целей
  – Выбор оружия
  – Поиск пути
• Сетевые
  – Пинг и быстродействие
  – Оптимизация производительности сервера
  – Таинственные баги Flash или другой клиентской
    платформы
Пользователи ждут максимального
       разнообразия игры
Пример
Пример
Решения
•   Разделение поведения и отображения
•   Конфигураторы
•   Множественное наследование?
•   Интерфейсы и делегаты
•   Контейнерный подход
Конфигурирование
Интерфейсы
Компоненты
Примеры багов
• ООП костыли
  – Уплывший корабль
  – Фау 2 в Блицкриге
  – Патроны для собаки
• Большое количество if
  – Воздушный щит при осаде
• Непродуманные граничные условия
  – Лучники в Викингах
Поддержка
• Игровой пользователь – “тяжелый”
  пользователь
• Апдейты и кеширование
Решение
• Nosql – хранилища
• Очередь сохранения
Ошибки
•   Ошибки будут всегда
•   Правильное логирование
•   Устойчивость к нештатным ситуациям
•   Терминаторы и восстановление состояния
Gameplay
• Моделирование
• Гибкость настройки игровых параметров
• Гейм-дизайнеры должны иметь
  возможность менять максимальное
  количество параметров без участия
  программистов
Тестирование
• Сложность автоматического тестирования
• Привлечение community
• Логирование и анализ поведения
  пользователя
• Возможность динамически менять уровни
  логирования
Безопасность!
       • Клиенту доверять
         нельзя
       • Ради нового стула
         пользователи готовы
         10 часов "хакать" ваше
         приложение.
Безопасность
• Проверка на сервере
• Система арбитров
• Основные характеристики на клиенте
  должны быть защищены от artmoney
• Шифрования трафика
• Проверка подлинности
• Проверка “времени жизни” пакета
Все так плохо 
Вопросы!

            Сергей Парамонов
          Технический директор
              ООО «Тортуга»
          http://tortugasocial.ru/
   sergey.paramonov@tortugasocial.com

More Related Content

Viewers also liked

Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреляАлексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Daria Oreshkina
 
Антон Каляев — Быстрое развертывание среды с Vagrant
Антон Каляев — Быстрое развертывание среды с VagrantАнтон Каляев — Быстрое развертывание среды с Vagrant
Антон Каляев — Быстрое развертывание среды с Vagrant
Daria Oreshkina
 
Алексей Шалдышев — Проектное управление
Алексей Шалдышев — Проектное управлениеАлексей Шалдышев — Проектное управление
Алексей Шалдышев — Проектное управление
Daria Oreshkina
 
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проектеНаталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Daria Oreshkina
 
Артём Рудаковский — Как мы электронное правительство делали
Артём Рудаковский — Как мы электронное правительство делалиАртём Рудаковский — Как мы электронное правительство делали
Артём Рудаковский — Как мы электронное правительство делали
Daria Oreshkina
 
Асхат Уразбаев — Value Stream Mapping
Асхат Уразбаев — Value Stream MappingАсхат Уразбаев — Value Stream Mapping
Асхат Уразбаев — Value Stream Mapping
Daria Oreshkina
 
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриАлександр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Daria Oreshkina
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
Daria Oreshkina
 
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
Валкин, Мокевнин — Развитие IT-среды в УльяновскеВалкин, Мокевнин — Развитие IT-среды в Ульяновске
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
Daria Oreshkina
 
Кирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программированиеКирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программирование
Daria Oreshkina
 

Viewers also liked (10)

Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреляАлексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
Алексей Ситников. Итоговая презентация группы « Социальная политика». 19 апреля
 
Антон Каляев — Быстрое развертывание среды с Vagrant
Антон Каляев — Быстрое развертывание среды с VagrantАнтон Каляев — Быстрое развертывание среды с Vagrant
Антон Каляев — Быстрое развертывание среды с Vagrant
 
Алексей Шалдышев — Проектное управление
Алексей Шалдышев — Проектное управлениеАлексей Шалдышев — Проектное управление
Алексей Шалдышев — Проектное управление
 
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проектеНаталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
Наталья Желнова — Как обзавестись аналитиками и получить от них пользу в проекте
 
Артём Рудаковский — Как мы электронное правительство делали
Артём Рудаковский — Как мы электронное правительство делалиАртём Рудаковский — Как мы электронное правительство делали
Артём Рудаковский — Как мы электронное правительство делали
 
Асхат Уразбаев — Value Stream Mapping
Асхат Уразбаев — Value Stream MappingАсхат Уразбаев — Value Stream Mapping
Асхат Уразбаев — Value Stream Mapping
 
Александр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутриАлександр Жарков — Эволюция команды разработки: взгляд изнутри
Александр Жарков — Эволюция команды разработки: взгляд изнутри
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
 
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
Валкин, Мокевнин — Развитие IT-среды в УльяновскеВалкин, Мокевнин — Развитие IT-среды в Ульяновске
Валкин, Мокевнин — Развитие IT-среды в Ульяновске
 
Кирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программированиеКирилл Мокевнин — Ментальное программирование
Кирилл Мокевнин — Ментальное программирование
 

Similar to Сергей Парамонов — Что наша жизнь — игра!

Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
solit
 
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
Ontico
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
Oleg Tsarev
 
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
it-people
 
Vitaly hit' abc_of_game_development
Vitaly hit' abc_of_game_developmentVitaly hit' abc_of_game_development
Vitaly hit' abc_of_game_development
DneprCiklumEvents
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
Andrew Mayorov
 
Информационная безопасность в веб - основы
Информационная безопасность в веб - основыИнформационная безопасность в веб - основы
Информационная безопасность в веб - основы
Alex Chistyakov
 

Similar to Сергей Парамонов — Что наша жизнь — игра! (20)

Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
 
Тестирование игровой механики в компьютерных играх
Тестирование игровой механики в компьютерных играхТестирование игровой механики в компьютерных играх
Тестирование игровой механики в компьютерных играх
 
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
 
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
2.5D игры и особенности разработки многопользовательских игр (Глеб Полушкин)
 
Cоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTargetCоциальный граф "Одноклассников" в myTarget
Cоциальный граф "Одноклассников" в myTarget
 
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
DUMP-2015: «Использование социального графа одноклассников в Target Mail.Ru» ...
 
Социальный граф Одноклассников в Target Mail.Ru
Социальный граф Одноклассников в Target Mail.RuСоциальный граф Одноклассников в Target Mail.Ru
Социальный граф Одноклассников в Target Mail.Ru
 
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
 
SQA days 17 "Моделирование угроз для приложений"
SQA days 17 "Моделирование угроз для приложений"SQA days 17 "Моделирование угроз для приложений"
SQA days 17 "Моделирование угроз для приложений"
 
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
11 HappyDev-lite'14 Андрей Казимиров. Особенности разработки по для встраива...
 
Tech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игруTech Talks @NSU: Как сделать Dota-like игру
Tech Talks @NSU: Как сделать Dota-like игру
 
Vitaly hit' abc_of_game_development
Vitaly hit' abc_of_game_developmentVitaly hit' abc_of_game_development
Vitaly hit' abc_of_game_development
 
Vizor Interactive: Технологии успеха
Vizor Interactive: Технологии успехаVizor Interactive: Технологии успеха
Vizor Interactive: Технологии успеха
 
Криптология в анализе защищённости
Криптология в анализе защищённостиКриптология в анализе защищённости
Криптология в анализе защищённости
 
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
Юрий Леонычев «Безопасность мобильных приложений для Android. Теория и практика»
 
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
 
Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...
Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...
Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...
 
Построение Secure Development Lifecycle
Построение Secure Development Lifecycle Построение Secure Development Lifecycle
Построение Secure Development Lifecycle
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
 
Информационная безопасность в веб - основы
Информационная безопасность в веб - основыИнформационная безопасность в веб - основы
Информационная безопасность в веб - основы
 

Сергей Парамонов — Что наша жизнь — игра!

  • 1. Что наша жизнь - игра! Особенности разработки сетевых игр Сергей Парамонов компания «Тортуга»
  • 3. Зачем нам все это? • Плюсы – Каждый писал игрушки в детстве – Рынок доступен каждому – Это интересно – Радость от результатов • Минусы – Играть и разрабатывать — не одно и то же – Большой уровень вхождения – Играть в игры уже не хочется
  • 5. Рынок игр в Америке
  • 6. Рынок игр в Америке
  • 8. Сложность разработки • Сложная бизнес-логика, и это не миф. • Нетривиальность в реализации ОО-иерархий. • Разнообразие против универсальности.
  • 9. Обычная задача http-контроллера • Валидация параметров • Запрос к базе данных • Рендеринг данных
  • 10. Обычная задача для game-handler melee attack • Валидация параметров • Расчет урона • Отправка клиенту списка команд(нанесение урона, смерть юнита)
  • 11. Обычная задача для game-handler melee attack • Валидация параметров • Расчет урона: – у атакующего юнита есть меч, который наносит двойной урон для скелетов – у атакованного есть броня +10% от двуручного оружия – на атакованного наложено заклинания “проклятье” – атакующий наносит половинный удар – битва проходит на святой земле, где с вероятностью 70% урон от “черных ” заклинаний сокращается на половину – у атакуемого юнита висит амулет, увеличивающий силу черной магии на 25% – у атакуемого юнита есть аура: 20% урона с вероятностью 25% возвращается атакующему • Отправка клиенту списка команд (нанесение урона, смерть юнита)
  • 12. Другие виды задач • Общие – Селекция целей – Выбор оружия – Поиск пути • Сетевые – Пинг и быстродействие – Оптимизация производительности сервера – Таинственные баги Flash или другой клиентской платформы
  • 16. Решения • Разделение поведения и отображения • Конфигураторы • Множественное наследование? • Интерфейсы и делегаты • Контейнерный подход
  • 20. Примеры багов • ООП костыли – Уплывший корабль – Фау 2 в Блицкриге – Патроны для собаки • Большое количество if – Воздушный щит при осаде • Непродуманные граничные условия – Лучники в Викингах
  • 21. Поддержка • Игровой пользователь – “тяжелый” пользователь • Апдейты и кеширование
  • 22. Решение • Nosql – хранилища • Очередь сохранения
  • 23. Ошибки • Ошибки будут всегда • Правильное логирование • Устойчивость к нештатным ситуациям • Терминаторы и восстановление состояния
  • 24. Gameplay • Моделирование • Гибкость настройки игровых параметров • Гейм-дизайнеры должны иметь возможность менять максимальное количество параметров без участия программистов
  • 25. Тестирование • Сложность автоматического тестирования • Привлечение community • Логирование и анализ поведения пользователя • Возможность динамически менять уровни логирования
  • 26. Безопасность! • Клиенту доверять нельзя • Ради нового стула пользователи готовы 10 часов "хакать" ваше приложение.
  • 27. Безопасность • Проверка на сервере • Система арбитров • Основные характеристики на клиенте должны быть защищены от artmoney • Шифрования трафика • Проверка подлинности • Проверка “времени жизни” пакета
  • 29. Вопросы! Сергей Парамонов Технический директор ООО «Тортуга» http://tortugasocial.ru/ sergey.paramonov@tortugasocial.com