2009-10-09 150 views
20

我听说C++和Python是两种最常用的语言。我想学习游戏开发。我应该使用哪种语言?

我应该选择哪一个?

而在Python - 版本2或3?


我正在寻找基本的游戏开发(比如赛车游戏),而不是flash/iphone /浏览器游戏。

另外我不想跳转到C#。

C++ VS蟒蛇是我正在考虑...


也,这将是有帮助的,如果你可以让我知道一些在线资源,从开始关闭。

+6

您是否有任何编程经验?这将显着影响答案。 – 2009-10-09 16:52:23

+0

是的,我有C,C++和基本的Java编程经验(〜5年) – Moeb 2009-10-09 16:58:42

+0

imho flash/silverlight(2D)游戏比赛车(大概3D)更容易 – 2009-10-09 20:00:12

回答

27

取决于游戏的类型。对于“大型”游戏,肯定是C和C++,因为这是大型引擎和中间件的编写(例如Gamebryo,Unreal,ID技术,FMOD声音系统,RAD游戏工具等等)。

Python在某些游戏中用作脚本语言(游戏逻辑,任务,有时是AI),但也有LUA和其他许多游戏,但是python肯定在这里使用。对于“休闲”游戏,你也可以考虑Flash/ActionScript(浏览器游戏也是游戏,这是一个大市场)或C#/ XNA(尽管这并不真正起飞)。

如果你想开发iPhone游戏,Objective-C是你最好的选择,因为替代品(Flash和MonoTouch)还没有证明自己。

你真的想在游戏开发中做什么?你想在图形引擎上工作吗?还是声音? AI?游戏逻辑?

+0

Flash游戏/浏览器游戏/ iphone游戏 - 不适合我...我正在研发一些基本游戏...我有一些想法,只需要实现它们。 – Moeb 2009-10-09 16:59:47

+1

如果你想自己开发整个游戏,那么我会说C#与XNA,但由于我是C#开发人员,我自然有偏见。 – 2009-10-09 17:01:11

+4

@Michael Stum,我是一名C++开发人员,但是我用XNA(和XBox)来弄清楚它的环境以及已经可用的库/内容! – 2009-10-09 17:38:27

7

这取决于什么样的游戏。我不认为有很多纯粹用Python编程的3D图形游戏。 C++用于3D图形,因为它在数值计算中非常快速。 Python无法与之竞争。如果你想制作像Mario Kart这样的3D图形汽车赛车游戏,你需要学习C++,而不是Python。

但是,正如圣哈辛托所说,这个问题在这个阶段有点没有实际意义。

+0

并非如此:http://www.vrplumber.com/py3d.py – MitMaro 2009-10-09 16:53:21

+1

几个3d引擎绑定了python。例如http://pygame.org上的'SDL'和http://python-ogre.org/ 上的'Ogre3'另外,http://numpy.scipy.org/上的'numpy'使用python进行数值编程是可行的。 – gnud 2009-10-09 16:56:08

+0

我敢肯定,Python中有很多3D图形库,但是有没有与C++竞争的3D图形游戏引擎? – 2009-10-09 16:56:13

11

这一切都取决于你的目标是什么。作为初学者,选择你认为最简单的方法并开始学习。你需要学习编程,然后再担心用什么语言来做什么。

当你已经足够成熟,可以亲自列出每个人的亲和感,那么你已经足够成熟,可以问这个问题了(尽管这听起来不是循环逻辑)。

+0

+1你的答案比我的好。 – 2009-10-09 17:08:00

+0

是的,我只是认为我应该开始好。并且不会意识到现在我应该知道的那些事情。 – Moeb 2009-10-09 17:11:41

0

C++,因为这是广泛使用的游戏编程,你会得到很多的样本,为c + +游戏看。正如其他答案所说,没有太多的python 3d程序。

1

我会从C++开始,这是今天创建的大多数游戏的首选语言。在托管环境中,使用C#在DirectX上开发了许多使用XNA框架的游戏。看看这个网站。XNA Developer Center

0

游戏概念比您选择的语言更重要。使用你最熟悉的语言。除了最复杂的3D图形游戏外,所有游戏都可以在解释语言的情况下运行。

我的建议是尽量减少未知数。我认为你是游戏编程的新手,你说你是python的新手。我个人的偏见是用一种熟悉的语言(C++)来接近一个新的领域(游戏),或者用一种新的语言来接近一个已知的领域。用新语言接触一个新领域是一项艰巨的挑战。

+0

我已经知道C++,但从未做过任何游戏编程。另一方面,我不知道蟒蛇,但我听说它的好... – Moeb 2009-10-09 17:06:10

2

