Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Социальный игровой сервер на Python: от 
первого коммита до продакшена

 

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

●

●

●

 

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

 

 
Солдатики

 

 
Toy Monsters

 

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

 

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

 

 
Ингридиенты
●

●

Куча арта и сбалансированных карт

●

Готовые адаптеры для соц. cетей

●

 

Готовая игра на pc/android/...
Команда
●

●

●

●

 

Клиетский Flash­программист: 1 шт.
Серверный Python­программист: 1 
шт.
Гейм­дизайнер: 1 шт.
Художн...
С чего начать?
●

●

●

●

 

Написание дизайнерского документа 
тов. геймдизайнером
Согласование фич с руководством
Плани...
Планы релизов!
●

●

 

VK → OK → Facebook( + Zynga 
Network) → Nasha Klassa
Все фичи должны быть 
готовы уже для VK

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

●

Redmine + SVN

●

 

Все люди в одной комнате
Тестовый сервер

 
Что же делать 
программисту?
●

Проектировать архитектуру

●

Общаться с гейм­дизайнером

●

Проводить бенчмарки своего ко...
Компоненты игры

Клиент(Flash)
Клиент(Flash)
Client Social API

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

Server­to­client API
Server Social API
Се...
Архитектура 
игрового сервера
MySQL

Billing server

Game Server
Redis

Person bind

Admin site

RPC(msgpack)

RPC(msgpack...
Технолоческий стек

 

 
Пишем код сервера
●

●

●

●

 

Код пишется довольно просто и быстро
Не забываем думать про 
производительность
Не забыва...
Код в студию!

 

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

Prod2

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

MySQL
RabbitMQ
Redis
Игровые сервисы
Крон­...
Особенности соцсетей
●

●

Одноклассники

●

Nasza­klasa 

●

Facebook

●

 

Вконтакте

Belbeit
 
VK
●

●

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

●

●

 

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

●

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

●

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

●

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

●

На старте ...
NK
●

●

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

●

●

 

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

●

Отличная документация

●

Клевая статистика

●

 

Легко выходить

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

Арабская!

●

Очень сырая

●

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

●

●

Никакой ста...
Тактика на сервере
●

Правильные  структуры данных в памяти

●

Асинхронная обработка запросов

●

RPC для клиента, RPC дл...
Стратегические аспекты
●

●

●

 

“Толстый” клиент ­ “тощий” 
сервер
Использование open­source
Ограничение фантазии гейм­...
Спасибо за внимание
Контакты: 
●

●

 

Facebook: 
http://www.facebook.com/alexei.romanoff
Email: drednout.by@gmail.com

 
Upcoming SlideShare
Loading in …5
×

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

2,486 views

Published on

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

Published in: Technology
  • Be the first to comment

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

  1. 1. Социальный игровой сервер на Python: от  первого коммита до продакшена   Алексей Романов, ведущий разработчик Компании Melesta  
  2. 2. Пара слов о компании ● ● ● ●   Дата создания: 2008 год Пишем казуальные игр для  платформ PC, iOS, Android, Web В основном пишем на C++, Python,  Action Script Около 80 человек в штате  
  3. 3. Веселая ферма    
  4. 4. Солдатики    
  5. 5. Toy Monsters    
  6. 6. Цели доклада 1. Поделиться опытом создания социальных игр  2. Рассказать о архитектуре и реализации  социального игрового сервера на python  3. Рассказать об особенностях выпуска в  различных социальных сетях    
  7. 7. Вкратце о соцсетях    
  8. 8. О проекте Сотрудник отдела  продаж,  которого  едва не сожгли  на костре    
  9. 9. Ингридиенты ● ● Куча арта и сбалансированных карт ● Готовые адаптеры для соц. cетей ●   Готовая игра на pc/android/ios/tizen Скелет сервера   
  10. 10. Команда ● ● ● ●   Клиетский Flash­программист: 1 шт. Серверный Python­программист: 1  шт. Гейм­дизайнер: 1 шт. Художник: 0.5  (арт ведь уже весь  есть!!)  
  11. 11. С чего начать? ● ● ● ●   Написание дизайнерского документа  тов. геймдизайнером Согласование фич с руководством Планирование работы и график  релизов Организация работы команды  
  12. 12. Планы релизов! ● ●   VK → OK → Facebook( + Zynga  Network) → Nasha Klassa Все фичи должны быть  готовы уже для VK  
  13. 13. Организация  работы ● ● Redmine + SVN ●   Все люди в одной комнате Тестовый сервер  
  14. 14. Что же делать  программисту? ● Проектировать архитектуру ● Общаться с гейм­дизайнером ● Проводить бенчмарки своего кода и  других проектов ● ●   Развернуть тестовый сервер Апгрейдить технологический стек  
  15. 15. Компоненты игры Клиент(Flash) Клиент(Flash) Client Social API Социальная сеть Server­to­client API Server Social API Сервер(Python)    
  16. 16. Архитектура  игрового сервера MySQL Billing server Game Server Redis Person bind Admin site RPC(msgpack) RPC(msgpack) Rabbitmq Login Server RPC(AMF) Nginx Cron­scripts HTTP(S) Game client    
  17. 17. Технолоческий стек    
  18. 18. Пишем код сервера ● ● ● ●   Код пишется довольно просто и быстро Не забываем думать про  производительность Не забываем, что код асинхронный Много времени уходит на согласование  взаимодействия сервера и клиента  
  19. 19. Код в студию!    
  20. 20. Деплоймент в  production Prod1 Prod2 Статика Реплика MySQL Обсчет статистики MySQL RabbitMQ Redis Игровые сервисы Крон­скрипты Деплоймент: /dev/hands , rsync    
  21. 21. Особенности соцсетей ● ● Одноклассники ● Nasza­klasa  ● Facebook ●   Вконтакте Belbeit  
  22. 22. VK ● ● Легко выходить Довольно неплохая  документация ● ●   Неплохая статистика Платежи: вырезано цензурой  
  23. 23. ОК ● ● “Злой” процесс review приложения ● Отвратительная документация ● Кривенькая глючная статистика ● На старте игры много траффла ● “Веселый” биллинг :) ●   Для релиза нужен договор  Платежи: вырезано цензурой  
  24. 24. NK ● ● Open Social “Сверхзлой” процесс review  приложения ● ●   Нет статистики из соц.сети Платежи: вырезано цензурой  
  25. 25. FB ● ● Отличная документация ● Клевая статистика ●   Легко выходить Платежи: вырезано цензурой  
  26. 26. Belbeit ● Арабская! ● Очень сырая ● Плохая документация, зато есть прямой чат с  разработчиками :) ● ● Никакой статистики пока нет ●   Мало людей  Платежи: вырезано цензурой  
  27. 27. Тактика на сервере ● Правильные  структуры данных в памяти ● Асинхронная обработка запросов ● RPC для клиента, RPC для внутренних  сервисов ● ● Консольный игровой клиент – это клёво ●   SQL+NoSQL+message queue: наше всё Статику – в облако!(если что)  
  28. 28. Стратегические аспекты ● ● ●   “Толстый” клиент ­ “тощий”  сервер Использование open­source Ограничение фантазии гейм­ дизайнера  
  29. 29. Спасибо за внимание Контакты:  ● ●   Facebook:  http://www.facebook.com/alexei.romanoff Email: drednout.by@gmail.com  

×