it-swarm.cn

游戏编程:C#还是C ++?

我已经决定我真正想要做的是游戏编程。因此,问题是,作为一个想学习自学编程的18岁孩子,C#和C++之间最适合的编程语言是什么? (我应该声明我不关心Unix,因为我相信Windows仍将是使用最多的OS)

我知道C++的基础知识,但不了解C#。我知道C++有更多的教程指南,dll和类似的东西,而C#则没有,但是学习和使用一个人来开发程序要容易得多,但是即使程序被混淆,我也已经读过很容易找到它的来源。

好吧,我有点想首先关注基础知识,我必须说我偏爱C++,只是因为它对我来说更合适,但我必须考虑我一个人工作。因此,即使我喜欢它,也不是最好的选择。

我真的不确定要去哪一个,我已经在各种网站上读了很多线程,而且看来C#比C++越来越流行。但是,是的,我也指定我要进行游戏编程。因此,我需要知道一些不仅是“由于C.没有C++,因为.net内存处理而使C#更容易”的优点,因为我无法找到它。

15
Chronix

我通过编程游戏学习C++。那是一次非常愉快的经历。我极力鼓励您也这样做!

但是现在我是C#程序员,我知道如果那时C#可用的话,我的工作效率就会提高很多。

C#是学习游戏开发的理想选择。它具有从框架到书籍开始所需的一切,并且语言很棒。

我看过 数十本书籍 特别写在C#游戏编程上,Microsoft付出了很多努力来改善他的框架,包括DirectX[〜#〜] xna [〜#〜]

[〜#〜] update [〜#〜]:您可能也会对 this 感兴趣。这是Miguel de Icaza最近的博客文章。

更新2013-02-22Microsoft计划 取消XNA支持

21
user2567

大多数游戏公司都使用C++,也许在后台运行python脚本或其他语言。 C#中的Direct3d内容),但对于游戏编程而言,C++是主要语言。

我会给您一个合理的警告(但不要阻止您),但是3D图形会变得非常复杂。新的Direct3D使它比以前更容易使用,但是它仍然是一个很好的数学运算(可能会引起很大的混淆),而库本身可能会造成混淆。

首先,我将从非常简单的内容开始。对于2D东西一旦进入3D,SDL(简单Directmedia层)就很容易使用(对于自上而下的游戏而言),我个人认为OpenGL更容易学习(但这是所有观点)。 MS在DirectX SDK文档中有一些不错的教程/示例,因此值得一看。 Nehe教程虽然有些过时,但仍然不错。

但是,要回答您的问题,通常都是用C++完成的。

12
user6791

首先,您需要设置一些优先级。您是否只想先制作游戏,然后再学习编程的更高级方面,反之亦然。两种方法都有其优点和缺点,但在我看来都是合法的。

如果您想开始制作游戏,那么我建议您学习C#。如果您已经了解C++的基础知识,那么选择C#完全没有问题。使C#成为您的工具具有优势。它是一种易于学习的语言(与C++相比),是一种“托管语言”,这意味着它会自动为您完成内存检查(很多C++初学者,甚至不是初学者,都遇到了麻烦) )。它还使您可以访问Microsoft的XNA Framework,它可以为您完成更多繁琐的工作。这样您就可以专注于诸如游戏周期和设计之类的事情,而不必担心(太多)使其工作。没错,所有这些即时安装都有其开销,这意味着您可能不会制作行业级的3D游戏,但是您只是在进入游戏编程,所以我怀疑您是否会在首次尝试中制作下一个Halo 。 :)

这是开发成功的XNA游戏(“选择武器”)的家伙的事后总结。他详细介绍了如何使用C#/ XNA节省了开发时间,而不必使用C++。 http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php

话虽这么说,您应该花一些时间至少了解背景如何运作。 C++程序员将如何做。如果您想要在游戏行业中立足,学习用C++制作游戏可能会使加入另一个游戏开发团队(因为他们大多数都在C++中工作)变得更容易。但是,即使您最终从未使用过C++,无论您使用哪种语言,了解内部工作原理都只能使您成为更好的程序员。

8
System Down

原始的游戏编程会让您感到不寒而栗。在C#或C++中使用低级图形调用是一个小噩梦,您真的不想重建渲染2D精灵的轮子,更不用说3D模型了。由于您是一个人并且想学习编程,所以最好的选择是找到一个可以使您有所发展的框架。

既然您对基于C的语言有所了解,我的建议是给 nity 3D 一个外观。它不仅受到商业游戏开发商店的广泛采用,并具有一些有趣的平台选项(包括PC,Android,iPhone和Web运行时),而且还具有易于使用的免费版本和大量教程。向您展示如何从概念过渡到实施。最好的(IMO)受支持的脚本语言之一是C#。

3
Jacob Proffitt

我大力推广C++用于游戏开发。有一些额外的障碍,各有利弊,最好的原因之一是可移植性。

如今,使用C#,您可以进行更多的开发工作,并且肯定可以在其中编写一些令人惊讶的出色引擎。这两种都是游戏编程的好语言,如果您仅针对Windows/Xbox平台,那么您将特别有理由倾向于C#。

我最认为您应该学习的语言是OpenCL或CUDA,一种GPGPU语言。就我个人而言,我更喜欢OpenCL,因为它似乎可以持久并进一步发展,它基本上只是C风格。 OpenTK 是一个不错的C++或C#包装器。

我一直想知道Ruby)游戏编程会像硬件加速一样...

3
Garet Claborn

两年前,我为一个班级制作了一个游戏(当时我也才18岁),我们用C#编写了游戏。虽然我观察到大型C#程序通常比大型C++程序运行慢,但C#所需的工作量也要少得多。内存管理是自动完成的,对于第一个游戏而言,它足够快。 (我们的游戏是一款功能完善的2D多人Starcraft类RTS。)

我会扎根C#,因为它应该更易于管理。但是,如果您想成为专业的游戏开发人员,请记住它仅适用于Microsoft平台。 (不过,C#可能是C++的一个很好的垫脚石,如果我不得不重新学习这两种语言,那么我将首先尝试学习C#。)

2
zneak

我会投票给C++-主要是因为它可以跨平台(当然,这取决于您编写代码的方式),并且因为我认为它可以为您提供有关内存管理的更多知识-因为need to关心它。但是,由于您不关心linux/unix,因此,如果暂时不考虑内存复杂性,为什么不现在就专注于C#,然后再学习C++呢?

1
Mauren