SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Социальный игровой сервер на Python: от 
первого коммита до продакшена

 

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

●

●

●

 

Дата создания: 2008 год
Пишем казуальные игр для 
платформ PC, iOS, Android, Web
В основном пишем на C++, Python, 
Action Script
Около 80 человек в штате
 
Веселая ферма

 

 
Солдатики

 

 
Toy Monsters

 

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

 

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

 

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

 

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

●

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

●

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

●

 

Готовая игра на pc/android/ios/tizen

Скелет сервера 

 
Команда
●

●

●

●

 

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

●

●

●

 

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

●

 

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

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

●

Redmine + SVN

●

 

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

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

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

●

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

●

Проводить бенчмарки своего кода и 
других проектов

●

●

 

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

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

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

Server­to­client API
Server Social API
Сервер(Python)

 

 
Архитектура 
игрового сервера
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

 

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

 

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

●

●

●

 

Код пишется довольно просто и быстро
Не забываем думать про 
производительность
Не забываем, что код асинхронный
Много времени уходит на согласование 
взаимодействия сервера и клиента
 
Код в студию!

 

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

Prod2

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

MySQL
RabbitMQ
Redis
Игровые сервисы
Крон­скрипты

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

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

●

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

●

Nasza­klasa 

●

Facebook

●

 

Вконтакте

Belbeit
 
VK
●

●

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

●

●

 

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

●

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

●

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

●

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

●

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

●

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

●
 

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

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

●

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

●

●

 

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

●

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

●

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

●

 

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

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

Арабская!

●

Очень сырая

●

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

●

●

Никакой статистики пока нет

●

 

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

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

●

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

●

RPC для клиента, RPC для внутренних 
сервисов

●

●

Консольный игровой клиент – это клёво

●

 

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

●

●

 

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

●

 

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

 

Weitere ähnliche Inhalte

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

Хочу делать игры, пусть меня научат — DevDay, 06.06.2012
Хочу делать игры, пусть меня научат — DevDay, 06.06.2012Хочу делать игры, пусть меня научат — DevDay, 06.06.2012
Хочу делать игры, пусть меня научат — DevDay, 06.06.2012
DevDay
 
CodeFest 2012. Шергин Д. — Разработка мульти-платформенных 3D-игр
CodeFest 2012. Шергин Д. — Разработка мульти-платформенных 3D-игрCodeFest 2012. Шергин Д. — Разработка мульти-платформенных 3D-игр
CodeFest 2012. Шергин Д. — Разработка мульти-платформенных 3D-игр
CodeFest
 

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

Хочу делать игры, пусть меня научат — DevDay, 06.06.2012
Хочу делать игры, пусть меня научат — DevDay, 06.06.2012Хочу делать игры, пусть меня научат — DevDay, 06.06.2012
Хочу делать игры, пусть меня научат — DevDay, 06.06.2012
 
Разработка игр в небольшой компании
Разработка игр в небольшой компании Разработка игр в небольшой компании
Разработка игр в небольшой компании
 
Publishing a Unity based Title on mobile, PC and consoles
Publishing a Unity based Title on mobile, PC and consolesPublishing a Unity based Title on mobile, PC and consoles
Publishing a Unity based Title on mobile, PC and consoles
 
Разработчик компьютерных игр
Разработчик компьютерных игрРазработчик компьютерных игр
Разработчик компьютерных игр
 
Tiny Build: No Time To Explain: from Flash to Steam through Kickstarter
Tiny Build: No Time To Explain: from Flash to Steam through KickstarterTiny Build: No Time To Explain: from Flash to Steam through Kickstarter
Tiny Build: No Time To Explain: from Flash to Steam through Kickstarter
 
«Путь от инди-разработчика до гейм-дизайнера в студии»
«Путь от инди-разработчика до гейм-дизайнера в студии»«Путь от инди-разработчика до гейм-дизайнера в студии»
«Путь от инди-разработчика до гейм-дизайнера в студии»
 
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
Разработка мультиплатформенных 3D игр (Unigine, CodeFest2012)
 
CodeFest 2012. Шергин Д. — Разработка мульти-платформенных 3D-игр
CodeFest 2012. Шергин Д. — Разработка мульти-платформенных 3D-игрCodeFest 2012. Шергин Д. — Разработка мульти-платформенных 3D-игр
CodeFest 2012. Шергин Д. — Разработка мульти-платформенных 3D-игр
 
Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)Character creation pipeline for Age of Magic (3D mobile)
Character creation pipeline for Age of Magic (3D mobile)
 
