Выбор Ruby on Rails в качестве платформы для браузерной онлайн-игры - PullRequest
9 голосов
/ 12 января 2011

У меня есть несколько (я думаю) действительно отличных идей для онлайн-стратегии, похожей на Travian.Есть контент, который я еще не понял, и некоторые другие проблемы, о которых я пока не знаю.

Это довольно большой проект и, возможно, слишком тяжелый для одного человека, который не является опытным веб-специалистом.разработчик (пока).Я все еще хотел бы попробовать, но у меня проблемы с выбором платформы.В последнее время мир «разбрасывается» по всему миру, и я видел, как Ruby on Rails рушится, потому что он плохо масштабируется, поэтому я пришел сюда, чтобы получить ответы.

Мне нравится Rubyна Rails, как Ruby, так и Rails.Я конечно не эксперт в этом, но я люблю работать с этим.Я также раньше работал с Python + Django, а также с PHP (который мне не нравится.)

В идеале игра должна иметь, скажем, 7000 игроков на сервер, предположительно много данных, которые нужно обработатьв секунду.Будет ли RoR все еще жизнеспособной платформой?

Извините, если этот вопрос расплывчатый, я думаю, что я ищу "RoR в порядке, иди на это!"такой ответ.Все, что вы можете добавить, подойдет.

Спасибо!

Ответы [ 5 ]

6 голосов
/ 12 января 2011

Итак, на вашем месте я бы изучал неблокирующие серверы, такие как node.js, просто потому, что они НАМНОГО больше подходят для того, чтобы многие соединения оставались открытыми в течение длительных периодов времени, а это то, что нужно делать играм, по сравнению с на традиционные веб-серверы.

Как говорится

При масштабировании веб-приложения необходимо учитывать три основных момента; память, скорость выполнения и IO (HD и сеть) в этом порядке.

Что касается памяти, все намного лучше, чем раньше. Phusion Passenger использует копирование при записи для разветвления своих рабочих, поэтому среда рельсов будет распределена между всеми работниками в данном срезе, что довольно существенно. Кроме того, было значительно улучшено управление памятью в ruby ​​по сравнению с «темными временами», если вы используете 1.8.7, то вы хотите использовать патчи, составляющие Ruby Enterprise Edition (разница как днем ​​и ночью) , 1.9.x был в значительной степени полностью переписан во время выполнения, поэтому, если вы используете это, проблемы с памятью ruby ​​уже были устранены.

Для скорости выполнения 1.8.7 обычно "достаточно быстр" (по крайней мере, после настройки параметров сборки мусора). 1.9.2 на самом деле примерно с той же скоростью, что и python, что делает его более быстрым в интерпретируемых языках. Насколько важен этот пункт, полностью зависит от характера вашей заявки.

Последний пункт - это IO, который на самом деле не имеет отношения к рельсам, а скорее к вашей стратегии настойчивости. Rubyists, как правило, любят новые вещи, поэтому вы найдете первоклассную поддержку для таких вещей, как redis и mongodb, с множеством людей, говорящих об их использовании и их победах / ошибках. Я бы посмотрел на монго на твоем месте и увидел бы приемлемость компромиссов в отношении долговечности.

Я был в java / .net до перехода на рельсы, и в конце дня вы будете платить больше за инфраструктуру, но сумма будет полностью уменьшена за счет того, что вы сэкономите во время разработки.

6 голосов
/ 12 января 2011

собрать его в Rails, разместить его на Heroku.com - работа выполнена.Почти бесконечное масштабирование, поэтому вам не нужно беспокоиться о том, как он работает (он просто работает), и на нем размещено множество приложений Facebook с высокой посещаемостью, поэтому он может с этим справиться.

1 голос
/ 12 января 2011

Как вы сказали сами, у вас уже есть ответ, и вы ищете только ободряющие слова :). Я сам не эксперт по RoR, но я не думаю, что масштабируемость все еще является такой большой проблемой на этой платформе. Я бы посоветовал вам сделать пик архитектуры (терминология XP). Напишите тест с 7000 клиентов и метод, который будет выполнять операции, аналогичные тому, что вы собираетесь создать. Например, вы можете загружать файлы, визуализировать представления или даже просто ждать ... Дело в том, чтобы протестировать только то, что вас беспокоит. Удачи!

0 голосов
/ 12 марта 2018

Я думаю, что Ruby on Rails - хороший выбор для того, что вам нужно. На самом деле, мы недавно создали платформу для онлайн игрового турнира, где игроки и их игровые роботы играют в логическую игру.

Мы использовали Ruby on Rails и Sidekiq на бэкэнде, ReactJS и WebSocket на веб-интерфейсе. И это хорошо сработало для довольно большого количества игроков. Вот руководство, основанное на том, что мы узнали при его создании: Как написать игровой движок с использованием Ruby on Rails

0 голосов
/ 12 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...