如果性能至关重要,请使用C++。许多游戏都使用C++编写核心引擎,然后绑定到python以获得较少的性能关键代码(游戏逻辑,任务,AI)。文明4就是一个很好的例子。这也使得游戏可以扩展。

我个人推荐C#/ XNA为一个新的开发人员和使用框架如Ogre。

9

想要“学习游戏开发”非常非常含糊。

如果你想开发你自己的小游戏,为了好玩,在学习如何构造应用程序时,请使用python。

如果你想了解更多的硬核图形编程,或获得在该行业工作的经验,我不得不说,去与c + +。

我认为答案很大程度上取决于您目前的技能和目标。请注意,我当然不是该领域的专家。

+0

像一个赛车游戏(不像NFS那么丰富,但你知道一些更简单的例子) – Moeb 2009-10-09 17:03:08

+0

如果你正在说街机类型(像Atari)去蟒蛇。如果你想复杂的游戏,如NFS ...你会想要C/C++(或C#/。你打折的网) – 2009-10-09 17:08:49

+0

@Matthew白了,谢谢 – Moeb 2009-10-09 17:15:20

1

C++是用于实际编写游戏的语言,至少对于像魔兽世界这样的图形密集型复杂游戏而言。像Python这样的语言通常用于游戏中的脚本行为。

另一方面,主要类别的游戏是“休闲”类游戏,其中包括较简单的游戏,如Sudoku游戏或简单的解谜游戏。这些可能是用像Python这样的高级语言编写的。

然而,比Python更可能的是,轻量级游戏通常使用Flash(ActionScript)中的脚本语言在Flash中编写。事实证明,这实际上是一种Javascript的味道。反过来,JavaScript也很像Python。

所以,我的建议是,你学习Python,然后学习Javascript。然后在您选择的PyGame,Flash或甚至浏览器内的Javascript中编写一些简单的游戏。然后,如果你仍然想学习C++,继续学习,但在业余时间继续玩游戏设计,编写休闲游戏。

+0

谢谢@steveha。你对Python中的游戏基础游戏开发提出了哪些建议? – Moeb 2009-10-09 17:09:18

+0

我会从Pygame开始:http://www.pygame.org/ Pygame有一本入门书:http://www.willmcgugan.com/blog/tech/2007/10/7/table-of- pygame-book /如果你想要更简单的东西:http://blog.doughellmann.com/2009/07/book-review-hello-world.html – steveha 2009-10-12 04:47:13

0

我认为最快最好的游戏开发语言之一就是使用Flex SDK的ActionScript 3.0。创建游戏并将其在网络上发布给大量观众的能力是非常有益的体验。

ActionScript参考资料可以发现hereEmanuele Feronato为初学者游戏开发者提供了一个很棒的博客。

+0

谢谢@Andrew Garrison,但我不想触摸ActionScript现在... C++/python是我正在考虑的。 – Moeb 2009-10-09 17:10:08

0

大多数现代游戏并非从头开始构建,而是使用一些预先存在的游戏/图形引擎。

Flash游戏非常流行。虽然用Flash编写的大部分游戏都很简单,但是这种语言是针对图形的,而且你会在更高的层次上学习。

C++的确被广泛使用,但从头开始构建游戏引擎不太可能是一个可行的想法。

看看www.GarageGames.com是一个很好的地方,可以找到准备好的游戏引擎和编写游戏的开发者社区。

3

你最了解哪一种语言?如果你的目标是学习游戏开发,不要试图通过学习C++来让这个过程变得更加困难。

+1

优秀的建议。我不会建议同时学习两个新的和复杂的东西。 – 2009-10-09 17:07:34

+0

在对我的回答“使用任何你已经熟悉的语言”的评论中,他表示他已经知道C++。 – Andrew 2009-10-09 17:20:30

0

你可能想考虑从休闲游戏开始。这当然取决于你的愿望,但休闲游戏对于开发者和用户来说更容易一些。这些工具也更容易学习:Flash/Flex和Silverlight都非常有用,并且使用起来非常有趣。

6

如果你想在业内被雇用,擅长C++。真棒。喜欢,敬虔。

如果你想获得物品完成并用一个小团队(例如只是你)运送一个小游戏,使用python,C++是一个不成熟的优化。

Python2对游戏的东西更好地库的支持 - pygame的会设立你的窗口,给你的2D操作,PyOpenGL做票友的东西,Panda3D

+0

感谢您的链接。 – Moeb 2009-10-09 17:27:24

1

我觉得你最好的办法是先从你熟悉的语言。了解游戏开发需要你放心使用你的工具,并专注于该领域的特定挑战,而不是语言。

从基础知识入手:您如何管理游戏循环,如何加载外部资源,如何保存和恢复状态,如何管理人工智能以及哪些路径算法更有效满足您的需求?当你开始学习时,你会看到架构和功能模式的出现。

随着项目的发展,您将开始着手解决诸如网络,优化和框架使用等新挑战,以提高游戏开发效率。

所以一般来说,我会说一些容易理解的东西,比如Python(有很棒的库和框架可用)。了解那里的核心基础知识,从那时起,您可以探索其他选项,如C++(在业界严重使用)及其现有框架。我现在坚持非移动,非Flash的开发,因为在这些环境中开发会带来额外的挑战和限制,这些都是相当具体的。

1

我很想知道很多语言,以及同一个“程序”在不同语言中的外观。然后,您可以更好地决定程序的哪些部分应该使用哪种语言。您可以使用任何语言编写游戏。组织要执行的数据背后的概念比语言更重要,练习不同的语言有助于您理解这些概念。然后你可以“拾起”,快速感受新语言,而不需要重新学习。

因此,我认为即使作为初学者,尝试一次学习和练习多种语言也没有什么坏处。 C++在工业游戏编程领域当然得到了广泛的应用(在许多其他编程领域,它的存活率更高)。 OpenGL通常伴随着高性能3D编程。 Python有用于编写游戏的库,在语法上被认为是“容易的”(我个人同意)。您现在可以跳过C++,并专注于C和python,并在学习面向对象之后返回到C++。

你想了解你的代码的背后的概念和效率的权衡。要编写更复杂的游戏,您只需要更多的知识 - 知道哪些数据结构对于需求最有效。如何构建您的程序,以便在您想要修复错误或添加功能时不会分崩离析。有了一些基本的编程知识和Python,你可以编写一个非常好的游戏,而不需要用于练习的图形。还有PyGame和其他库,用于图形,声音等。

0

C++中的游戏编程与Python没有区别。你已经知道C++,所以答案是:学习Python。为什么?因为这是一种很酷的语言。

即使您需要切换到C++来执行重量级3D引擎,您也可以通过Python来学习大量游戏编程。

所以答案是真的....两个! :-)

