На чем писать сервер для игры?

Добрый день, уважаемые хабровчане!
Мы - небольшая команда разработчиков игр, успешно релизнули несколько мобильных игрушек. Сейчас у нас возникло желание сделать онлайн RPG игру, но мы никак не можем определиться с серверной технологией. У нас есть опыт работы с Node.JS, но мы не уверены, что он подойдет для игры у которой будет тысяча человек в онлайне. Традиционно используют JAVA для подобных задачь, но мы с ней знакомы только поверхностно. Связка Python+Twisted выглядит очень заманчиво, но попрог вхождения весьма высокий. Да и вообще - глаза разбегаются от огромного разнообразия технологий, у нас на рассмотрении еще Go и .NET.
Словом, помогите нам определиться с выбором! Нужно максимально простое решение с возможностью масштабировать сервер. Не обязательно самое производительное - железо всегда можно докупить.
  • Вопрос задан
  • 10173 просмотра
Пригласить эксперта
Ответы на вопрос 11
sim3x
@sim3x
Сколько десятков игр у вас перешагнули 10k rps/online?
0?
Делайте на чем угодно
Взлетит - перепишете
Ответ написан
@Nwton
У нас есть опыт работы с Node.JS
не уверены, что он подойдет для игры у которой будет тысяча человек в онлайне
Смешно.
Ответ написан
@taktik
QA automation engineer
Я бы выбрал Go, он отлично подходит для разработки серверной части игр.
Для общения с клиентом можно использовать protobuf.

Вот пример ммо игры, в которой сервер на Go - https://habrahabr.ru/post/321148/
В комментах есть ссылка на видео-доклад, в котором раскрываются технические детали сервера.
Ответ написан
@Frel
На распутье
А на чем пишите игры? Unity? Если да то под C#, .net!
Если на java то на java!
Или то, что знаете, на том и пишите!
Ответ написан
NYMEZIDE
@NYMEZIDE
резюме - ivanfilatov.ru
C++, .Net, Java - берите то что умеете и хорошо знаете.
По производительности С++ лучше.

Но лучше всего вам будет нанять человека с таким опытом к себе в команду.
Ответ написан
saboteur_kiev
@saboteur_kiev
build engineer
Количество онлайн вообще не так считается. Все зависит от игры.
У меня был проект с онлайн под 100.000 в сутки. Легко держалось на php/fastcgi, правда для одной штуки пришлось написать примочку на ассемблере и внедрить как либу для apache, но к онлайну это отношения не имеет.

Напишите нагрузочный тест, прикиньте что именно будут делать игроки. Можно плясать как от языка, так и от архитектуры игры. Например писать что-то типа aion/lineage - я бы предпочел C++, а не java. Хотя эмуляторы на java вполне держали под 1000 онлайн на среднем сервере еще до оптимизации.
В общем все зависит от трафика и требованию к реакции игрока.
Ответ написан
@Elizavetta
Matroid: gamedev/js-разработка
В 2017 заслуживает внимания Kotlin - он создавался для поддержки очень больших java-проектов, код действительно гораздо более компактный, и nullability!)
Node.js к сожалению не так хорош для самых больших проектов, сложно поддерживать, на каком-то этапе нужно переносить.
Python тоже возможен, местами, есть примеры.
Ответ написан
Epsiloncool
@Epsiloncool
Программер, веб-девелопер, гейм-девелопер
Тоже выбираю сервер сейчас для игры, прочитал море отзывов про существующие сервера и технологии, пока остановился на Forge. Он запускается в инстансе Unity и поддерживает всю юнитевскую физику, коллайдеры и иже с ними, а значит Fully Authoritative на нём будет реализовать довольно просто.

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

С другой стороны, реализовывать совсем всё с нуля - у нас нет столько времени и денег, чтобы этим заниматься. Поэтому пишем под юнити и соответственно сервер наиболее подходящий берём.
Ответ написан
@bioroot
[irony]Из новомодных языков Rust ещё не упомянули. Пишите на нём.[/irony] А если нет чёткого понимания на чём писать игру, то я бы взял Unity. Много уроков, библиотек, большое комьюнити, на рынке есть разработчики под неё при необходимости расширять штат, C# - строгий и понятный язык. Ну и саму Unity активно пилят дальше. И с учётом того что в современном мире нужно выкатить продукт как можно скорее, даже и не знаю, есть ли хорошие альтернативные варианты, если у вас нет за плечами большого багажа из прочих вышеперечисленных технологий под высокую нагрузку.

P.S.: В рамках js можно было бы ещё упомянуть MeteorJS. Но на мой взгляд, если игра real-time, а не turn-based, то он не потянет.
Ответ написан
Как я увидел в комментариях, раз уж хотите отказаться от ООП (сам не люблю его), то берите Go.
Сильно там всё равно не набыдлокодить, а вот инструменты по типу сетевых соединений и параллельная работа очень простые и легко освоите, чтобы сделать сервер.

У самого был опыт создания игрового сервера на Go, но там игра пошаговая, так что мой пример вам не поможет :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы