红宝石适合游戏开发吗?[关闭]


33

我想从事一些游戏开发,但是我唯一真正了解的语言是Ruby。我读过的大多数内容似乎都指向诸如游戏开发的C ++之类的较低级语言,或针对使用XNA的诸如C#之类的特定框架的语言。有没有人有使用ruby之类的语言进行游戏开发的经验?如果是这样,您会建议还是反对?

Answers:


47

我对Ruby(或Python)没有偏爱,我本人是Java。但是UnknownDevice关于Ruby如何以某种方式“不适用于游戏”和Python的答案令我感到沮丧。我希望他能澄清。

我知道Pygame存在并且已经存在,并且我认识到Python的用户群比Ruby大。但老实说,它们似乎都不是“游戏”的语言。Java也没有,那是我选择的游戏编程语言。(当我说“选择”时,我的意思是选择,而不是因为这是学校所教的内容,也不是因为我“知道”这一点)。实际上,什么是“游戏”语言?嗯,速度是一个因素,显然它必须具有用于图形和其他游戏系统(音频,输入等)的库。

就速度而言,这似乎是Ruby和Python之间的一次折衷。进行一些搜索,您会很快找到频谱两侧的基准和参数,以及使两者领先的各种配置。与Ruby相比,带有“ Psycho”字样的Python似乎是一个流行的速度魔鬼,但是普通的Python似乎比Ruby慢一些。最后,如果您选择了如此高级的语言,那么您显然根本不会在乎本地速度。使用您最了解的语言。显然您最了解Ruby,所以我鼓励您!

另一个因素是是否有创造游戏的技术。是否支持在屏幕上绘制以及收集输入和播放音频。Ruby可以完成所有这些工作。实际上,在这方面有很多选择。RubyForge上有一个ruby-opengl软件包,它将为Ruby提供OpenGL支持(或者默认情况下可能包含它?)。另外,Chingu提供“闪电般的OpenGL加速2D图形!” 根据其主页;它在Gosu之上构建了额外的功能,如果Chingu对您来说太多了,您可以选择使用这些功能。对于3D图形,如果您不想使用ruby-opengl,请尝试G3DRuby,“它是许多更高级的OpenGL功能的非常干净的包装类集”。那里'Rubygame,我找不到很多信息,但是它声称是“跨平台多媒体库”,并且命名为Rubygame,必须重点开发游戏。如果您熟悉流行的C ++ SDL库,则可以使用Ruby / SDLRUDL,它们都是SDL的Ruby包装器。或者,如果您更喜欢新的,更面向对象的SFML,那么它也可用于Ruby!

毫无疑问,Ruby应该比Python少一种游戏编程语言。如果有的话,我真的很想听听它,以便可以反对它。如果您对使用Ruby编程感到最自在,并且意识到与其他流行语言相比的优缺点,那么您绝对可以使用Ruby开发游戏!


+1,但您应该在控制台等专有平台上添加一些语言使用限制的信息(硬件和构造函数策略的限制)。如果自制游戏是为了接受行业培训而制作的,则在游戏本身上使用Ruby本身并没有帮助。对于台式机游戏,“为什么不呢?”
克莱姆(Klaim)2010年

@Klaim我认为它变得越来越不重要了,我将很想知道下一代或以后的控制台所使用的语言。它们可能会继续用C ++进行开发,但是我个人认为它们很可能会向高级语言发展。例如,Android开发是使用Java。并不是说Android完全是一个游戏机。但是也许像Go这样的混合语言将成为一两代控制台中的新流行语言。
莉吉特

1
我同意这一原则,也许Go或D在这方面取得了成就。但是我认为在这个行业中只有系统语言才能成为“标准”。但是,我说的是行业,而不是视频游戏领域的独立领域。我认为,如果您按照自己的方式行事(不是一家大型公司的薪水),那么您就有机会使用您想要的任何东西。但是,当您要在控制台以外的任何其他功能上进行操作时,仍然需要使用构造函数要求的工具。手机使用Java,但是在相同的手机上,许多C ++用于性能更高的应用程序。
克莱姆(Klaim)2010年

