C ++作为Windows游戏编程的第一语言?

时间:2009-10-24 13:45:39

标签: c# c++ directx xna

我是一个业余爱好者程序员,对Python很有把握,我现在正在学习C.最近,我正在和一位也想学习编程的同事交谈。在他的案例中,他想学习C ++作为使用DirectX进行Windows游戏编程的途径。就个人而言,我觉得直接进入C ++是因为你的第一语言有点多了 - 用一种更容易的语言保持动力是很难的,而且我认为学习另一种语言更好地掌握大部分基本概念,然后进入像C ++这样的东西。

我发现Python作为我的第一语言工作得很好,因为我对Linux / Unix平台上的网络和网络编程更感兴趣,但对于主要对Windows游戏编程感兴趣的人,我认为C#可能是更好的选择,因为他可以学习使用Visual C#Express Edition和XNA,然后在他准备开始学习C ++时切换到Visual C ++,因此已经处于熟悉的环境中。我认为内存管理需要很多东西,而C#至少可以处理它,所以他可以把它放到他开始学习C ++之前。

其他人如何看待C ++作为此类应用程序的第一种编程语言?我应该建议他去C#吗?

10 个答案:

答案 0 :(得分:15)

C ++应该没问题。我认为他最好不要学习内存管理,指针等。然后再跳到C#,因为他将了解程序如何更好地工作。否则,他只会将记忆视为神奇而垃圾收集器将没有任何实际意义。了解基础语言(C,C ++,汇编等)以生成最佳代码总是好的。

答案 1 :(得分:8)

C ++是大多数“严肃”游戏的主要语言。如果为一个主要的游戏工作室编程,那么他需要知道C ++的脏东西。

从C ++开始对于一个完整的新手来说可能有点多。我会推荐C作为一个很好的起点。在添加C ++的复杂性之前,您已经熟悉了内存管理和其他低级内容的概念。

由于C#是托管代码,因此他无法获得低级内存管理的见解。不得不处理C ++时,这对他不利。在这种情况下,从金属开始接近将有助于他长远。

答案 2 :(得分:6)

C ++游戏编程很棒。但除非你在学习编程时喜欢完全痛苦,否则你可能会从XNA开始。这将允许您处理游戏内容和逻辑,而不是与您的引擎代码作斗争。

现在,如果您喜欢痛苦,请使用DirectX和C ++路线开始。

答案 3 :(得分:6)

我认为在使用C ++之前彻底学习Java或C#等语言会更好。我说这个的原因是因为你很容易陷入C ++的细节和错综复杂之中。

我几年来一直在和C ++一样苦苦挣扎(作为一种爱好),然后在Uni我学习了Java,停止了做任何C ++,找了几年做Java的工作,然后转入C ++ dev。我很快就完成了所有工作,因为我已经知道我想要应用哪些模式和概念,这只是学习语法和怪异以及再次习惯指针的问题。我只是必须学习如何而不是为什么。将C ++作为第一种主要语言,同时学习HOW和WHY,这可能会让人非常困惑!

XNA是一个很好的建议。

答案 4 :(得分:3)

Python擅长游戏编程。见i-want-to-learn-game-development-which-language-should-i-use。考虑学习Pygame

  

Pygame是一组专为编写游戏而设计的Python模块。 Pygame在优秀的SDL库之上添加了功能。这允许您使用python语言创建功能齐全的游戏和多媒体程序。 Pygame具有高度可移植性,几乎可在所有平台和操作系统上运行。 Pygame本身已被下载数百万次,并且已经有数百万次访问其网站。

答案 5 :(得分:3)

如果他想进入这个行业,那么了解C ++至关重要,因为大多数游戏引擎都使用C ++。 (我也是开发人员应该某点精益C或C ++)
但是,如果他想写游戏(比如完成游戏的话),那么C ++可能就没有了。它非常复杂并且有很多陷阱使它成为一种缓慢的语言开发。它不仅仅是内存管理,而是像可怕的stl相关的编译错误等,这使得在第一次尝试时很难完成任何事情。编程。
看看像C#或Python这样的东西会是一个更好的选择,因为它们的语言要简单得多,而且每个都有一些好的游戏库。

如果他认为C ++是正确的方法,那么我建议至少使用一个渲染库。像Ogre3D这样的东西至少。本文Write games not engines涵盖了这一点的原因。虽然从基础API编写(或尝试编写)引擎将是一个很好的体验,但游戏不太可能完成。

答案 6 :(得分:2)

您必须考虑的是现有的SDK,您可能不希望自己编写所有内容。例如,有很好的3D引擎可以使用不同类型的许可证。

因此,您应该同时查看现有的库和SDK以及您想要一起使用的几种语言。适应C ++或C#并不是那么困难,前者更严格,要求更高,而它可以让你对内存进行更广泛的控制,后者允许你专注于主要的开发领域,但需要负责内存管理(主要是),这意味着你可以有实时问题。

在一天结束时,构建应用程序的帮助将总是超过这些OO语言之间的微小差异(在某种程度上)。

有很多游戏引擎,大多数都列在on this page。特别感兴趣的是,在自由世界中:

非免费套餐包括Unity等。

如果想要任何这些引擎,那么仍然有很好的库,比如Qt用于C ++,允许编写脚本 - 虽然不是直接使用Python,但你必须嵌入它你自己 - 以及C#的其他人,但是上市可能会非常冗长。

答案 7 :(得分:1)

通常情况下,人们在完成第一场比赛之前就会失去动力。因此,除非您的朋友有坚定的记录,否则我建议使用最高级别的选项。如果你在C ++和C#之间做出选择,那就是C#。

答案 8 :(得分:0)

我更喜欢XNA和C#进行快速而轻松的介绍。我会在使用C ++和DirectX这样的库之后进行游戏编程,然后对这个主题有一些经验。大多数最成功的游戏都是用C ++编写的。 / p>

答案 9 :(得分:0)

如果您的目标是获得乐趣,并且实际上自己(或小团队)完成范围相对较小的游戏,那么我会说C#和XNA。

如果您的目标是在行业中工作,那么与巨型团队一起进行超级大预算游戏......那么C ++ ......