0

与C++一起使用,这是行业的主要语言;并且您将学习游戏开发的各个方面。使用C++还为您提供了另一个好处,您可以为例如Game Logic实现诸如LUA或Python之类的脚本语言!

0

我认为这取决于您的编程经验,如果您习惯于C语法并且认为这样,即大括号,分号,强打字,使用C++,快速以及您所知道的语言。

但是,如果您对编程语言整体感到满意,那么python不是一个糟糕的选择,我会强烈推荐panda3d 3d引擎(我认为这更多的是3D引擎,而不是一个游戏引擎)你仍然需要构建游戏特定的逻辑),它使用python,我认为最新的python 2.6.xx版本是你最好的选择。就性能而言,除非运行较旧的机器,否则像python这样的解释性语言几乎可以像c/C++这样的编译语言运行速度一样快。

1

这取决于你的目标。例如,如果您想要为Xbox 360开发游戏,则需要C#和XNA Game Studio。

XNA Game Studio是一组用于创建Xbox 360和Windows/DirectX游戏的C#项目和用于Visual Studio(任何版本,包括Express)的库。

0

我认为C++是最好的选择,我用Ogre或Irrlicht等免费引擎制作了一些小游戏,特别是Irrlicht,因为它非常容易学习。

另外对于2D游戏,您可以使用HGE。

但是如果你想去Pyton试试Blender一个3D建模的动画工具,那么Blender你可以制作很酷的游戏,并且你拥有在同一个软件中制作游戏所需的所有东西,Blender使用Python进行编程,但是你可以制作游戏而不需要使用逻辑块来编程。

1

学习游戏编程最简单和最快的方法是使用Python/PyGame。

Python是一种跨平台,字节码编译,易于学习的编程语言,它具有最大化可读性的真正干净的语法。它有很多为它编写的库和文档。

PyGame是一个用python编写的2D游戏开发框架,它非常易于学习,每个框架都有大量的教程和文档。每年都有一个PyGame上下文,在这个单词上面的人们提交他们的PyGame游戏。 Python是解释型语言(但您也可以将其打包在独立的可执行文件中),因此当您下载游戏进行游戏时,您还可以查看其源代码并进行更改。

+0

也许值得一看Pyglet(我已经玩过Pygame和Pyglet以及更喜欢的Pyglet)。 – timday 2009-12-31 20:12:07

0

我在想,如果你想要的3D图形游戏那么C++与DirectX是最好的

0

目标平台?要Flash还是不Flash(基于矢量的图形)?要位图还是不位图?

基于某些类型的问题,您可以获得更小范围的可能性。

例如,目标平台的Xbox 360: 代码:C++ 团队出版协议需要:是的(如果你在游戏中共同工作,这是比较容易:)

