最近我一直很烦,因为我达到了C ++(甚至0x)感觉非常有限的程度,所以我开始寻找替代方案。
忘记Java,C#,Python或Ruby。我仍然喜欢C ++的低级特性,我不喜欢虚拟机。此外,我是一个游戏引擎开发人员,所以我必须开发必须非常快的核心例程,最近我一直渴望代码表达能力。对我来说,C ++是一种几乎在那里语言,但是如何使用模板有很多例外,GCC并没有像我希望的那样优化内容。
所以我正在考虑开始学习D。
你认为它足以满足我作为游戏开发者的需求吗?我很谨慎,因为我从来没有听说过D被用于那个。
谢谢!
答案 0 :(得分:39)
我最近自己学到了很多D,尽管还有更多要去。从我到目前为止所学到的,我会说,虽然语言对于几乎任何东西都很棒,但编译器和库是现在不是最好的,所以你不能确定编译器没有错误(它不是)。对于游戏编程,你需要确保垃圾收集正确发生,例如,并且编译器没有错误地优化掉重要的代码...这样的事情可能会让你重新思考使用语言。然而,我自己认为语言本身是最好的(这是完全主观的),我认为使用它的唯一障碍是缺乏完美的实现,而不是语言本身。
答案 1 :(得分:24)
我使用D 1.x进行游戏和演示,其中一些是公共领域开源(A,B,C,D,{{ 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是一款出色的视频游戏语言,它具有快速开发高性能可执行文件的所有功能:
您不需要单独的脚本语言,也无需额外的编译步骤来生成代码,当性能对于低级系统很重要时,您不仅限于虚拟机的内存模型,而是获得了所有生产力和安全性用于游戏逻辑的脚本和托管语言。您甚至可以自由选择程序,面向对象,功能,泛型或元编程范例来解决当前的问题。
答案 4 :(得分:7)
嗯,如果你使用D就不一定要从头开始构建所有东西。例如,您可以使用:
我不确定覆盖层。这是一个非常坚实的基础,希望对我有用:)
祝你好运!答案 5 :(得分:6)
在D preramming他们是:
最常用于语言编程,不支持opengl 3和4
一个小方法: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. 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 ++相当,无论如何,如果你想要的话,组件总是可以手动优化。