有什么好的开源游戏可供学习?[关闭]


15

我想下载开放源代码游戏的源代码,以便熟悉游戏体系结构。有谁知道一款游戏的源代码清晰易懂?

编辑:经过一番思考,我想制作一款可以在台式机或带有2D图形的Andriod手机上玩的游戏。


7
大多数开源游戏都是大型的,旧项目,这些项目通常不容易理解,商业项目由于各种原因而开源,或者未完成的游戏并没有真正处于可玩状态。另外,架构在游戏类型和所使用的语言上也有所不同。您想学习哪种游戏,您知道什么语言?(坦白
讲讲,

@thedaian我知道Java,C ++,C,javascript和python
jumpnett 2011年


我同意thedaian,至少对我来说效果更好。那里有很多非常好的文章,书籍和教程。您将需要花一些时间来选择正确的代码,但是这样可以节省您的时间,因为您已经知道它们为什么按原样进行编码,并且能够识别出源的质量(经常闻起来)。如果您想要可移植性,那么我会选择C / C ++,但是对于那些平台,您可以使用Java很好。
Pablo Ariel

1
社区维基?
贾里·孔帕

Answers:


2

我不确定您要问的是哪种游戏,但是有一个用c ++编写的名为OpenTTD的开源游戏。我认为您可以将其用作一个很好的示例。

一些使这款游戏与众不同的功能:

  • 这是一个策略游戏。
  • 它具有Internet和本地网络上的多人游戏支持。
  • 它支持通过配置文件(由原始文本文件生成)翻译成其他语言。
  • 它在我知道的几乎所有平台上都可以编译。
  • 它的项目还活着!
  • 它具有内置的AI支持。
  • 图形和音乐数据可通过补丁完全自定义。
  • 它支持脚本语言来开发自定义AI。因此,您也可以阅读为此游戏编写的其他AI。
  • 这是一个相对较大的项目,同时易于阅读和理解其代码。
  • 它基于SDL,从那时起,他们从头开始开发一切。

- 编辑 -

就在今天,我从头开始阅读它们的代码。要理解他们写的东西,您必须是一个体面的C和C ++程序员(尽管他们的代码受到了很好的评论)!我的意思是您必须是这两种语言的精通者,因为它们正在使用两种语言的结构!因此,如果您对自己的编程技能没有足够的信心,甚至不要靠近该代码!那是我见过的最脏的代码!(我本人是一个肮脏的编码员,但他们还有别的!)

我想现在我可以建议您检查supertux代码。这是一款平台游戏(就像超级马里奥赛车一样),到目前为止,它们的代码似乎还很干净(我已经检查了里程碑1.3)。他们在该代码中有一些注释,但仅适用于您可能会感到困惑的地方。


尽管OpenTTD是一款很棒的游戏,但我认为这不是一个好的学习项目。其中大多数是从汇编反向工程的,仍然有部分代码反映了这一点。另外,这只是一个巨大的项目,对于一个开始的“学习游戏架构”项目来说可能太多了。
thedaian 2011年

@thedaian,您可能会这样说,但有时我需要做一些新的事情,我只是阅读了他们代码中的内容。到目前为止,我认为这是最易读的开源游戏,值得一读!
Ali1S232 2011年

我也不确定您上次检查他们的代码是什么时候,但是他们从版本1.0.0起已将其清除
Ali1S232 2011年

2

我认为也许一个不错的方法是选择一个您喜欢的游戏,然后查看类似的任何开源游戏。的开源游戏克隆列表可以可能与最后一步,有很多帮助。



1

我建议您首先将注意力集中在您想学习的游戏架构类型上-3d管道,物理,人工智能等。

我认为有一个很好的游戏编程范例的普遍要求,我认为 太空侵略者gl很难被击败,因为它具有简洁的代码,并可以在不使事情变得简单的情况下开放gl的游戏玩法和界面。

干杯


太空侵略者是否只有gl windows?我目前在我的电脑上没有安装Windows。不是说我没有访问权限,而是因为它不那么方便。
jumpnett 2011年

1

即使阅读代码会很有用,但是如果您是该领域的初学者,您将不会学到任何东西。尤其是当您查看大型项目(例如Q3A或OpenTTD)的代码时。这些是由整个团队完成的,每个人都有不同的编码实践,以及有关如何制作事物的不同想法。您只会了解大局,而不会了解使一切紧密结合的小细节。

发展,失败,再试一次,直到找到看起来不错的东西,再次失败,冲洗并重复直到您感到满意为止。不同的开发人员对实现内容的想法不同。仅仅因为它已经由Carmack /任何著名的开发人员编写了代码,并且制作了出色的游戏,并不意味着它是切成薄片以来最好的东西,并且不同的实现可能更清晰,更快。


1

我认为您可以做的最重要的事情之一就是选择自己喜欢玩的游戏。这将有助于您保持对此的兴趣,并使您更加熟悉代码本身如何转换为玩家的观点。

选择了该游戏之后,无论游戏多大,都不必尝试弄清楚每一行代码的工作方式。挑选一块,看看。例如,尝试弄清楚如何存储播放器数据或如何绘制菜单项,等等。

您可以做的下一件事,就是尝试更改某些内容。起初不是很大的东西,只是游戏中简单而引人注目的东西。甚至像菜单按钮上的文字,添加菜单项或更改损坏计算等简单的操作。也许您认为他们应该做一些不同的事情,尝试自己进行更改。

当我最初对开发游戏感兴趣时,我真的很喜欢2D在线RPG。因此,我找到了一个在线资源,然后开始在此基础上构建。添加我自己的功能并进行调整,修复错误等。几年前在VB6中就是这样,现在我正在使用C#和XNA并从头开始编写自己的游戏。因为我喜欢这些游戏,所以激发了我去研究它,使其变得更好的动机。巧合的是,这也是我在与非gamedev相关的日常工作中学到的许多编程,调试和问题解决技术的方式。

如果游戏中有许多社区,您可以提出问题并从中获取帮助和示例,这也将非常有帮助。但是话又说回来,即使不存在,您也已经在这里,我们随时可以提供帮助。




0

卷轴游戏开发工具包2,您可以实际创建2D游戏和使用图形用户界面,而无需编写代码播放。但是,它也允许您查看和编辑嵌入在项目中的代码,这些代码表示游戏背后的框架/引擎。大多数代码是通过GUI公开的,尽管其中一小部分是根据放置精灵的位置和创建的地图生成的代码。但是,如果生成项目,然后在Visual C#Express中打开生成的文件,则即使此代码也可见。整个程序(IDE)本身也是开源的。它建立在OpenTK库(用于与C#的OpenGL接口)上,该库也是开源的。


我会看一下,但是我是一名程序员,因此编写代码并不重要。
jumpnett 2011年
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.