游戏开发,初学者的语言?

时间:2010-10-20 19:20:04

标签: c++ python c programming-languages

我一直在搜索网站,寻找最适合初学者游戏开发的语言。许多人说基于C语言,其他人则建议Python。

通常我会选择一个,但这是我的两难选择。我不确定这是否正确,但我从这里的程序员那里读到C渲染速度要快得多,而Python则不然。然后人们发布支持声明Python可以在3d渲染方面表现出色。

我也不知道。

我目前的目标是制作一款类似于暴雪暗黑破坏神II的游戏。

我有PHP,JavaScript框架和纯SQL的经验。此外,我在Mac环境中工作,并且可以访问Windows XP。

尽管如此,我应该从哪里开始,为什么?

干杯

以新问题编辑

好的,这对我来说都是压倒性的。如果我忽略了什么,请原谅我。我一直在查看Unity 3d和XNA,但这些主要是与.NET Framework一起使用的游戏引擎,主要是C#?

如果我想完全在OS X上进行所有开发,但是为多个平台编译,这是最佳选择?

21 个答案:

答案 0 :(得分:17)

选择一种语言,因为最终有必要执行你尚未编写的程序,这是一个非常好的过早优化的例子。尤其如此,因为您将编写一个程序作为学习练习。

学习C ++,学习3d渲染API,以及学习游戏编程技术是三个艰难的目标。一次做一个这可能是一个非常好的主意,这样你就不会在同一时间与这三个人一起努力。

如果您已经决定使用C ++和特定的图形API(OpenGL,DirectX,等等......),那么我建议在三个单独的项目中按顺序学习它们,首先是一个简单的控制台C ++应用程序,或者像Project Euler这样的一系列练习,然后通过一些图形化的可视化工具熟悉API,并且一旦你合理地征服了这两个,就可以继续构建游戏。

如果你没有真正与任何平台或工具链结合,你应该从学习游戏编程技术开始。不幸的是,PHP和JavaScript都没有真正适应这一点,但正如其他人所建议的那样,使用PyGame库的python是一个非常容易接受的东西。

一旦您对游戏编程如何以简单的语言工作有所了解,您就可以开始学习3D api,构建适合您目标的游戏。在您开始遇到性能问题之前可能不会太久。只有这样才能考虑将关键代码路径重写为另一种语言。

答案 1 :(得分:15)

我会尝试XNA Game Studio,看看你是否喜欢它。到目前为止我已经使用它了一点点。它与.NET相关联,这是一个非常可靠的框架,可以在任何简历上开始使用并且看起来很好。

我认为从一个框架开始帮助您创建这些游戏是一个明智的想法。否则,制作任何有意义的游戏的任务对于任何一个人来说都太大了。此外,您将重新发明大量功能。我建议这样做的唯一方法是,如果你想进行学术练习,只是想了解这些引擎是如何从头开始工作的。

构建游戏既困难又有趣。游戏创作提供了一些有趣的挑战,这是一种变得更聪明并构建您可以享受的东西的好方法。从小处开始,坚持下去,不要放弃!谁知道,也许在一年左右的时间里我会检查你的游戏。

这是一个让你入门的link

答案 2 :(得分:5)

  

...我从这里的程序员那里读到C渲染速度要快得多,而Python则不然。然后人们发布支持声明Python可以在3d渲染方面表现出色。

这实际上取决于。 C总体上要快得多,但是当涉及到游戏时,你的瓶颈通常是图形渲染 - 然后,优化你的OpenGL调用,例如,可以让你用Python编写游戏并且仍然可以获得不错的性能。但是,Python本身并不是过于复杂/ 3D游戏的好选择。你会想要使用像Panda3D这样的引擎(这里已经提到了)。为什么?它提供了用C ++编写的渲染代码(在本例中),以提高性能,允许您在Py​​thon中编写更高级别的逻辑,但如果速度绝对必要,仍然使用C ++。如果你还没有学过一门语言,那么Python就不那么令人生畏了 - 但从长远来看,C语会提供更好的表现。请注意,过早优化(即在编写大量内容之前担心性能)并不是一个好主意。

另外,请注意,无论哪种方式,如果真的想要性能(或使用游戏引擎),您可能会学习原始OpenGL。

  

...图形类似于暴雪的暗黑破坏神II。

因为这是一款较旧的游戏(如上所述),性能和速度可能不是绝对必要的。 Python以快速原型设计和更快的开发而闻名。

  

...... Unity 3d和XNA

据我所知,XNA通常只支持Windows,但如果您是游戏开发的新手,那就太棒了。 Unity3D支持Windows和Mac,即使它使用.NET语言。它还支持一种名为Boo的Python方言,因此这可能很有用。

对于Python引擎和库,你可以使用PyGame和Pyglet for 2D。 Pygame是SDL的包装器,它似乎更受欢迎。 Pyglet是Python和OpenGL的窗口框架,但它也提供动画,事件循环,媒体播放等。但是,这意味着你必须学习OpenGL,而使用PyGame,可能没有必要。 XNA让您不必学习DirectX,Unity为您提供了引擎。 Panda3D已被提及用于3D; Pyglet + OpenGL也可以处理3D。