同为游戏机平台或年长成立XBox等。几乎任何基于控制台的游戏都需要开发工具包,只有在与制造商或出版商达成协议时才会发生。

因此,让我们暂时跳过控制台。

这留下了几个选项仍然是最基于在线或基于iPhone。但是你已经说过你不想做Flash,iPhone或者基于浏览器的游戏。

接下来是Mac或PC。如果你想进入控制台,最终基于寡妇的游戏是一个很好的选择。你可以学习图形库,DX,然后在XBox 360上使用类似的东西。或者,如果您想跨平台观看Open GL ......并且您应该决定让自己进入一个拥有“20亿次”下载的平台,那么您现在就可以在全球范围内销售您的游戏,并且只需99美元就可以访问作为一名开发人员,Open GLES就是Open GL的一个子集。

在Windows和Mac甚至iPhone的情况下,C++都可以工作。 C肯定会。

// :)

1

,如果你正在寻找一款2D赛车游戏,我会建议使用AS3(闪存)与Box2D的。 - 更容易上手 - 更大的观众

祝您好运,无论您选择何种语言!

1

如果您正在制作独立游戏(即2d,团队人数少于10人,预算不足),那么pygame是您最好的选择。

http://pygame.org中有许多库使开发工作变得简单。有游戏中的GUI,网络,寻路... 现在Python 2更好。你还不需要P3000的东西。

Lua也是一个非常受欢迎的选择,但这主要是针对大型专业游戏。他们经常选择Lua,因为它的不能失败哲学。你可以传递比函数多或少的参数,它不会抱怨。几乎所有的东西都会崩溃,它仍然会运行,平均值为
此外,它有非常强大(种)的线程。没有比赛条件。永远。还有Lambdas。它的可修改性非常好。它基本上是Lisp,括号较少。 应该不用说,Lua程序员是非常非常细心的人。

无论如何,不​​管你听到什么,知道这一点:
游戏都写在脚本语言
引擎写在C++

如果你“想学游戏开发”,你可能想写游戏。 另外,对于python和Lua都有一个非常简单的方法来编写脚本,然后发布.exe。 搜索别处 “嵌入%的” %语言名称,但它基本上只是

的#include
...
python_run_file( “main.py”);

4

鉴于你想学习游戏开发,并且没有太多经验,我建议从Python 2开始,并使用PyGame支持的最新版本。

http://www.pygame.org/

有非常多的游戏,用Python编写的pygame的使用,也可作为源代码下载和学习。如果你曾经有过编程游戏的工作,那么他们使用的游戏引擎很可能不会是你以前使用过的游戏引擎,所以你需要将你的经验转化为他们的引擎和API。因此,Python不会以任何方式妨碍你。事实上,因为它可以让你从大量的细节中解脱出来,所以你可以专注于学习游戏开发,而不是指针和结构和语法,编译错误等。

稍后,当你已经拥有游戏编程概念向下拍。或者,你可能会发现你更喜欢挖掘游戏引擎的内部,并调整驱动程序等。在这种情况下,坚持使用PyGame并努力改进和增强。

我会给那些想把职业转变为游戏编程的熟练程序员提供不同的建议。

+0

+1,尽管与那些坚韧的细节一起工作也是一件好事。 Python/pygame非常适合工作,但学习像OpenGL这样较低级别的东西可以提供一些有用的见解和知识。 – Darthfett 2012-05-14 21:57:57

0

我不确定你以前的编程经验是什么。如果你想快速起步,我会推荐Python。其他人则推荐PyGame,这是Python的事实标准。还有其他的选择(比如一个叫做Ika的Verge引擎的修改版本,在缓慢的开发中,http://ika.sourceforge.net/news.php),但是PyGame非常稳定。

既然你问到一个资源入门,我会推荐使用Python的Invent(http://inventwithpython.com/chapters/)。它使用Python 3和PyGame,并开始真正的基础。在下个月左右,如果你愿意,你可以购买这本书(作者向我提到,一家出版商采用了该书的早期版本,并制作了非常差的纸质版本 - 所以如果你在亚马逊上看到这样的版本, 躲开它!)。

0

您现在开始编程了吗? 为什么你不想学习C#?

如果你是初学者,我建议不要从C/C++开始。 我想你应该学习如何使用UNITY3D,这是一款非常受欢迎的游戏引擎。许多从独立开发者到大公司的人都在使用Unity来制作各种游戏(顺便说一下,赛车游戏就是其中的一个教程。

该引擎很容易学习,您可以将它与UnityScript(一种带有JavaScript语法的自定义语言),C#或Boo(具有Python启发的语法)结合使用。我强烈推荐C#,它功能更强大,您将学习稍后可以用于XNA的语言。

相关问题