Архітектура сервера онлайн-ігри на прикладі Skyforge

  Привіт, Хабр! Я Андрій Фролов, ведучий програміст, працюю в Mail.Ru над Next-Gen MMORPG Skyforge. Ви могли читати мою статтю про архітектуру баз даних в онлайн-іграх. Сьогодні я буду розкривати секрети, що стосуються пристрою сервера Skyforge. Постараюся розповісти максимально детально, з прикладами, а також поясню, чому було прийнято те чи інше архітектурне рішення. На нашу сервера без перебільшення можна написати цілу книгу, тому для того, щоб укластися в статтю, мені доведеться пройтися тільки по основних моментах.
 
 image
 
 
Читати далі →

Мінімалізм віддаленого взаємодії на C + +11

  Деякий час тому мною був опублікований пост про створення власної системи плагінів на C + +11 [1] . Де було розказано про плагіни в рамках одного процесу. Є бажання дати можливість плагінам не залежати від процесу і комп'ютера, на якому вони виконуються. Зробити межпроцессное та віддалене взаємодія. Для цього треба вирішити пару завдань: створити набори Proxy / Stub і надати транспорт для обміну даними між клієнтом і сервером.
 
У багатьох бібліотеках, призначених для організації віддаленого взаємодії пропонується деякий скрипт або утиліта для генерації Proxy / Stub з деякого опису інтерфейсу. Так, наприклад для libevent [2] при використанні її частині, пов'язаній з RPC, є скрипт event_rpcgen.py, який з С-подібного опису структур генерує код для Proxy / Stub, а транспортом вже служить інша частина libevent. Так само gSOAP [3] надає утиліту генерації коду з C + +-подібного опису структур даних або з WSDL-опису і має свій вбудований транспорт, який можна використовувати. gSOAP хороший і цікавий продукт і в ньому застосування утиліти автогенерації коду виправдано, т. к. з C + +-подібного опису можна згенерувати WSDL-опис, який вже може бути використано при роботі з Web-сервісами з інших мов програмування.
 
Можна знайти ще кілька прикладів бібліотек для побудови клієнт-серверної взаємодії. Багато з них будуть пропонувати використовувати ті чи інші механізми генерації Proxy / Stub і свій вбудований транспорт.
 
Як можна взяти за основу будь-який відомий транспорт і відмовитися від утиліт генерації коду Proxy / Stub, поклавши це завдання на компілятор і скористатися перевагами C + +11 для створення об'єктного інтерфейсу віддаленого взаємодії з мінімальними трудовитратами його використання? Про принципи та реалізації у вигляді закінченого проекту , який може бути використаний як бібліотека при розробці свого клієнт-серверного додатка викладені нижче.
 
Читати далі →