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

29
Что наша жизнь - игра! Особенности разработки сетевых игр Сергей Парамонов компания «Тортуга»

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

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

Что наша жизнь - игра! Особенности разработки сетевых игр

Сергей Парамоновкомпания «Тортуга»

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

Зачем нам все это?

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

Зачем нам все это?

• Плюсы– Каждый писал игрушки в детстве– Рынок доступен каждому– Это интересно– Радость от результатов

• Минусы– Играть и разрабатывать — не одно и то же– Большой уровень вхождения– Играть в игры уже не хочется

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

Жизнь расставила приоритеты

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

Рынок игр в Америке

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

Рынок игр в Америке

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

Цифровой Клондайк

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

Сложность разработки

• Сложная бизнес-логика, и это не миф.• Нетривиальность в реализации

ОО-иерархий.• Разнообразие против универсальности.

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

Обычная задача http-контроллера

• Валидация параметров• Запрос к базе данных• Рендеринг данных

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

Обычная задача для game-handlermelee attack

• Валидация параметров• Расчет урона• Отправка клиенту списка

команд(нанесение урона, смерть юнита)

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

Обычная задача для game-handlermelee attack

• Валидация параметров• Расчет урона:

– у атакующего юнита есть меч, который наносит двойной урон для скелетов

– у атакованного есть броня +10% от двуручного оружия– на атакованного наложено заклинания “проклятье” – атакующий наносит

половинный удар– битва проходит на святой земле, где с вероятностью 70% урон от

“черных ” заклинаний сокращается на половину– у атакуемого юнита висит амулет, увеличивающий силу черной магии на

25%– у атакуемого юнита есть аура: 20% урона с вероятностью 25%

возвращается атакующему

• Отправка клиенту списка команд (нанесение урона, смерть юнита)

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

Другие виды задач

• Общие– Селекция целей– Выбор оружия– Поиск пути

• Сетевые– Пинг и быстродействие– Оптимизация производительности сервера– Таинственные баги Flash или другой клиентской

платформы

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

Пользователи ждут максимального разнообразия игры

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

Пример

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

Пример

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

Решения

• Разделение поведения и отображения• Конфигураторы • Множественное наследование?• Интерфейсы и делегаты• Контейнерный подход

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

Конфигурирование

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

Интерфейсы

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

Компоненты

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

Примеры багов

• ООП костыли– Уплывший корабль– Фау 2 в Блицкриге – Патроны для собаки

• Большое количество if– Воздушный щит при осаде

• Непродуманные граничные условия– Лучники в Викингах

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

Поддержка

• Игровой пользователь – “тяжелый”пользователь

• Апдейты и кеширование

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

Решение

• Nosql – хранилища• Очередь сохранения

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

Ошибки

• Ошибки будут всегда• Правильное логирование• Устойчивость к нештатным ситуациям• Терминаторы и восстановление состояния

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

Gameplay

• Моделирование• Гибкость настройки игровых параметров• Гейм-дизайнеры должны иметь

возможность менять максимальное количество параметров без участия программистов

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

Тестирование

• Сложность автоматического тестирования• Привлечение community• Логирование и анализ поведения

пользователя• Возможность динамически менять уровни

логирования

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

Безопасность!• Клиенту доверять

нельзя• Ради нового стула

пользователи готовы 10 часов "хакать" ваше приложение.

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

Безопасность

• Проверка на сервере• Система арбитров• Основные характеристики на клиенте

должны быть защищены от artmoney• Шифрования трафика• Проверка подлинности• Проверка “времени жизни” пакета

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

Все так плохо

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

Вопросы!

Сергей ПарамоновТехнический директор

ООО «Тортуга»http://tortugasocial.ru/

[email protected]