Как стать автором
Обновить

Создание сервера для онлайн ММО игр ч. 6 — Выбор технологий, протокола и архитектурный шаблон Entity Component System

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.7K
Всего голосов 6: ↑3 и ↓30
Комментарии14

Комментарии 14

У нас уже все есть для запуска игровой индустрии.

С меня движок для игр(убийца юнити, не имеющий аналогов в мире): https://github.com/space2pacman/elpy

С вас движок для сервера))

Ну кстати в мой проект можно встраивать JS код из админ панели (для расчёта физики)

Проект что я разрабатываю прикруживается к любому игровому движку что может открыть Websocket (это и unity и unreal engine и js)

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

Было бы хорошо написать про ограничения сервера. Например какой лимит игроков(если кто-то делает ММОРПГ там может быть и 20к игроков разом), про масштабирование я так понял еще не думали?
Всякие редисы и очереди делают для горизонтального масштабирования.

"Всякие редисы" - делают не для масштабирования, а для хранения данных в первую очередь и они слишком медленные. Горизонтально масштабирумое решение можно и 200к разом. Это 6-ая по счету статья-вся информация разбита по частям

Редис это in-memory кеш, который часто служит связкой между несколькими инстансами, в качестве общего кеша/памяти(причём сам Редис может горизонтально масштабироваться тоже, синхронизируя состояние, но это для особо больших решений).
Поэтому и участвует в масштабировании, когда можно в любой момент добавить сервер или убрать лишний, не теряя состояние мира/игроков/или любой другой stateful операции.
А использовать его "просто для хранения" глупо, только лишние запросы по сети. Фунционал редиса локально можно кеш библиотеками сделать.
Но для потенциального масштабирования в будущем лучше делать абстракции/интерфейсы которые потом позволят изменить имплементацию хранилища (in memory прежде всего) и использовать тот же редис, не изменяя основную логику сервера.

Вы думаете я не знаю что такое redis ? У меня статья есть на эту тему. Пусть другие и использую для мастштабирования веб приложений, а для игрового сервера 60.000 rps больно медленно.

У меня мастштабирование идёт целыми локации игровыми.

И локаций может быть неограниченное число. Некоторые на одном физическом сервере, другие на другом и игроки по ним ходят

И я на согласен что redis "просто для хранения использовать глупо" - это его основная функция и довольно быстрая по сравнению с sql базами

Текущий vps за 10$ без оптимизации полагаю выдержит не более 2000 онлайн , вот ссылка на последние тесты http://my-fantasy.ru/articles/frontend/index/eyJpZCI6OX0=

Что бы дать точное количество нужно точно знать для какой игры. Мое решение не игра, а технология где сервер делает все расчёты в тч физики. Если использовать его как типовой роутер на прием и пересылку запросов от игроков то и больше цифра онлайн

Так или иначе 20к игроков разом это что же за карта должна быть...

Думаю уже через месяц (сегодня начну) я сделаю открой мир, напишу очередную статью, покажу видео и расскажу про масштабирование что использую более подробно

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации