代码之家  ›  专栏  ›  技术社区  ›  livingtech

学习游戏程序(控制台)时应该选择C或C++吗?[关闭]

  •  33
  • livingtech  · 技术社区  · 5 年前

    我在C和C++中有基本的游戏编程知识。我现在在学C。如果我想从事控制台游戏编程,我应该用哪个来继续?我注意到很多游戏公司都在使用C++/C(可能是因为遗留的原因)。也可能C++拥有更多支持的库吗?
    现代游戏引擎(Unreal/Crysis等)使用哪种语言编写?
    哪种语言比较适合?为什么?

    18 回复  |  直到 7 年前
        1
  •  51
  •   Will    14 年前

    C++,有两个原因。

    1)很多游戏都是用C++编程的。目前还没有一款主流游戏是用管理语言编程的。

    2)C++是很难得到的。你必须掌握手动记忆管理和一般的无边界检查(超出了优秀的Valgrind!)如果你精通C++,你会发现这是可转移的管理程序语言。少那么说,相反。

    C++的复杂度接近于 APL !打较弱的对手永远不会让你变好。

    Joel makes a very strong point about this . 了解机器如何工作的人会成为更好的程序员, because all abstractions are leaky .

        2
  •  37
  •   qc.zackf-Ngeneer    14 年前

    好的,这是我的两分钱。

    如果你打算认真进入游戏行业,我建议你学习两种语言。从C++开始,然后移动到C语言等托管语言中。C++具有C语言的优点,但C语言也有优于C++的优点。

    就个人而言,我更喜欢C++的任何一天。这是因为很多原因:只有几个原因:

    1. c让编程再次变得有趣;)。
    2. 它的托管代码帮助我轻松完成复杂的任务,而不是忘记安全。
    3. C S是纯粹的OOP,强制规则进入 帮助保留代码的代码 可读性更强,“可维护”和 执行更稳定。 生产率超过C++ 至少10%,最好的C++ 程序员可能会更好 C程序员。
    4. 这不是真正的原因,更多 就像“我”喜欢C: 林克

    现在……有很多事情我错过了C++。我怀念能够(完全)管理自己的记忆。我不能告诉你我有多少次试图“删除”一个实例/引用。我不喜欢C的另一件事是无法使用多重继承,但它再次迫使我思考如何构造代码。

    关于这个问题的讨论比已知宇宙中的恒星要多,而且它们都在死胡同中结束。任何一种语言都比不上另一种语言,从长远来看拒绝任何一种语言都会伤害到你。时代在变,计算机程序设计的标准也在变。

    无论你选择哪种语言,都要保持你的选择余地,不要把注意力放在任何一种语言上。你说你已经知道C++了,为什么不学C,它不会伤害我,我答应你,它会让你成为一个更好的C++程序员。

        3
  •  26
  •   kyoryu    14 年前

    它取决于

    这取决于很多事情——你的目标,你的经验,你的时间表等等。

    大多数游戏编程不是特定于语言的。3D数学是C语言中的三维数学,就像C++中的3D数学一样。虽然API可能不同,可能需要不同的“簿记”,但基本逻辑和数学将保持不变。

    的确,大多数AAA游戏引擎都是C++,上面有脚本语言。这是不可否认的。然而,大多数AAA引擎也有一组支持他们的内部工具,这些工具可能在任何东西——Java、C、C++等。

    如果你想写一个游戏,并且是一个有经验的开发人员 那么C++和C语言就有很多优点了。C拥有更少的内务,而C++有更多可用的库和工具。然而,对于任何高度复杂的事情,最好是尝试使用现有的引擎作为起点。

    如果你想写一个游戏,并且是一个新的开发者 那就不要写引擎了。使用一个现有的引擎,并修改它或使用它的设施来编写你的游戏。相信我。

    如果您想学习如何编写引擎,并且是一名经验丰富的开发人员 你应该考虑C++。C是可能的,但是代码的数量和C++集成的容易性可能使它超过了顶部。

    如果您想学习如何编写引擎,并且是一个新的开发人员 我可能会推荐C/XNA。你会更快地得到游戏的“东西”,少了学习C++的进退两难的头痛。

    如果你想在这个行业工作 然后你需要弄清楚你想要什么样的工作。高级语言可以帮助您在处理工具和/或Web开发方面取得进展,这可能会带来实际游戏工作的机会。如果你想获得更多的游戏设计者/编剧的职位,即使是对脚本语言的了解也会有所帮助。很可能你会 立即找一份核心引擎方面的工作,因为这样做所需的技能相当高。强大的C++开发技能总是有帮助的,尤其是在实时或网络场景中。

    AAA游戏引擎的开发涉及一些严重的扭曲大脑的代码。

    如果你想开一家专业开发公司 那么你可能没有读到这一点,但是已经知道C++可能是唯一可行的答案。

    如果你想做休闲游戏开发 然后你可能会考虑使用flash或者类似的技术。

        4
  •  13
  •   Marcus Johnson    14 年前

    我不会回答最初的问题,因为这里的大多数帖子都有。我要向你指出一些你在帖子里遗漏的东西。简单地了解C+C++C不会给你带来游戏开发的职业生涯。大多数游戏工作室都有几十到数百个应用程序来完成一个简单的代码猴子工作。与他们相比,什么让你脱颖而出?是什么让你比其他有在其他工作室制作游戏经验的人更受欢迎?

    如果你真的想在游戏行业中找到一份工作,即使是在游戏机上,你也应该做一个展示你所知道的东西的演示。如果你正在申请一个控制台开发位置,C++将是演示中使用的一种很好的语言选择。您可以通过在C \xna中制作一个工具来为您的演示创建资产来展示更多内容。你会告诉招聘经理和技术主管,你不仅仅是一个C++的人,或者只是一个C人:你是一个开发者。

        5
  •  10
  •   user123456    14 年前

    没有一种语言是“更好的选择”。使用最适合您需要做的事情的语言,无论是游戏编程还是任何其他领域。C++不会很快消失。

    如果您不是为微软平台开发,我怀疑您是否会使用C。

        6
  •  6
  •   Paul Nathan    14 年前

    C++。

    它是AAA游戏编程的黄金标准。如果你需要做一些有趣的事情,你需要做C++或者深入到非托管C语言中(不总是很好)。

    C++也可以说更快。 一般注意事项适用 )

    作为一种学习经验,C不值得。C++无疑是更好的,特别是在游戏机的准嵌入式世界中。为了获得面向对象的体验,面向Java。

        7
  •  5
  •   mdzindzeleta    14 年前

    说实话……你必须决定哪种语言更好。我知道我能用C做什么。我知道C++可以做什么。C并不是做C++所做的……在最基本的层次上编写代码,在人眼阅读时仍然有点意义。

    我们正在开发一个具有c_,directx…的游戏引擎,这是一个挑战吗?是啊,但这是我们选择做的。我们正在看一些非常接近C++所能给出的性能水平。所以,我认为这一努力没有问题。

    为了跨平台开发,如果不是针对.NET,我们可能没有Mono平台。Mono平台扩大了我们的平台基础。

    这里有一些 support to my arguments

        8
  •  3
  •   mr-sk    14 年前

    与Win32/GDI相比,C++相对容易进行,但远比Flash或Python(PyPoGAME)难多了。然而,通过使用C++,您将在学习过程中学到很多东西,并准备好继续作为游戏开发人员的职业生涯。如果您想编程到Xbox360,也可以查看XNA。

    我上了一些课 Game Institute (GI) 并学到了很多关于C++、Win32 API和DirectX的知识。

        9
  •  3
  •   Jason Williams    14 年前

    你不会发现C在任何控制台上运行,因此在这方面是无用的。

    如果你正在学习编程,C语言提供了比C++更柔和的学习曲线,但是你可以编写C++而不需要进入更可怕和复杂的语言领域,所以这并不难。

    如果你想用图形或其他“GoMeSee”程序编程,那么C是一个很差的选择——用OpenGL或DirectX去C++。

    编辑

    最后,如果你想在游戏中找到职业,那就去C++。你可以用C语言写游戏代码,但现实中你不会像C那样使用C语言找到几乎同样多的职业机会。除非你想成为一个游戏工具程序员,在这种情况下,C语言比C++要好得多,因为你可以在不太多的时间内获得更多的功能。许多游戏公司都在转向C以尽可能多地开发工具。

    当然,如果您能够处理工作负载,最好的方法是学习两种语言,并应用“工作的最佳工具”。因为它们很相似,所以当你学会了另一个的时候,学习一个其实并不难。(实际上,从C++到C语言的学习曲线大部分是.NET和LINQ等,而不是核心C语言本身——很多都是几乎相同的,只有少量的语法糖在这里和那里)。

        10
  •  2
  •   oneat    14 年前

    我认为C++。

    因为C运行时需要额外的安装,而C运行时只吸收磁盘上的空间。 当然,C有点慢。

        11
  •  2
  •   Jeff Hornby    14 年前

    这真的取决于你计划开发哪种类型的游戏:很多游戏都可以用C语言来完成。这就是说,大多数游戏开发都是在C++中完成的,因为大多数游戏开发需要满足平台所能提供的每一点性能,这意味着C、C++或(或) 战栗 )汇编程序。

        12
  •  2
  •   gbjbaanb    14 年前

    像这样看-虽然你可以用C语言写一个游戏,但它不会为你打开很多职业之门。如果你知道C++和Lua,那么你就更容易就业了。

    你不仅仅是在谈论电脑桌面和控制台,现在的游戏非常适合移动设备,所以只有知道C才会进一步限制你。当然,C++并不是编写iPhone应用程序的最佳选择,但是如果你知道C++的话,你就更接近于Obje-C程序员了。

    游戏DEVS使用C++不是因为遗留的原因(尽管已经建立了C++引擎和库有帮助),但是性能和经验。游戏开发者知道C++,对他们来说很好,所以没有必要改变。它不像(Windows上的)业务线应用程序,开发人员的思维共享与当前的微软工具一起移动。

        13
  •  2
  •   munificent    14 年前

    C++是控制台游戏行业的语言弗兰卡。无论好坏,你必须知道它是一个专业的游戏机程序员。

        14
  •  2
  •   devilcrack    14 年前

    如果你想成为一名职业开发人员,你需要了解C/C++。 故事结束!

        15
  •  2
  •   Coderer    14 年前

    嘿,如果对大猩猩来说基础足够好,对我来说就足够好了。

        16
  •  1
  •   Partial    14 年前

    我相信C++是你正在寻找的语言。游戏开发的大部分是C++,因为它是一种多范式语言(OOP,元编程等),因为它允许内存管理。使C++更好的是,它可以用来在众多平台上开发,而C语言不能在如此大规模的平台上开发。

    许多人会说,使用C您不必担心内存分配,这在一定价格下是正确的。您将肩负着.NET框架的重任,并且将慢慢地看到C的局限性,即某些任务必须以何种方式完成。

    也许你已经从一些答案中读到C++是一种硬编程语言。这主要是正确的,但也许你还没有听说过C++的一些用法。C语言中发现的一些特性,如垃圾回收,将成为可用的(可选的,你可以使用)与C++0X。而且,多线程将最终得到支持的语言与此修订的C++标准。

    我建议你买几本C++书籍以及C++ DirectX/OpenGL书籍。

        17
  •  0
  •   Woot4Moo    14 年前

    这总是很难说的,因为他们一直在使用组装,直到1993年,NBA果酱,如果有人记得那个坏男孩。技术在不断地发展,所以很难说它将走向何方,我建议学习C并对它进行一个非常坚定的理解,然后进入C++。我要提醒你,如果你喜欢玩游戏,你就不会喜欢编码游戏。

        18
  •  0
  •   alchemical    14 年前

    如果你知道C和XNA,你可以以非常直接的方式制作一些示例游戏,这可能有助于进入游戏领域。

    我猜,核心游戏引擎是用C++编写的,但是核心周围的其他代码可以是C语言。