我想学习游戏开发。我应该使用哪种语言?

时间:2009-10-09 16:48:12

标签: c++ python

我听说C ++和Python是两种最常用的语言。

我应该选择哪一个?

在Python中 - 版本2还是3?


我正在研究基本的游戏开发(例如赛车游戏)和非Flash / iphone /浏览器游戏。

此外,我不想跳转到C#。

C ++ vs python是我正在考虑的......


另外,如果你能让我知道一些在线资源,那将会很有帮助。

29 个答案:

答案 0 :(得分:28)

取决于游戏的类型。对于“大型”游戏,肯定是C和C ++,就像大型引擎和中间件一样(例如,Gamebryo,Unreal,id tech,FMOD音响系统,RAD游戏工具等)。

Python在某些游戏中用作脚本语言(用于游戏逻辑,任务,有时候是AI),但也有LUA和可能还有很多其他游戏,但是这里肯定会使用python。

对于“休闲”游戏,您可能还会考虑Flash / ActionScript(浏览器游戏也是游戏,它是一个很大的市场)或C#/ XNA(虽然它并没有真正起飞)。

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

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

答案 1 :(得分:11)

这一切都取决于你的目标是什么。作为初学者,选择您认为最简单的并开始学习。在您担心使用什么语言之前,您需要学习编程。

如果你已经足够成熟,可以自己列出每个人的专业和内容,那么你已经足够成熟,可以提出这个问题(尽管听起来如此,但这不是循环逻辑)。

答案 2 :(得分:9)

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

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

如果你想学习更多的核心图形编程,或者获得在业界工作的经验,我不得不说使用c ++。

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

答案 3 :(得分:7)

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

然而,正如San Jacinto所说,这个问题在现阶段有点没有实际意义。

答案 4 :(得分:6)

如果你想在这个行业受雇,那么就要熟悉C ++。真棒。就像,敬虔。

如果你想完成任务并与一个小团队(例如你)一起发布小游戏,使用python,C ++是一个不成熟的优化。

Python2对游戏内容提供了更好的库支持--PyGame将设置你的窗口并为你提供2D操作,PyOpenGL来做更高级的东西,Panda3D等。

答案 5 :(得分:4)

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

http://www.pygame.org/

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

稍后,当您已经完成游戏编程概念时,可以进入C.或者,您可能会发现您更喜欢深入了解游戏引擎的内部结构并调整驱动程序等。在这种情况下,请坚持使用PyGame并进行改进和增强。

我会给想要将职业生涯转变为游戏编程的熟练程序员提供不同的建议。

答案 6 :(得分:3)

您最熟悉哪种语言?如果您的目标是学习游戏开发,那么也不要通过尝试学习C ++来使这个过程变得更加困难。

答案 7 :(得分:2)

如果性能至关重要,请使用C ++。

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

我个人推荐C#/ XNA用于新开发人员并使用Ogre等框架。

答案 8 :(得分:1)

我认为您最好的方法是从您熟悉的语言开始。了解游戏开发需要您轻松使用工具,并专注于该领域的特定挑战,而不是语言。

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

随着项目的发展,您将开始应对网络,优化和框架使用等新挑战,从而提高游戏开发效率。

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

答案 9 :(得分:1)

如果你正在进行独立游戏(即2d,在一个不到10人的团队中,预算不足),那么pygame是你最好的选择。

http://pygame.org中有许多库使开发变得轻而易举。有游戏中的GUI,网络,寻路...... 目前,Python 2更好。你还不需要P3000的东西。

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

无论如何,无论你听到什么,都要知道:
游戏以脚本语言编写 引擎用 C ++ 编写。

如果你“想学习游戏开发”,你可能想写游戏。 此外,对于python和Lua,有一种非常简单的方法来编写脚本然后发送.exe。 在别处搜索“嵌入%s”%language_name,但它基本上只是

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

答案 10 :(得分:1)

如果您正在寻找2D赛车游戏,我建议使用AS3(Flash)和Box2d。 - 更容易上手 - 更多观众

祝你好运,选择哪种语言!

答案 11 :(得分:1)

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

Python是一个跨平台,字节码编译,易于学习的编程语言,具有非常干净的语法,可最大限度地提高可读性。它有大量的库和文档为它编写。

PyGame是一个用python编写的2D游戏开发框架,它非常简单易学,并为每个编写了大量的教程和文档。每年都会举行PyGame上下文,人们可以通过这个词来提交他们的PyGame游戏。 Python是解释语言(但你也可以将它打包成一个独立的可执行文件),因此当你下载游戏时你也可以看到它的源代码并进行更改。

