Сергей Парамонов — Что наша жизнь — игра!
-
Upload
daria-oreshkina -
Category
Documents
-
view
307 -
download
4
Transcript of Сергей Парамонов — Что наша жизнь — игра!
Что наша жизнь - игра! Особенности разработки сетевых игр
Сергей Парамоновкомпания «Тортуга»
Зачем нам все это?
Зачем нам все это?
• Плюсы– Каждый писал игрушки в детстве– Рынок доступен каждому– Это интересно– Радость от результатов
• Минусы– Играть и разрабатывать — не одно и то же– Большой уровень вхождения– Играть в игры уже не хочется
Жизнь расставила приоритеты
Рынок игр в Америке
Рынок игр в Америке
Цифровой Клондайк
Сложность разработки
• Сложная бизнес-логика, и это не миф.• Нетривиальность в реализации
ОО-иерархий.• Разнообразие против универсальности.
Обычная задача http-контроллера
• Валидация параметров• Запрос к базе данных• Рендеринг данных
Обычная задача для game-handlermelee attack
• Валидация параметров• Расчет урона• Отправка клиенту списка
команд(нанесение урона, смерть юнита)
Обычная задача для game-handlermelee attack
• Валидация параметров• Расчет урона:
– у атакующего юнита есть меч, который наносит двойной урон для скелетов
– у атакованного есть броня +10% от двуручного оружия– на атакованного наложено заклинания “проклятье” – атакующий наносит
половинный удар– битва проходит на святой земле, где с вероятностью 70% урон от
“черных ” заклинаний сокращается на половину– у атакуемого юнита висит амулет, увеличивающий силу черной магии на
25%– у атакуемого юнита есть аура: 20% урона с вероятностью 25%
возвращается атакующему
• Отправка клиенту списка команд (нанесение урона, смерть юнита)
Другие виды задач
• Общие– Селекция целей– Выбор оружия– Поиск пути
• Сетевые– Пинг и быстродействие– Оптимизация производительности сервера– Таинственные баги Flash или другой клиентской
платформы
Пользователи ждут максимального разнообразия игры
Пример
Пример
Решения
• Разделение поведения и отображения• Конфигураторы • Множественное наследование?• Интерфейсы и делегаты• Контейнерный подход
Конфигурирование
Интерфейсы
Компоненты
Примеры багов
• ООП костыли– Уплывший корабль– Фау 2 в Блицкриге – Патроны для собаки
• Большое количество if– Воздушный щит при осаде
• Непродуманные граничные условия– Лучники в Викингах
Поддержка
• Игровой пользователь – “тяжелый”пользователь
• Апдейты и кеширование
Решение
• Nosql – хранилища• Очередь сохранения
Ошибки
• Ошибки будут всегда• Правильное логирование• Устойчивость к нештатным ситуациям• Терминаторы и восстановление состояния
Gameplay
• Моделирование• Гибкость настройки игровых параметров• Гейм-дизайнеры должны иметь
возможность менять максимальное количество параметров без участия программистов
Тестирование
• Сложность автоматического тестирования• Привлечение community• Логирование и анализ поведения
пользователя• Возможность динамически менять уровни
логирования
Безопасность!• Клиенту доверять
нельзя• Ради нового стула
пользователи готовы 10 часов "хакать" ваше приложение.
Безопасность
• Проверка на сервере• Система арбитров• Основные характеристики на клиенте
должны быть защищены от artmoney• Шифрования трафика• Проверка подлинности• Проверка “времени жизни” пакета
Все так плохо
Вопросы!
Сергей ПарамоновТехнический директор
ООО «Тортуга»http://tortugasocial.ru/