Unity看起来最好;然而,它可能是压倒性的。 Python没问题,但并不总是提供。

答案 3 :(得分:4)

我刚开始尝试自己,但如果你想用3D试用Python,我建议你试试Panda3D。所有核心功能都是用C ++编写的,但您可以使用Python或C ++编程。它是一个游戏框架,因此它具有许多内置功能,如碰撞处理,一些人工智能和性能监控。它由迪士尼开发,但由迪士尼和卡内基梅隆免费维护。有一个很好的[手册]在线和很多sample programs。关于它的另一个很酷的事情是它有一个Web插件。哦,我是否提到它是跨平台的?

答案 4 :(得分:3)

如果你看一下像Civ IV这样的游戏,你可以看到GUI是用C语言实现的(我相信SDL),它绑定到Python,很多非GUI逻辑都是用Python编写的。

这可能是一个很好的开始,特别是对于可以非常动态开发的原型。

如果您发现了瓶颈,您可以随时将其移植到C或类似的东西并将其绑定到Python中。

无论您是否使用Python,至少可以使用Pygame

它还有额外的好处,即游戏可以在Mac上播放。我现在不支持.Net在该平台上有多好。

答案 5 :(得分:2)

我发现使用OPENGL的C ++比其他人更容易管理,主要是因为互联网/书籍上的大量信息。我确实使用了一些JOGL(Java + OPENGL),但它是rel。当时很新,我不喜欢它。

俄罗斯方块通常是一个很好的首发游戏IMO。

答案 6 :(得分:1)

我会先把目光放在一些小的东西上。暗黑破坏神是由一个庞大的团队开发的,经过多年的发展。

然后,您需要确定要为其设计的平台:桌面,Web,移动设备或控制台。

假设你选择像XBox这样的东西,可以用C#编码XNA。 如果您选择开发Web应用程序,那么有很多网页游戏生成器,如Sploder

答案 7 :(得分:1)

我自己使用过XNA,我不得不说它是一个非常好的平台,但是,如果你确定你希望从一个独立于平台的项目开始,那么我建议你看一下像OpenGL这样的C / C ++。另外,请查看GLFW http://www.glfw.org/或SDL http://www.libsdl.org/等窗口,OS事件管理和输入处理等内容。我已经将SDL用于俄罗斯方块的多平台端口,但后来切换到GLFW用于我正在编写的小行星版本。下载时,GLFW附带参考和用户手册。

DevMaster上的引擎页面:http://www.devmaster.net/engines/包含了很多关于游戏开发各个方面的库链接,并且是一个很好的起点。

答案 8 :(得分:1)

为了了解游戏开发技术和设计模式,从Haxe或ActionScript等熟悉的东西(因为你已经知道JavaScript)开始是合理的。一旦你学会了这一点,学习另一种编程语言是相对微不足道的。

答案 9 :(得分:1)

几年前,我开始使用C ++和Allegro游戏库进行游戏开发。我不确定Allegro在过去十年里到底有多远,但我建议你在潜入XNA之前先让自己的脚湿透。

答案 10 :(得分:1)

这取决于。 C / C ++速度要快得多,因为它被编译成普通的处理器指令。 Python被解释,根据定义它会变慢。重要的问题是:你的游戏会是什么样的?像Python这样的暗黑破坏神II可能是有效的。解释性语言使用起来往往更加舒适,因此如果性能和分发允许,那么请使用Python。否则,C / C ++是一个很好的选择,因为它的速度和可用库的数量(几乎每个图形库最初都是用C / C ++编写的)。

答案 11 :(得分:1)

我的理解是,出于性能原因,像暗黑破坏神II这样的图形密集型游戏通常用C ++编写。

但我喜欢在C#或VB中使用基于XNA的.NET开发的想法。

答案 12 :(得分:0)

我建议你看看你真正想要制作什么类型的游戏。快节奏的3D fps需要一些其他技能,然后SimCity。 游戏开发有很多框架,每个框架都有自己的优势和特色。寻找一个与您想要写的游戏相匹配的游戏。选择语言不太重要。

对于Mac Unity似乎很受欢迎。您可以探索的另一个有趣的选择是Blender。虽然它是一个3D建模应用程序,但它可以在python中编写脚本,并可用于游戏开发。

答案 13 :(得分:0)

我建议使用XNA进行C#,因为XNA库为你做了很多工作。

答案 14 :(得分:0)

如果您的目标是制作游戏本身,并且要求在OSX上进行开发并在任何地方运行,那么听起来很像Unity3D将是一个很好的匹配。在这条路径上,您最终可能会使用UnityScript和/或C#进行编码。它为您提供了许多工具包,它在游戏开发界很受欢迎。所以对我来说这听起来也很合适。

