游戏开发,适合初学者的语言? [关闭]
Posted
技术标签:
【中文标题】游戏开发,适合初学者的语言? [关闭]【英文标题】:Game Development, the language for beginners? [closed] 【发布时间】:2010-10-20 19:20:04 【问题描述】:我一直在寻找适合初学者游戏开发的最佳语言的网站。很多人说是基于 C 的语言,其他人建议使用 Python。
通常我只会选择一个,但这是我的两难选择。我不确定这是否正确,但我从这里的程序员那里读到,C 在 3d 渲染时要快得多,而 Python 则不然。然后人们发布支持声明 Python 可以擅长 3D 渲染。
我也不知道。
我目前的目标是制作一款图形类似于暴雪的暗黑破坏神 II 的游戏。
我有 php、javascript 框架和纯 SQL 方面的经验。另外,我在 Mac 环境中工作,并且可以访问 Windows XP。
说了这么多,我应该从哪里开始?为什么?
干杯
编辑了新问题
好吧,这一切对我来说都是压倒性的。如果我忽略了什么,请原谅我。我一直在查看 Unity 3d 和 XNA,但这些主要是与 .NET Framework 一起使用的游戏引擎,主要是 C#?
如果我只想在 OS X 上进行所有开发,但要针对多个平台进行编译,那么哪个是最佳选择?
【问题讨论】:
这听起来很主观,足以被标记为 Community Wiki。 我认为暗黑破坏神 II 是等距的,并且不需要那么多图形功能(在当前机器上) @ChessWhiz:同意,尽管这可能对programmers.stackexchange 有更好的吸引力。 你应该尝试使用unity 3d。它是跨平台的,这意味着您可以在 windows 和 mac 上运行您的游戏,也可以为 iphone 制作游戏!最棒的是,您可以在浏览器中玩游戏。 【参考方案1】:选择一种语言,因为它最终将是您尚未编写的程序的性能所必需的,这是过早优化的一个很好的例子。尤其如此,因为您将编写程序作为学习练习。
学习 C++、学习 3D 渲染 API 以及学习游戏编程技术是三个艰巨的目标。一次做一个可能是一个非常好的主意,这样你就不会同时与所有三个做斗争。
如果您已经决定使用 C++ 和特定的图形 API(OpenGL、DirectX 等等...),那么我建议您在三个单独的项目中学习它们,按照顺序,首先是一个简单的控制台 C++ 应用程序,或一系列练习,例如 Project Euler,然后通过一些图形可视化工具熟悉 API,一旦你合理地掌握了这两个工具,就可以开始构建游戏了。
如果您没有真正与任何平台或工具链结合,您可能应该从学习游戏编程技术开始。不幸的是,PHP 和 JavaScript 都不适合这样做,但正如其他人所建议的那样,使用 PyGame 库的 python 是一个非常容易上手的东西。
一旦您对游戏编程如何使用一种简单的语言有所了解,您就可以开始学习如何使用 3d api 来构建适合您目标的游戏。在您开始遇到性能问题之前可能不会太久。只有这样,您才应该考虑将关键代码路径重写为另一种语言。
【讨论】:
+1:“你还没有写的程序的性能”。 关于 Python:在 C 或 C++ 库上挂钩 Python 相对容易,可以将繁重的任务转移到更快的语言上,而其余部分仍然保持脚本编写的简易性。我想这就是 PyGame 所做的?【参考方案2】:我会试试XNA Game Studio 看看你喜不喜欢。到目前为止,我已经使用了一点并且喜欢它。它与 .NET 相关联,这是一个非常可靠的入门框架,在任何简历上看起来都不错。
我认为从帮助您创建这些游戏的框架开始是一个聪明的主意。否则,制作任何一种有意义的游戏的任务将是任何一个人都无法完成的任务。此外,您将重新发明大量功能。我推荐的唯一方法是,如果您想要进行学术练习,并且只是想从头开始了解这些引擎的工作原理。
拼搭游戏既困难又有趣。游戏创作提供了几个有趣的挑战,这是变得更聪明并构建您可以享受的东西的好方法。从小处着手,坚持下去,不要放弃!谁知道呢,也许一年左右我会检查你的游戏。
这里有一个link,可以帮助您入门。
【讨论】:
是的,一定要从游戏框架开始。请不要从 Python 开始,除非您已经熟悉该语言。 @orvado 同意,我将其添加到我的答案中。 OP 没有指定对任何 .NET 语言的熟悉程度,因此它是一种六种语言,另一种是六种语言。 @orvado 因为暗黑破坏神 II 是一款相当简单的等距 2D 游戏,我认为 Python/pygame 实际上可能很适合。不过,我不会推荐它用于 3D 游戏。 感谢 .NET 和 XNA 的热爱【参考方案3】:...我从这里的程序员那里读到,C 在 3d 渲染方面要快得多,而 Python 则不然。然后人们发布支持声明 Python 可以擅长 3D 渲染。
这真的取决于。 C 总体上要快得多,但在游戏方面,您的瓶颈通常是图形渲染——然后,优化您的 OpenGL 调用,例如,可以让您在 Python 中编写游戏并且仍然获得不错的性能。然而,Python 本身并不是过于复杂/3d 游戏的好选择。你会想要使用 Panda3D 之类的引擎(这里已经提到过)。为什么?它提供了用 C++ 编写的渲染代码(在这种情况下)以提高性能,允许您在 Python 中编写更高级的逻辑,但如果速度是绝对必要的,仍然使用 C++。如果你还没有学过一门语言,Python 不会那么令人生畏——但从长远来看,C 会提供更好的性能。请注意,过早优化(即在写很多东西之前担心性能)不是一个好主意。
另外,请注意,无论哪种方式,如果您真的想要性能(或使用游戏引擎),您可能会学习原始 OpenGL。
...类似于暴雪的暗黑破坏神 II 的图形。
因为这是一款较旧的游戏(如前所述),性能和速度可能不是绝对必要的。 Python 以快速原型设计和更快的开发而闻名。
...Unity 3d 和 XNA
据我所知,XNA 通常仅适用于 Windows,但如果您是游戏开发新手,那就太好了。 Unity3D 支持 Windows 和 Mac,即使它使用 .NET 语言。它还支持一种称为 Boo 的 Python 方言,因此这可能很有用。
对于 Python 引擎和库,您将拥有用于 2D 的 PyGame 和 Pyglet。 Pygame 是 SDL 的包装器,它似乎更受欢迎。 Pyglet 是 Python 和 OpenGL 的窗口框架,但它也提供动画、事件循环、媒体播放等。但是,这意味着您必须学习 OpenGL,而使用 PyGame 可能没有必要。 XNA 让您不必学习 DirectX,而 Unity 为您提供了它的引擎。 Panda3D 已被提及用于 3D; Pyglet+OpenGL 也可以处理 3D。
Unity 看起来最好;然而,它可能是压倒性的。 Python 没问题,但提供的并不总是那么多。
【讨论】:
【参考方案4】:我自己刚刚开始尝试,但如果您想尝试 Python 和 3D,我建议您尝试Panda3D。所有核心功能都是用 C++ 编写的,但您可以使用 Python 或 C++ 进行编程。它是一个游戏框架,因此它具有许多内置功能,例如碰撞处理、一些人工智能和性能监控。它由迪士尼开发,但由迪士尼和卡内基梅隆免费维护。网上有一本很棒的[手册],还有不少sample programs。另一个很酷的事情是它有一个网络插件。哦,我有没有提到它是跨平台的?
【讨论】:
【参考方案5】:如果您查看像 Civ IV 这样的游戏,您会发现 GUI 是用绑定到 Python 的 C(我相信是 SDL)实现的,并且许多非 GUI 逻辑是用 Python 编写的。
这可能是一个很好的开始方式,尤其是对于可以非常动态地开发的原型。
如果您发现瓶颈,您总是可以将其移植到 C 或类似的东西并将其绑定到 Python。
不管你是否使用 Python,你至少可以玩一下Pygame。
它还有一个额外的好处,那就是游戏可以在 mac 上玩。我现在不知道那个平台对 .Net 的支持有多好。
【讨论】:
澄清一下:Python 可以移植到任何支持它的平台,尤其是 Linux、BSD、Mac 和 Windows,而 XNA(主要的 .NET 选择)仅适用于 Windows。我认为 MonoXNA 仍处于试验阶段。【参考方案6】:我发现带有 OPENGL 的 C++ 比其他的更易于管理,主要是因为 Internet/书籍上的大量信息。我确实使用了一些 JOGL (Java+OPENGL),但它是相对的。当时是新的,我不太喜欢它。
俄罗斯方块通常是一款不错的 IMO 入门游戏。
【讨论】:
【参考方案7】:我的理解是,出于性能原因,像暗黑破坏神 II 这样的图形密集型游戏通常是用 C++ 编写的。
但我喜欢用 C# 或 VB 进行基于 XNA 的 .NET 开发的想法。
【讨论】:
【参考方案8】:这取决于。 C/C++ 速度要快得多,因为它被编译为普通的处理器指令。 Python 被解释,这使得它根据定义变慢。重要的问题是:你的游戏会是什么样的?像暗黑破坏神 II 这样的东西可能使用 Python 可以有效地实现。解释型语言使用起来更舒服,所以如果性能和分布允许,那就选择 Python。否则 C/C++ 是一个很好的选择,因为它的速度和可用库的数量(几乎每个图形库最初都是为 C/C++ 编码的)。
【讨论】:
C/C++ 几乎从不编译成字节码,而是编译成机器语言。 @TokenMacGuy:我选错词了。现已更正。 严格来说 Python 不是解释的,它是字节码编译的。 @Ignacio Vazquez-Abrams:优化的字节码没有被解释?据我所知,Python 不会生成处理器指令。 Java 也一样。 Java 和 Python 都有 JITers。 Java 甚至默认使用它们。【参考方案9】:我会先把你的目光放在更小的东西上。暗黑破坏神是由一个大型团队开发的,并且需要数年时间来开发。
然后,您需要决定要为哪个平台设计:桌面、网络、移动设备或控制台。
假设你选择像 XBox 这样的东西,XNA 可以用 C# 编码。 如果您选择开发网络应用程序,那么有很多网络游戏生成器,例如 Sploder。
【讨论】:
【参考方案10】:几年前,我开始使用 C++ 和 Allegro 游戏库的组合进行游戏开发。我不确定 Allegro 在过去十年中取得了多大的进步,但我建议在深入 XNA 之前先弄湿你的脚。
【讨论】:
【参考方案11】:为了了解游戏开发技术和设计模式,从 Haxe 或 ActionScript(因为您已经了解 JavaScript)等熟悉的东西开始是合理的。一旦你学会了这一点,学习另一种编程语言就相对简单了。
【讨论】:
【参考方案12】:我自己也使用过 XNA,我不得不说它是一个非常不错的平台,但是,如果你确定你希望从一个独立于平台的项目开始,那么我建议你看看 OpenGL 之类的C/C++。还可以查看 GLFW http://www.glfw.org/ 或 SDL http://www.libsdl.org/ 之类的窗口、操作系统事件管理和输入处理。我已将 SDL 用于俄罗斯方块的多平台端口,但后来切换到 GLFW 以获取我正在编写的 Asteroids 版本。下载 GLFW 时会附带参考和用户手册。
DevMaster 上的引擎页面:http://www.devmaster.net/engines/ 包含许多指向游戏开发各个方面的库的链接,是一个不错的起点。
【讨论】:
【参考方案13】:我会推荐带有 XNA 的 C#,因为 XNA 库为您做了很多工作。
【讨论】:
【参考方案14】:我建议你看看你真正想要制作什么样的游戏。快节奏的 3d fps 需要一些其他技能,然后是 SimCity。 游戏开发的框架有很多,每一个都有自己的优势和特点。寻找与您想编写的游戏类型相匹配的游戏。选择语言不太重要。
对于 Mac,Unity 似乎很受欢迎。您可以探索的另一个有趣的选择是 Blender。虽然它是一个 3D 建模应用程序,但它可以在 python 中编写脚本,并且可以用于游戏开发。
【讨论】:
【参考方案15】:如果您的目标是制作一款满足在 OSX 上开发并在任何地方运行的要求的游戏,那么它听起来很像 Unity3D,这将是一个很好的匹配。在这条道路上,您最终可能会使用 UnityScript 和/或 C# 进行编码。它在一个软件包中为您提供了很多工具,并且在游戏开发界很受欢迎。所以这听起来对你来说也很适合我。
如果你只是想学习,你可以使用任何你喜欢的语言。如果您想要易于转移的技能,则相当受欢迎。如果您只是在学习概念,我不会太担心性能。语言不计其数,大多数都会教你一个坚实的基础。
如果您想成为在游戏机上工作的知名工作室的专业游戏开发人员,您可能需要考虑学习一些 C 或 C++ - 特别是了解内存管理、指针和其他一些低级概念。
【讨论】:
【参考方案16】:您可以查看(部分)以下(跨平台)游戏引擎:
OpenArena、ogre3d、Irrlicht(托管在 sourceforge 上)、Sauerbraten、Dimension3、Panda3D、Cube、Unity、torque-3d、...
http://osx.hyperjeff.net/Apps/apps?f=game%20engine
【讨论】:
【参考方案17】:由于您是新手,您希望尽可能多地消除编程困难。我会推荐像IsoWorld 这样的等距游戏引擎,它已经内置了很多房间、物体和图形。它是available for both Mac and PC,它有一个demo。
【讨论】:
【参考方案18】:您想从暗黑破坏神 2 开始吗?那是一场大规模的比赛。即使是最初的暗黑破坏神也需要几个月的时间才能自己制作。我建议从更小的东西开始,可能是 2D 的。
我个人使用俄罗斯方块作为起点。
关于一种跨平台且可在 Mac 上开发的语言,我可能会投票支持 ActionScript (Flash)。除非您做一些疯狂的繁重数学运算(我怀疑您会这样做)或想要合理的 3D 渲染,否则性能应该很好。
【讨论】:
【参考方案19】:你不能真的一边吃蛋糕一边吃。
如果您想要原始速度,您将不得不或多或少地采用 C/C++ 方式。编译的二进制文件仍然是最快的方法。
如果您想要超棒的跨平台可移植性,Python 可能是您的最佳选择。虽然速度慢得可怕。 :-/
如果我正在编写一个 3D 游戏,我会用 C++ 编写它,并使用#defines 进行任何跨平台工作。
出于人们通常的原因,我并不特别关心框架思维方式。
对于想要进入游戏开发的程序员,我会毫不犹豫地推荐 C++。一般来说,您将能够创建足够的库来允许您的表现力。
【讨论】:
【参考方案20】:首先,我想说:做你喜欢做的事,创造你喜欢的游戏,跟随你的想象力。否则,你可能没有真正的动力,学习也会不愉快。这来自我大约 21 年的编程经验 - 游戏,而不仅仅是游戏......
开始非常快速,但结果一般: 如果您没有 OOP 方面的经验(面向对象编程),我会避免使用语言,或者更确切地说是平台,因为它们首先需要大量学习(因为它会扼杀创造力)。对于许多人来说,C# 可能是这样一种语言,因为微软与谷歌不同,提供了(对于初学者来说太多了)时尚的范例。相反,有些事情您可以快速轻松地完成,例如帕斯卡或 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 .在编写了至少 3 款 2D 中型游戏之后,您会对一般游戏开发的期望有更多了解,以及特定于游戏的事物,例如要求高的 UI(与 Web 开发完全不同)、AI(也应用程序的不同思维方式),同时和同步的事件,更不用说实时的 3D 图形和声音......
所以绝对不建议跳得太深,因为它需要太多的经验,然后学习(而不是先学习,然后再体验)。将上面写的内容视为提示,而不是唯一的指导方针。无论如何,祝你好运。 :)
【讨论】:
【参考方案21】:首先是学习编程。语言无关紧要,但 Python 非常简单。 有一些好书,我读过 2,现在我可以说我擅长编程? 写一些例子。尝试考虑如何管理所需的数据。 然后是图形。我会从 pygame 开始,因为这很容易并且有一个很好的文档站点。但总是写例子并尝试。 然后你可以做你的第一个程序。很容易的事情。就几百行。 我的第一场比赛是一场坦克比赛,其中 3 名玩家可以对抗,场上还有一些盒子。 这样的编程并不难,但需要积累经验和时间。最后是最难的部分。
【讨论】:
以上是关于游戏开发,适合初学者的语言? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
用于游戏开发的 Autodesk Scaleform [关闭]
unity3d游戏开发和unity入门到精通哪本书适合初学者