Инструметы разработки социальных игр Куперштох Алексей Alawar.

Презентация:



Advertisements
Похожие презентации
BoardGameMaster Руководители проекта Анатолий Тутов Татьяна Зуева Участники Алексей Малыгин Георгий Ерохин Кирилл Чередник Наталья Соковикова.
Advertisements

Типы браузеров, их история и современное состояние. Выполнила: Моргун Ксения 1 курс ИППС, заочное отделение.
Решение прикладных задач: Хранение неограниченного объема информации за любой период времени Возможность анализа любых хранящихся данных за определенный.
Введение в PHP-MySQL Факультет Интернета МФПУ СИНЕРГИЯ Курс «Веб-разработка» Илья Ершов.
Выполнила: Абдуллаева С.И. Проверила: Митющенко Е.В.
Как улучшить производительность проекта за три шага Шаромов Денис руководитель отдела техподдержки.
Визуализация невидимого или способы использования игровой статистики докладчик: Колбасин Артем.
Сервисы сетевых операционных систем : web- сервер Seti.ucoz.ru.
СУБД Microsoft Access 2003 ЗНАКОМСТВО. Что такое Access? Access – Приложение, входящее в состав пакета Microsoft Office (разработано компанией Microsoft).
TEKTON-Matrix Платформа для распределённых приложений.
Веб 2.0 сайт для поддержки виртуального мира Студент: Наумов Василий, ПС-52 Научный руководитель: Танаков Андрей Игоревич.
Симпозиум 2008 Сергей Шутов, ДИМАС Борис Егоров, Интерсистемс Практика использования Zen и Прототип-6.
Создание электронных учебников
Корпоративный портал учебного заведения «Русско-Британский Институт Управления» Компания «Автоматизация бизнеса» Докладчик: Якупов Дамир
Интернет-магазины, высокие нагрузки, синхронизации бизнес- приложений с веб-системой Александр Сербул Руководитель направления контроля качества интеграции.
Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
Тест-система 2007 Разработчик: Алексеев А.П., г. Чебоксары.
FAXmaker План Варианты установки Лицензирование Проблемы установки Поддерживаемые устройства Преобразование документов Маршрутизация факсов.
О разработке приложений для разных мобильных платформ Виктор Кузьмин Руководитель разработки компании AlterGeo О разработке приложений для разных мобильных.
Flash движок в игре Зомби Ферма Проблемы в процессе разработки и их решения.
Транксрипт:

Инструметы разработки социальных игр Куперштох Алексей Alawar

Игра "Городской Магнат"

Игра "Городской магнат" Стандартный ситибилдер Запустился 5 дней назад Команда: o 1.5 серверных разработчика o 2 flash-разработчика o 1 QA o Художники, менеджеры, гейм дизайнеры,... o Команда разделена географически o Разница в часовых поясах - 4 часа Одна из пилотных социальных игр компании Alawar

Клиент-Сервер Типичное клиент-серверное приложение Клиент - Flash Сервер - PHP Протокол взаимодействия - JSON-based HTTP

JSON vs AMF JSON открытый текстовый достаточная поддержка на клиенте и на сервере можно смотреть все вызовы в браузере - полезно для отладки клиентом может выступать не только flash AMF пропритетарный бинарный хорошая поддержка на клиенте, с сервером дела хуже

Поиск ошибок Логи на сервере o tail -f | grep uid Debug-режим, который не видят простые смертные o Дебаговые приложения o Дебаговые юзеры o Логи на клиенте debug panel в самой игре console.log o Показ дополнительной информации прямо в интерфейсе игры (id, состояния, таймеры,...)

Ошибки синхронизации Если что-то реализовано и на сервере, и на клиенте - это БОЛЬШОЙ источник габлей Невозможно писать идентичный код с точностью до всех условий и округлений (у нас не получилось :) Ответ от сервера очень важен. o ошибки не учитываем o ошибки учитываем, логируем o ошибки учитываем, логируем, падаем Дополнительная информация при обмене между клиентом и сервером

Ошибки синхронизации времени Timestamp'ы у нас - это unix timestamp * 1000 Хранятся в bigint Переходные состояния o Жильцы сбежали - деньги с них больше не собрать. o Но если они сбежали менее минуты назад, то для некоторых действий мы еще считаем, что они не сбежали. o Если пользователь пытается собрать прибыль со здания, которое её произведёт только через 5 секунд - позволим - нам не жалко. Накапливание ошибки времени

Серверная часть Принципы, архитектура Инструменты, фреймворки, среды, языки, движки, библиотеки Производительность, трафик Проблемы

Сервер - LNMP-стэк Linux - Ubuntu Server LTS Nginx MySQL + Memcached o Memcached отключён PHP 5.3 o фишки 5.3 не используются

MySQL Почему бы и нет? o Проект и так достаточно экспериментальный o MySQL знают все o Его пока хватает, несмотря на write- ориентированность игры Простые варианты использования MySQL и поддержка memcached - залог того, что при необходимости можно будет перейти на другие базы данных MongoDB удобен в плане гибкости схемы данных в коллекциях Redis хорош своими структурами данных и высокой производительностью

Производительность Простые алгоритмы, в основном сложность O(1) или O(log(n)) Мы не используем фреймворк, НО, очень часто это приводит к тому, что самописные поделки тормозят еще больше - в основном из-за криво реализованных моделей и всяких ACL. Мы - не исключение. Кроме отсутвия фреймворка - нет никаких предварительных оптимизаций. Не экономьте на спичках. В 90% случаев вы всё равно не отгадаете, что будет тормозить.

Мониторинг Техническая o Munin o Zabbix Бизнес o Самописная статистика На что тратят голоса

Framework Админка на YII o С моделью o Шаблоны для генератора админки Игровой бэкенд - самописный. o Парсит json o Проверяет авторизацию o Исполняет серверные события o Запускает команды одну за одной o Пакует и отдаём ответы Игровая модель - самописная o Очень не хватает Propel и Doctrine :)

Генерация и хранение идентификаторов Мы не используем AUTO_INCREMENT Мы храним свои счётчики для каждого пользователя ID новых строений генерируются клиентом Практически все обращения к базе данных используют поле UID. Лучше сразу закладываться на приспособенность к нескольким социальным сетям и хранить uid в виде строк с префиксами

Библиотечные данные Курсы валют Здания Типы жильцов...

Деплоймент Сейчас думаем над тем, как облегчить работу художникам и гейм дизайнерам. Скорее всего это будет раскладывание библиотек и файлов с сервера на сервер по одному нажатию кнопки С кодом и апдейтами базы данных по-прежнему будем работать вручную - дело в том, что сервер имеет состояние.

Командная разработка Разница в 4 часа Незнакомые изначально люди Несоблюдение принципа "Сервер всегда прав" Сложно заслужить авторитет

Инструменты для удалённой разработки Skype Google Docs Google Drawings

Инструменты разработчика IDE o Netbeans o PHPStorm SCM o svn repo o git-svn client Browser o Google Chrome o debug flash player Bugtracker o Jira o QA-инженер должен описывать ошибки в виде "что делаю - что ожидаю - что получилось", иначе это не работает

Вопросы? /gtalk: skype: alexey.kupershtokh