答案 12 :(得分:1)

这取决于你的目标。

例如,如果你想为Xbox 360开发游戏,你需要C#和XNA Game Studio。

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

答案 13 :(得分:1)

我的想法是,您想要了解许多语言,以及相同的“程序”在不同语言中的外观。然后,您可以更好地决定程序的哪些部分应该使用哪种语言。您可以使用任何语言编写游戏。组织数据执行背后的概念本身比语言更重要,练习不同的语言可以帮助您熟悉这些概念。然后,您可以“快速”接受并快速感受新语言,而无需重新学习。

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

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

答案 14 :(得分:1)

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

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

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

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

答案 15 :(得分:1)

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

答案 16 :(得分:0)

您可能需要考虑从休闲游戏开始。这当然取决于您的愿望,但开发人员和用户都可以轻松访问休闲游戏。这些工具也更容易学习:Flash / Flex和Silverlight都非常有用,而且很有趣。

答案 17 :(得分:0)

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

Flash游戏很受欢迎。虽然大多数用Flash编写的游戏都很简单,但是这种语言适用于图形,你会在更高层次上学习。

C ++真的被广泛使用,但从头开始构建游戏引擎是不可能的。

请访问www.GarageGames.com寻找一个现成的游戏引擎和一个开发游戏社区的好地方。

答案 18 :(得分:0)

游戏编程在C ++中与Python没有什么不同。你已经了解C ++,所以答案是:学习Python。为什么?因为它是一种血腥的语言。

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

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

答案 19 :(得分:0)

使用C ++,它是业界的主要语言;你将学习游戏开发的所有内容和重点。使用C ++还可以为您带来另一个好处,您可以实现一种脚本语言,例如LUA或Python,例如Game Logic!

答案 20 :(得分:0)

我会说这取决于你的编程经验,如果你习惯于C语法并且这样思考,即大括号,分号,强类型,使用C ++,快速,以及你所知道的语言。

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

答案 21 :(得分:0)

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

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

答案 22 :(得分:0)

我认为C ++是最好的选择,我使用像Ogre或Irrlicht这样的免费引擎制作了一些小游戏,尤其是Irrlicht因为它很容易学习。

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

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

答案 23 :(得分:0)

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

答案 24 :(得分:0)

目标平台?闪存或不闪存(基于矢量的图形)?是位图还是不位图?

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

例如,目标平台XBox 360: 代码:C ++ 团队需要与出版协议:是(如果你在游戏公司工作。这更容易:)

同样适用于Playstation平台或较旧的XBox等。几乎所有基于游戏机的游戏都需要开发工具包,只有在与制造商或发行商达成交易时才会发生。

所以,现在让我们跳过控制台。

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

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

在Windows和Mac甚至iPhone的情况下,C ++都可以使用。 C绝对会。

//:)

答案 25 :(得分:0)

游戏概念比您选择的语言更重要。使用您最熟悉的语言。除了最复杂的3D图形游戏之外,其他所有游戏都可以使用解释语言。

我的建议是尽量减少未知数。我假设你是游戏编程的新手,你说你是python的新手。我个人的偏见是使用熟悉的语言(C ++)接近新域(游戏)或使用新语言处理已知域。使用新语言接近新域名是一项艰巨的挑战。

答案 26 :(得分:0)

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

答案 27 :(得分:0)

我不确定您之前的编程经验是什么。如果你想快速上手,我会推荐Python。其他人推荐PyGame,这是Python的事实标准。还有其他替代方案(比如名为Ika的Verge引擎的修改版本在开发,http://ika.sourceforge.net/news.php下),但PyGame非常可靠。

由于您询问了要开始使用的资源,我建议使用Python(http://inventwithpython.com/chapters/)。它使用Python 3和PyGame,并启动真正的基础。在接下来的一个月左右,如果您愿意,您将可以购买该书(作者向我提到,出版商购买了该书的早期版本并制作了非常糟糕的纸质版本 - 所以如果您在亚马逊上看到这一点,避免它!)。

答案 28 :(得分:0)

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

如果您是初学者,我建议不要从C / C ++开始。 我想你应该学习如何使用UNITY3D,这是一款今天非常流行的游戏引擎。 很多人,从独立开发者到大公司都在使用Unity,制作各种游戏(顺便说一下,赛车游戏是教程之一。

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