如果您只是想学习,可以使用您喜欢的任何语言。如果你想要易于转换的技能,那么相当受欢迎的东西。如果你只是学习概念,我不会太担心性能。语言是一打一打,大多数将教你一个强大的基础建立。

如果你想成为一个从事游戏机工作的大型工作室的专业游戏开发人员,你可能需要考虑学习一些C或C ++ - 特别是要了解内存管理,指针和其他一些低级概念。

答案 15 :(得分:0)

您可以查看(部分)以下(跨平台)游戏引擎:

OpenArena,ogre3d,Irrlicht(托管于sourceforge),Sauerbraten,dimension3,Panda3D,Cube,Unity,torque-3d,......

http://osx.hyperjeff.net/Apps/apps?f=game%20engine

答案 16 :(得分:0)

由于您是新手,您希望尽可能多地消除编程困难。我会推荐像IsoWorld这样的等距游戏引擎,它内置了很多房间,物体和图形。它是available for both Mac and PC,它有demo

答案 17 :(得分:0)

你想从暗黑破坏神2开始?这是一场大规模的比赛。即使是最初的暗黑破坏神也需要几个月才能完成。我建议从较小的东西开始,可能是2D。

我个人使用俄罗斯方块作为起点。

对于在Mac上跨平台和开发的语言,我可能会投票给ActionScript(Flash)。除非你做一些疯狂的重数学(我怀疑你会做)或想要合理的3D渲染,否则应该是明智的表现。

答案 18 :(得分:0)

你真的不能吃蛋糕,也不能吃。

如果你想要原始速度,你将不得不或多或少地推出C / C ++方式。编译的二进制文件仍然是最快的方式。

如果你想要超级棒的跨平台可移植性,Python可能是你最好的选择。虽然这很可怕。 : - /

如果我正在编写一个3D游戏,我会用C ++编写它,使用#defines进行任何跨平台工作。

我并不特别关心人们常见理由的框架思维方式。

对于想要进入游戏开发的程序员,我会毫不犹豫地推荐C ++。一般来说,您将能够创建足够的库来表达您的表现力。

答案 19 :(得分:0)

首先,我会说:做你喜欢做的事,创造你喜欢的游戏,追随你的想象力。否则,你可能没有真正的动力,学习会很不愉快。这来自我大约21年的编程经验 - 游戏而不仅仅是游戏......

非常快速的开始,但效果不错: 如果你没有OOP(面向对象编程)的经验,我会避免语言,或者说平台,这需要先学习很多东西(因为它会杀死创造力)。对于许多人而言,C#可能就是这样一种语言,因为微软(与谷歌不同)提供(对初学者来说太多)时尚范例。相反,有些事情可以通过例如快速,轻松的方式完成。 Pascal或C语言。 (他们中的第一个是/并且,并非没有理由,在大学推荐作为一种习惯于编程习惯的语言)。 使用PHP你可能想跳过它 - 但如果你没有太多编写好代码的经验(这实际上不仅仅是网站上的简单脚本,因为游戏是特定的,通常技术上很复杂,但我不知道你是什么实际上早些时候做了),我至少试过C。

相对较快的开始:具有OOP C#-XNA的经验可能是不错的选择。我不推荐Android或iOS平台,因为它们提供了太多的术语,并且它们需要首先学习适当的语言并获得相当多的经验,否则如果你跳入这个深水,它可能是纯粹的为你而痛苦。如果没有OOP,Java桌面编程可能最适合跳转到现代编程,例如Swing和2D图形在JSE(Java标准版)平台上很容易学习。

对于雄心勃勃的想成为游戏开发者:今天有两种主要类型的游戏投放市场:“休闲”(通常是拼图或街机类型)和3D大型制作。快速(如C和3D)不值得牺牲写出一个好的和清晰的代码 - 后者将提升你的技能,从而提高你的效果,最终(如果有的话)转向C编程。所以,我建议首先尝试使用(如别人提到的)Python这样的语言,或者如果你想尽快进入OOP,Java,然后转向更具体的平台,如iOS,Android或Windows Phone 。在2D中编写至少3个中型游戏之后,你会对游戏开发的期望有更多的了解,特别是对游戏事物的要求,比如要求用户界面(与网络开发完全不同),AI(也是不同的应用程序思维方式),同步和同步事件,不实时提及3D图形和声音......

所以跳过太深是不明确的,因为它需要太多的体验,然后学习(而不是先学习,然后再体验)。将上面所写的内容视为提示,而不是唯一的指导原则。无论如何,祝你好运。 :)

答案 20 :(得分:0)

首先是学习编程。语言并不重要,但Python很容易。 有一些好书,我读过2,现在我可以说我擅长编程? 写一些例子。尝试思考如何管理所需的数据。 然后有图形。我会从pygame开始,因为这非常简单并且有一个很好的文档站点。但总是写例子并尝试。 然后你可以做你的第一个程序。非常容易。只有几百行。 我的第一场比赛是一场坦克比赛,其中3名球员能够在场上对抗并且有一些禁区。 这样的编程并不难,但需要收集经验和时间。最后一个是最难的部分。