在游戏开发中,C ++是否仍然“首选”?[关闭]


17

我是2D游戏程序员。我擅长的某些编程语言是C,Java和C#。我也知道Actionscript 2.0、3.0和一些javascript。我对学习3D游戏编程感兴趣。到目前为止,我通过谷歌搜索和阅读不同的游戏开发论坛和文章而积累的研究成果。我注意到大多数程序员倾向于使用C ++。在在线游戏编程教学课程中,我注意到他们更喜欢将C ++和Visual C ++作为入门课程。之所以问这个问题,是因为我想了解C ++,C#和Java在3D游戏编程方面的“优势”差异。

还包括指向2D游戏程序员的良好 3D游戏编程文章的链接。

PS:恕我直言,我也发现C ++是神秘的。


我也得到很多。因此,在社区中问一个关于专业游戏程序员应该具备哪些技能的问题。得到了一些很好的答案,重点放在C ++作为开发游戏的更好语言上。检查..gamedev.stackexchange.com
questions/

@GamDroid:我对知道什么使专业2D游戏程序员不感兴趣。我对了解Visual C ++感兴趣,为什么要继续谈论它。
Vishnu

2
顺便说一句:Visual C ++?不只是普通的C ++?
加速

Visual C ++编辑器很酷,但是Visual C ++语言(即:带有Win32 GUI API的C ++和类似的东西,都带有MS Visual C ++或Borland C ++ Builder)非常令人困惑,不应该用于游戏(它也是如此) ,肿,使用GDI比使用SDL控制窗口要慢)
加快了2010年

1
@Vish表示歉意,请随时对其进行编辑以更加精确,同时请牢记到目前为止的评论。如果您的意思是Win32编程令人困惑,那就这么说。
Tetrad

Answers:


30

是的,C ++是最常用的语言(尽管有些人仍然使用C)。

有许多原因。纯粹的动力是一种-它仅仅是使用了多年的语言,已经存在许多技术并且人们对此感到满意,因此改变不会一overnight而就。

然后是控制问题。游戏开发人员是控制狂,我们想知道代码中正在发生的一切。C ++为我们提供了C#和Java(选择您提到的两种选择)控件的控制权。在许多方面,这可能是一件好事,但游戏编码人员不喜欢它:)

最后,存在一个简单的实际问题,即各种平台的SDK都是以C ++为中心的。使用另一种语言不可避免地会涉及编写包装器,交叉编译为VM,并且可能(在某些控制台开发的情况下)平台持有人不允许这样做(它们确实不喜欢人们开始进行JIT编译)。


2
在主流开发行业中,是的。
JasonD 2010年

2
就语言而言,主要是C ++-它很快就不会出现在任何地方。我建议,也不会伤害到熟悉脚本语言- Lua中,Python等
JasonD

8
Visual C ++不是语言,而是IDE。
SurvivalMachine

2
是的,尽管它可能是最常用的IDE,所以在学习C ++的同时值得一识。
JasonD

1
@SurvivalMachine从技术上讲,这是一种方言(标准中不存在很多MSVC ++扩展)
bobobobo 2012年

4

C ++仍然是首选,因为您几乎可以在任何有关游戏开发的出版物上看到。我个人目前正在使用C进行游戏开发,原因很简单,原因是我编写的C ++代码滥用模板功能,广泛使用RAII,动态内存分配以及其他我在游戏代码中不应做的事情至今。

坚持使用C会使我变得简约,并思考自己在做什么。当您不得不重新实现STL免费提供的功能时,有时会比较困难,但是从好的方面来说,我觉得我写的代码更简洁,并且有更好的时间调试该东西。


3
RAII在游戏代码中是完全可以接受的(应该鼓励)。
stonemetal

1
@stonemetal:RAII鼓励延迟分配资源,因此无法预测。是否应该鼓励这样做取决于您的游戏大小和目标平台(以及相关资源);平均而言,我不鼓励这样做。此外,C ++中的RAII最常用于堆分配,因为C ++的OO会使堆栈分配变得非常困难。

3
RAII以何种方式鼓励延迟资源分配?当我使用GLFW时,我创建了一个名为GLFWRAII的类,该类在构造函数中调用GLFW的init函数,并在析构函数中调用GLFW的清理例程。我在main的开头将其分配在堆栈上,它绝不会延迟任何内容,也不会导致任何不可预测的事情。其他用途可能是在级别的开始进行分配,并在级别的结束进行清理。不好地使用一项技术并不意味着它是一项糟糕的技术。除了使用不当之外,关于RAII的任何内容都没有表明不可预测的资源分配。
stonemetal 2010年

您只需要避免使用这些功能。我使用C ++,我从不在代码中使用模板,也没有对象在其构造函数中引发异常。在C语言中,您仍然可以使用动态分配(并且您必须使用3D游戏)。此外,您应该以一种其他人也容易理解的方式进行编码-即使理解纯C代码的大型项目也可能是个地狱。如果您即使不强迫自己去考虑自己在做什么,也可以使用许多其他语言编写简洁的代码。
Pablo Ariel

1

我个人不喜欢C ++,并且我更喜欢Java。但是,业内大多数人确实使用它,这是无需包装程序和虚拟机即可转换为其他平台的最简单语言。

但是,有时其他语言对游戏开发非常有用。我将Java与LWJGL结合使用,真是太神奇了。因此,如果您想开始学习3D编程和OpenGL而不必学习C ++,请尝试使用LWJGL使用Java的,因为它非常轻巧,我认为它实际上是通过JNI运行的C ++代码。

从长远来看,也许您可​​能希望切换到C ++,但是您可以使用C#或Java来开始和练习。因为大多数游戏代码都来自使用该语言的经验,但是您应该尝试使用自己喜欢的语言来练习OpenGL。另外,在练习图形时,还应该尝试使用OpenGL的GLSL,它具有非常类似于C的语法

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.