游戏开发的D编程语言

时间:2010-12-23 06:00:22

标签: d

最近我一直很烦,因为我达到了C ++(甚至0x)感觉非常有限的程度,所以我开始寻找替代方案。

忘记Java,C#,Python或Ruby。我仍然喜欢C ++的低级特性,我不喜欢虚拟机。此外,我是一个游戏引擎开发人员,所以我必须开发必须非常快的核心例程,最近我一直渴望代码表达能力。对我来说,C ++是一种几乎在那里语言,但是如何使用模板有很多例外,GCC并没有像我希望的那样优化内容。

所以我正在考虑开始学习D。

你认为它足以满足我作为游戏开发者的需求吗?我很谨慎,因为我从来没有听说过D被用于那个。

谢谢!

11 个答案:

答案 0 :(得分:39)

我最近自己学到了很多D,尽管还有更多要去。从我到目前为止所学到的,我会说,虽然语言对于几乎任何东西都很棒,但编译器是现在不是最好的,所以你不能确定编译器没有错误(它不是)。对于游戏编程,你需要确保垃圾收集正确发生,例如,并且编译器没有错误地优化掉重要的代码...这样的事情可能会让你重新思考使用语言。然而,我自己认为语言本身是最好的(这是完全主观的),我认为使用它的唯一障碍是缺乏完美的实现,而不是语言本身。

答案 1 :(得分:24)

我使用D 1.x进行游戏和演示,其中一些是公共领域开源(ABCD,{{ 3}})。

如果你愿意支付与每个人讨论为什么使用D的高价格,那么D可以为你提供C ++中闻所未闻的生产力 - 土地。

如果你走这条路,我建议你选择D 2.x,Derelict和Visual D(暗示未来的读者:这是2011年)。

至于游戏开发:

  • D GC不是一个真正的问题。如果你在一个框架中分配太多,那就是它。汇集,重用等经典方法......工作。

  • 你可以在Linux,Mac和Mac上轻松编写x86程序集。视窗。如果允许非常有趣的模板化裸装配函数,也是静态的。

  • 跨模块边界内联工作没有“链接时优化”开关

  • 我发现维护调试和发布版本更容易(与C ++相比)

  • 避免新功能并保守地选择编译器......就像在C ++中一样

答案 2 :(得分:14)

Kenta Cho使用D和Simple DirectMedia Layer(SDL)来发展他的Windows games。他们很有趣。寻找灵感和来源:

答案 3 :(得分:8)

D是一款出色的视频游戏语言,它具有快速开发高性能可执行文件的所有功能:

  • 它可以快速编译本机代码并快速运行。
  • 开箱即用的单元测试,分析和代码覆盖率。
  • 垃圾收集是默认设置,但您可以使用自己的内存分配器。
  • ABI与C兼容,调用本机库无需编组成本。
  • 类型系统中的线程安全:共享,纯粹和不可变限定符。
  • 类型系统中的内存安全:@safe,@ trusted,@ system。
  • 编译时功能评估,代码生成等。

您不需要单独的脚本语言,也无需额外的编译步骤来生成代码,当性能对于低级系统很重要时,您不仅限于虚拟机的内存模型,而是获得了所有生产力和安全性用于游戏逻辑的脚本和托管语言。您甚至可以自由选择程序,面向对象,功能,泛型或元编程范例来解决当前的问题。

答案 4 :(得分:7)

嗯,如果你使用D就不一定要从头开始构建所有东西。例如,您可以使用:

  • 输入/输出的GLFW
  • Horde3D作为渲染引擎
  • OpenAL for sound
  • 物理子弹
  • Lua for scripting
  • lzo快速减压
  • 可能是橙色的序列化

我不确定覆盖层。这是一个非常坚实的基础,希望对我有用:)

祝你好运!

答案 5 :(得分:6)

在D preramming他们是:

最常用于语言编程,不支持opengl 3和4

  • yage免费3D游戏引擎,欢迎您的帮助

一个小方法:http://blog.fedora-fr.org/bioinfornatics/post/D-programming-OpenGL-and-MVC-Pattern

对于在D中使用RAII,它们是非常强大的关键字范围

答案 6 :(得分:4)

欢迎来到2014年!

在撰写本文时,最新版本的D是2.067。关于auto,D稍微不稳定,但除此之外,我不明白为什么不使用D.编译器有很大的改进。

在我看来,D比C ++更容易阅读,更容易学习。它包含C的接口和C ++的部分接口。它甚至允许可以与变量交互的内联汇编。 D标准库叫做Phobos。

我强烈建议D. D是为了提高效率。根据Adam D. Ruppe的说法," [C]同样快速"。 C是最快的语言之一。因此,如果你想以C的速度和C ++的高级功能构建一款游戏,那么D就位于其中。如果您有任何疑问,请随时加入irc.freenode.net #d。

总而言之,D基本上是C ++的安全版本。虽然语言是多范式的,包括OOP,但使用pure函数和不变性对FP范式给予了很多重视。所有对象都具有init属性,因此如果您声明' int foo;',则会将其初始化为int.init。是的,还有指针。 D中的指针称为左值,值称为右值。左值始终指向右值。

有关详细信息,请访问官方D网站http://www.dlang.org/

答案 7 :(得分:1)

自称为“team0xf”的人在D1中完全this

答案 8 :(得分:1)

补救措施(Max Payne,Alan Wake,量子休息)正在使用D:http://dconf.org/2013/talks/evans_1.html

答案 9 :(得分:0)

我也希望有一天能学习D语言:)

但有一点需要记住:良好的语言是好的,但作为游戏开发者,您还需要工具(如图书馆)来进行投标。目前很少有好的图书馆与D绑定。但是,我知道最有可能(但不是肯定)的图书馆有:

Ogre - 面向所有便携式3D图形需求的领先免费图书馆之一。

当然你需要更多,但这在很大程度上取决于你的游戏。

我不知道为C ++库绑定到D是多么容易或多难。它可能很难,可能很容易并且有些自动化。后者几乎是可能的,因为,正如我所说,语言彼此非常接近,D开发人员可能在很多时候都考虑过C ++。

希望这有帮助。

答案 10 :(得分:-1)

从另一个角度来看,D编译成与C / C ++相同的目标文件(尽管是OMF格式)。可以假设D的组装优化与C / C ++相当,无论如何,如果你想要的话,组件总是可以手动优化。