实际上,我认为由于视频游戏行业甚至在采用当前标准C ++方面也很缓慢,因此很有可能您需要等很多年才能在控制台上使用C ++以外的其他任何东西。构造函数和开发人员的工作方式可能会发生变化,但是从今天开始很难想象。
克莱姆(Klaim)2010年

我只是补充说,在许多类型的游戏中,最高性能都不是问题。当然,在制作新的《孤岛危机》时,您会想要从中压缩每一帧,但是有很多不必要的游戏。在此类游戏上,您可能还需要其他几种语言(例如,着色器语言,《文明4和5》之类的游戏也依赖脚本语言)。
MartinTeeVarga

9

http://gafferongames.com/2009/01/11/ruby-is-not-at-all-suitable-for-game-development/

该URL可能有点破坏。

tl; dr:天真的垃圾回收器是一个真正的问题。


非常翔实!Ruby专家能否评论一下今天是否仍然适用?这篇文章的日期为2009年1月,从那时起发生了很多事情,我不会感到惊讶。编辑好的,我刚刚找到一篇日期为2010年9月3日的文章,该文章暗示实际上今天仍然如此,并说“ Ruby垃圾收集器并不意味着要运行”-很有趣!jabberwocky.eu/2010/09/03/ruby-garbage-collection
Ricket

1
Ruby的垃圾收集器是按标记清除的,但是在循环的情况下,Python和Lua也是如此(实际上,在我开发的Python游戏中,正是出于这个原因,我们不得不延迟GC)。我还没有做过基准测试,但是也许Ruby只是偶然地慢了,而不是从根本上慢了。我不认为这是避免使用Ruby的非常有说服力的理由,尤其是如果您像发问者那样完全在Ruby中构建游戏时。只需禁用GC直到合适的时间即可。

1
自从发布以来已经有一段时间了,但是请查看这篇有趣的文章。patshaughnessy.net/2012/3/23/…关于Ruby 2.0中的垃圾收集器。这是GC建设者的主题演讲youtube.com/watch?v=4fIdEeM0Fyg该视频到Ruby 2.0发行时可能已有1.5到2年的历史,因此可能会在性能和GC方面做出更多改进。这可能会使Ruby更适合用于对象繁重的游戏。我当然希望如此!我相信Ruby 2.0会在2013
。– Michael van Rooijen 2012年

1
除MRI之外,还有其他VM支持不同的垃圾收集系统,包括Matz自己的新mruby,其中包括增量垃圾收集系统。到目前为止,mruby正在成为游戏的绝佳选择。它甚至可以在iOS和Android上运行!
Stephen Belanger 2012年

5

没有理由不能这样做。只要语言支持多媒体,那么它就是gamedev的材料。哎呀,过山车大亨游戏之一很大一部分是在ASM中手工完成的。


3
你有点矛盾。“用asm手工编码游戏”与“用ruby编码游戏”或其他一些真正高级语言完全相反。
bobobobo 2012年

1

虽然我不熟悉围绕Ruby进行的许多深入的规范工作,但Enterbrain创建了使用基于Ruby的游戏脚本的游戏制作程序RPG Maker VX和RPG Maker XP:http : //www.rpgmakerweb.com/

这实际上是我第一次学习该语言。就像大多数人所说的那样,您可能无法获得其他语言的高性能,但是如果您要启动2D RPG(或其他真正的2D游戏),它可能是最复杂的游戏编辑器之一。救命。


0

Ruby是一种不错的语言,但说实话,游戏并不是真的。如果您不想使用C ++,但是想要像Ruby这样的东西,请查看Python。对于一个好的Python框架,您应该查看类似www.cocos2d.org/的内容。


