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

1,950 views

Published on

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

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,950
On SlideShare
0
From Embeds
0
Number of Embeds
67
Actions
Shares
0
Downloads
17
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Социальный игровой сервер на 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  

×