选择Ruby on Rails作为基于浏览器的在线游戏的平台

时间:2011-01-12 13:19:38

标签: ruby-on-rails ruby

对于类似Travian的在线策略游戏,我有一些(我认为)非常好的想法。我还有一些内容尚未弄清楚以及其他一些我还不知道的挑战。

这是一个非常大的项目,对于一个不是熟练的Web开发人员的人来说可能太沉重了。我还是想尝试一下,但是我在选择平台时遇到了麻烦。世界“尺度”已经开了不少最近抛出,我已经看到Ruby on Rails的被撞坏,因为它不能很好地扩展,所以我来到这里得到一些答案。

我喜欢Ruby on Rails,Ruby和Rails。我当然不是专家,但我喜欢与它合作。我之前也使用过Python + Django,也使用过PHP(我不喜欢它。)

理想情况下,游戏将拥有每台服务器7000个玩家,可能每秒需要处理大量数据。 RoR仍然是一个可行的平台吗?

如果这个问题含糊不清,我很抱歉,我想我正在寻找“RoR很好,去吧!”那种答案。您可能想添加的任何内容都很好。

谢谢!

5 个答案:

答案 0 :(得分:6)

所以,如果我是你,我会研究像node.js这样的非阻塞服务器,因为它们更适合于长时间保持许多连接打开,这就是游戏需要做的事情,比较传统的网络服务器。

那就是说

在扩展网络应用时,要担心3件主要事项;内存,执行速度和io(高清和网络)的顺序。

对于记忆来说,事情比以前好多了。 Phusion Passenger在写入时使用copy来分叉其worker,因此rails环境将在给定切片上的所有worker之间共享,这非常重要。与“黑暗时代”相比,ruby管理内存的方式也有了很大的改进,如果你使用的是1.8.7那么你想要使用组成Ruby Enterprise Edition的补丁(区别就像白天和黑夜) 。 1.9.x几乎完全重写了运行时,所以如果你正在使用ruby已经解决了内存问题。

对于执行速度,1.8.7通常“足够快”(至少在调整垃圾收集设置之后)。 1.9.2实际上与python的速度大致相同,这使得它在解释语言的速度更快。这一点的重要性完全取决于您的应用程序的性质。

最后一点是IO,这不是rails的关注点,而是你的持久性策略。 Rubyist倾向于喜欢新事物,所以你会发现redis和mongodb之类的一流支持,有很多人在讨论使用它们以及它们的胜利/陷阱。如果我是你,我会调查mongo,看看耐用性是否可以接受。

在进入rails之前我在java / .net中,并且在一天结束时你将为基础设施支付更多费用,但是在开发时节省下的数量将完全相形见。

答案 1 :(得分:6)

在Rails中构建它,在Heroku.com上托管它 - 完成工作。几乎无限扩展,您不必担心它是如何工作的(它只是这样)并且它托管了许多高度流量的Facebook应用程序,因此可以处理它。

答案 2 :(得分:1)

正如你自己所说,你已经有了答案而你只是在寻找令人鼓舞的话语:)。我自己不是RoR专家,但我不认为可伸缩性在这个平台上仍然是一个很大的问题。我会建议你做一个架构尖峰(XP术语)。使用7000个客户端和方法编写测试,这些客户端和方法将执行与您要创建的操作类似的操作。例如,你可能会加载文件,渲染视图甚至只是等待......重点是只测试你担心的事情。祝你好运!

答案 3 :(得分:0)

这是一个不可能回答的问题,因为为了了解轨道是否适合您想要做的事情,我们需要更多关于您要做的事情。在没有信息的情况下,我可以提供的最佳建议是,您可以查看railslab scaling videos以便自行解决。

答案 4 :(得分:0)

我认为Ruby on Rails是您需要的最佳选择。实际上,我们最近为在线游戏锦标赛创建了一个平台,玩家和他们的游戏机器人正在玩一个逻辑游戏。

我们在后端使用Ruby on Rails和Sidekiq,在前端使用ReactJS和WebSocket。对于相当多的玩家来说,它运作良好。以下是基于我们在构建时学到的内容的教程:How to Write a Game Engine Using Ruby on Rails