ݺߣ

ݺߣShare a Scribd company logo
Что наша жизнь - игра! Особенности
           разработки
           сетевых игр

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

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

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

  • 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