Социальный игровой сервер на Python: от первого коммита...

29
 Социальный игровой сервер на Python: от первого коммита до продакшена Алексей Романов, ведущий разработчик Компании Melesta

description

Важными потребностями современного человека являются: общение с другими людьми и игры. На стыке двух этих потребностей и возникли различные игровые приложения в социальных сетях. Обычно такие приложения требуют наличия серверной стороны, способной справляться с высокими нагрузками. В данном докладе Алексей делится опытом разработки серверов на Python для социальных игр, начиная от этапа разработки дизайнерского документа и заканчивая выпуском игры в продакшн и её дальнейшей поддержкой. Автор: Алексей Романов

Transcript of Социальный игровой сервер на Python: от первого коммита...

Page 1: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Социальный игровой сервер на Python: от первого коммита до продакшена

Алексей Романов, ведущий разработчикКомпании Melesta

Page 2: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Пара слов о компании

●Дата создания: 2008 год●Пишем казуальные игр для платформ PC, iOS, Android, Web

●В основном пишем на C++, Python, Action Script

●Около 80 человек в штате

Page 3: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Веселая ферма

Page 4: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Солдатики

Page 5: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Toy Monsters

Page 6: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Цели доклада1. Поделиться опытом создания социальных игр 

2. Рассказать о архитектуре и реализации социального игрового сервера на python 

3. Рассказать об особенностях выпуска в различных социальных сетях

Page 7: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Вкратце о соцсетях

Page 8: Социальный игровой сервер на Python: от первого коммита до продакшена

   

О проектеСотрудник отдела продаж,  которого едва не сожгли на костре

Page 9: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Ингридиенты● Готовая игра на pc/android/ios/tizen● Куча арта и сбалансированных карт● Готовые адаптеры для соц. cетей●Скелет сервера 

Page 10: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Команда●Клиетский Flash­программист: 1 шт.●Серверный Python­программист: 1 шт.

● Гейм­дизайнер: 1 шт.●Художник: 0.5  (арт ведь уже весь есть!!)

Page 11: Социальный игровой сервер на Python: от первого коммита до продакшена

   

С чего начать?● Написание дизайнерского документа тов. геймдизайнером

●Согласование фич с руководством●Планирование работы и график релизов

●Организация работы команды

Page 12: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Планы релизов!

● VK   OK   Facebook( + Zynga → →Network)   Nasha Klassa→

●Все фичи должны быть готовы уже для VK

Page 13: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Организация работы●Все люди в одной комнате● Redmine + SVN● Тестовый сервер

Page 14: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Что же делать программисту?●Проектировать архитектуру●Общаться с гейм­дизайнером●Проводить бенчмарки своего кода и других проектов

● Развернуть тестовый сервер● Апгрейдить технологический стек

Page 15: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Компоненты игры

Сервер(Python)

Клиент(Flash)Клиент(Flash)

Социальная сетьClient Social API

Server­to­client API

Server Social API

Page 16: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Архитектура игрового сервера

Game Server

MySQL

Redis

Rabbitmq Login Server

Billing server

Person bind

Admin site

Game client

Nginx

RPC(AMF)

HTTP(S)

RPC(msgpack)

RPC(msgpack)

Cron­scripts

Page 17: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Технолоческий стек

Page 18: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Пишем код сервера●Код пишется довольно просто и быстро●Не забываем думать про производительность

●Не забываем, что код асинхронный●Много времени уходит на согласование взаимодействия сервера и клиента

Page 19: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Код в студию!

Page 20: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Деплоймент в production

Prod1

Prod2

СтатикаРеплика MySQLОбсчет статистики

MySQLRabbitMQRedisИгровые сервисыКрон­скрипты

Деплоймент: /dev/hands , rsync

Page 21: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Особенности соцсетей

● Вконтакте●Одноклассники● Nasza­klasa ● Facebook● Belbeit

Page 22: Социальный игровой сервер на Python: от первого коммита до продакшена

   

VK

●Легко выходить●Довольно неплохая документация

●Неплохая статистика●Платежи: вырезано цензурой

Page 23: Социальный игровой сервер на Python: от первого коммита до продакшена

   

ОК● Для релиза нужен договор 

● “Злой” процесс review приложения

● Отвратительная документация

● Кривенькая глючная статистика

● На старте игры много траффла

● “Веселый” биллинг :)

● Платежи: вырезано цензурой

Page 24: Социальный игровой сервер на Python: от первого коммита до продакшена

   

NK● Open Social

● “Сверхзлой” процесс review приложения

● Нет статистики из соц.сети● Платежи: вырезано цензурой

Page 25: Социальный игровой сервер на Python: от первого коммита до продакшена

   

FB

●Легко выходить●Отличная документация●Клевая статистика●Платежи: вырезано цензурой

Page 26: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Belbeit●Арабская!●Очень сырая●Плохая документация, зато есть прямой чат с разработчиками :)

●Мало людей ● Никакой статистики пока нет●Платежи: вырезано цензурой

Page 27: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Тактика на сервере●Правильные  структуры данных в памяти●Асинхронная обработка запросов● RPC для клиента, RPC для внутренних сервисов

● SQL+NoSQL+message queue: наше всё●Консольный игровой клиент – это клёво●Статику – в облако!(если что)

Page 28: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Стратегические аспекты

● “Толстый” клиент ­ “тощий” сервер

●Использование open­source●Ограничение фантазии гейм­дизайнера

Page 29: Социальный игровой сервер на Python: от первого коммита до продакшена

   

Спасибо за внимание

Контакты: ● Facebook: 

http://www.facebook.com/alexei.romanoff

● Email: [email protected]