Indie Gamedev
Indie GamedevIndie Gamedev
Indie Gamedev
 
[Skolkovo Robotics 2015 Day 3] Жильцов А. Виртуальный полигон 1С
[Skolkovo Robotics 2015 Day 3] Жильцов А. Виртуальный полигон 1С[Skolkovo Robotics 2015 Day 3] Жильцов А. Виртуальный полигон 1С
[Skolkovo Robotics 2015 Day 3] Жильцов А. Виртуальный полигон 1С
 
Python для GameDev
Python для GameDevPython для GameDev
Python для GameDev
 
WitchCraft
WitchCraftWitchCraft
WitchCraft
 
Kranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burmaKranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burma
 
Александр Фадин
Александр ФадинАлександр Фадин
Александр Фадин
 
Как сделать игру быстрее
Как сделать игру быстрееКак сделать игру быстрее
Как сделать игру быстрее
 
Unreal Engine 4: Best Practices and Recent Showcases
Unreal Engine 4: Best Practices and Recent ShowcasesUnreal Engine 4: Best Practices and Recent Showcases
Unreal Engine 4: Best Practices and Recent Showcases
 
Radug zeptolab
Radug zeptolabRadug zeptolab
Radug zeptolab
 
Игрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботовИгрушки на вырост. Программируем Lego-роботов
Игрушки на вырост. Программируем Lego-роботов
 
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
 

Mehr von Python Meetup

S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014
Python Meetup
 
Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"
Python Meetup
 

Mehr von Python Meetup (20)

Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15] Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15]
 
Как скачать статистику игроков World of Tanks / Павел Пересторонин [Python Me...
Как скачать статистику игроков World of Tanks / Павел Пересторонин [Python Me...Как скачать статистику игроков World of Tanks / Павел Пересторонин [Python Me...
Как скачать статистику игроков World of Tanks / Павел Пересторонин [Python Me...
 
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
 
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 Practical Python Packaging / Стас Рудаков / Web Developer Wargaming Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
Practical Python Packaging / Стас Рудаков / Web Developer Wargaming
 
Python&Printer / Андрей Пучко / penta.by
Python&Printer / Андрей Пучко / penta.byPython&Printer / Андрей Пучко / penta.by
Python&Printer / Андрей Пучко / penta.by
 
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...
 
OpenSource CMS и ERP система в одном флаконе / Олег Курьян / технический дире...
OpenSource CMS и ERP система в одном флаконе / Олег Курьян / технический дире...OpenSource CMS и ERP система в одном флаконе / Олег Курьян / технический дире...
OpenSource CMS и ERP система в одном флаконе / Олег Курьян / технический дире...
 
Про асинхронность / Максим Щепелин / Web Developer Wargaming
Про асинхронность / Максим Щепелин / Web Developer WargamingПро асинхронность / Максим Щепелин / Web Developer Wargaming
Про асинхронность / Максим Щепелин / Web Developer Wargaming
 
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекSWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
 
Wargaming: тыл - фронту!
Wargaming: тыл - фронту!Wargaming: тыл - фронту!
Wargaming: тыл - фронту!
 
Язык программирования GO
Язык программирования GOЯзык программирования GO
Язык программирования GO
 
Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"Максим Щепелин. "Unittesting. Как?"
Максим Щепелин. "Unittesting. Как?"
 
Redis. Как мы боролись со сложностью
Redis. Как мы боролись со сложностьюRedis. Как мы боролись со сложностью
Redis. Как мы боролись со сложностью
 
Обзор фреймворка Twisted
Обзор фреймворка TwistedОбзор фреймворка Twisted
Обзор фреймворка Twisted
 
Обзор способов написания конкурентных программ в питоне
Обзор способов написания конкурентных программ в питоне Обзор способов написания конкурентных программ в питоне
Обзор способов написания конкурентных программ в питоне
 
Pebble
PebblePebble
Pebble
 
Очередной скучный доклад про логгирование
Очередной скучный доклад про логгированиеОчередной скучный доклад про логгирование
Очередной скучный доклад про логгирование
 
Python для анализа данных
Python для анализа данныхPython для анализа данных
Python для анализа данных
 

Kürzlich hochgeladen

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 

Kürzlich hochgeladen (9)

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 

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