3
...或www.pygame.org
伊恩·施雷伯

6
这是无稽之谈。Ruby与Python一样,是一种“用于游戏”的语言。
里奇(Ricket)2010年

2
废话 您可能会说Lua不适合游戏。
Kornel Kisielewicz 2010年

2
有相当于pygame的红宝石吗?我不会说一种语言比另一种更适合。但是可以合理地说python具有更好的游戏库和gamedev社区。
deft_code

我觉得有一个SFML移植到ruby。
共产党鸭子

0

这取决于您对编写哪种游戏感兴趣。我用ruby编写了包括《外交》,《扑克》和《失落的城市》在内的几款游戏的AI客户。我发现这是一种用于快速尝试不同概念的非常友好的语言。另一方面,我不想用它来编写我的实时射击游戏-它只是没有我需要的性能。


0

您的问题太笼统了。您是否只想将一些计算机游戏作为爱好项目编写,还是想从事独立/专业游戏开发?它会有图形吗?它应该在哪些平台上运行?

通常,Ruby适用于爱好项目(顺便说一句,我最喜欢的Ruby游戏是Ruby Warrior),也适合开发基于Web的游戏,例如Farmville。甚至对于此类程序员都有一定的需求,请尝试搜索类似“红宝石程序员社交游戏”的内容。

另一方面,如果要开发带有图形的基于桌面或移动的游戏,则Ruby不是最佳选择。考虑:

  • 支持Coffeescript的Javascript库(其语法与Ruby非常相似)
  • Python-非常类似于Ruby,更好的游戏库

0

不要指望用Ruby编写高性能,专业,商业的3D游戏,但是Ruby是学习游戏开发概念时使用的出色语言。

Gosu是最流行(且积极维护)的库,用于使用Ruby编写2D游戏。它具有一个基础C ++库,可用于提高性能并与诸如OpenGL之类的基础显示渲染库进行交互。

就性能而言,“默认” Ruby实现(MRI)可以很好地工作(我建议使用最新的Ruby 2.0以获得最佳性能),但是也有其他替代实现,这些实现具有本机线程和替代垃圾回收算法,例如Rubinius,JRuby等。如果您正在使用线程,则可能需要尝试Rubinius,否则MRI Ruby可以正常工作。


-2

我说Python是因为它拥有更大的用户群,并且在游戏开发的框架/库方面有更多选择。很明显,这个人没有游戏开发经验,所以对我来说建议他们使用Ruby之类的东西是没有道理的,因为这是可能的。

当我在游戏上工作时,我将C ++与Lua一起使用,我不会因为具有媒体支持而开始在Visual Basic中编写游戏。我敢肯定,这里的每个人都听到有人说某些工具可以完成某些工作。我敢肯定您可以用鞋钉钉子,但是为什么可以用锤子钉呢。


2
C ++是一门不错的语言,但是说实话,这并不是真的。如果您不想使用汇编语言,但想要C ++之类的东西,请签出C。对于一个好的C框架,您应该签出libsdl.org之类的东西。(好的,因为C ++向后兼容,所以效果
不佳,

大声笑不,我不明白你的意思。老实说我真的不在乎你在说什么,所以不要打扰我。我只是在尝试帮助某人,而不是在讨论编程语言的合法性。
UnknownDevice's

5
他的观点是,您提出的问题的原始答案绝对没有任何实质内容。您断言Ruby“并非真的适合游戏”,但这就是您所要说的。那没有什么价值。关于OP为什么要使用Ruby的原因,这很清楚:这是“他真正了解的唯一语言”。这与“仅仅因为有可能”根本不同。
Neverender 2010年

@Neverender,那不是完全正确的。他确实提出了一个论点,即Python只是拥有更大的用户群和已经为游戏开发完成的更多库。我认为这些是向没有游戏开发经验的人提供建议时应做的合理观察。
Zach Conn 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.