游戏开发的D编程语言

Gui*_*ira 54 d

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

忘记Java,C#,Python或Ruby.我仍然喜欢C++的低级特性,我不喜欢虚拟机.此外,我是一个游戏引擎开发,所以我必须要发展核心程序必须是非常快,而且最近我已经饿了码表现.C++ 对我来说几乎是一种语言,但是关于如何使用模板有很多例外,而GCC并没有像我希望的那样优化内容.

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

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

谢谢!

Meh*_*dad 39

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

  • 我更喜欢使用智能指针进行内存管理.我完全不喜欢垃圾收集,它与速度或其他任何事情无关.我在概念上真的不喜欢它.我可以在D中执行RAII并禁用垃圾收集器吗? (10认同)
  • 无论你曾经在C或C++中做过什么,都没有什么能阻止你做D - 你曾经做过的一切都是可能的.只是有更多的功能可用; 什么都没有(据我所知,除了多重继承)已经一去不复返了.所以是的,从我所看到的,如果你愿意,你可以做RAII.(另外,D有阵列切片,它非常有用而且不是C++的一部分......你可能真的很喜欢它,它当然比复制更快.) (9认同)
  • 是的,但标准库的一部分依赖于垃圾收集器.你需要避免这些功能. (9认同)
  • 看起来如此:http://www.digitalmars.com/d/2.0/memory.html (5认同)

pon*_*nce 24

我使用D 1.x进行游戏和演示,其中一些是公共领域开源(A,B,C,D,E).

D可以为你提供C++中闻所未闻的生产力 - 如果你愿意为每个人争论为什么要使用D而付出高昂的代价.

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

至于游戏开发:

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

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

  • 跨越模块边界的内联工作没有"链接时间优化"开关

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

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

  • 2014年:D 2.x,Derelict和Visual D仍然是实际的. (3认同)

Cor*_*rch 14

Kenta Cho使用D和Simple DirectMedia Layer(SDL)来开发他的Windows游戏.他们很有趣.寻找灵感和来源:

  • Kenta Cho使用D1.D2比C++更接近D1. (4认同)

Jer*_*ier 8

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

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

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

  • https://github.com/DerelictOrg/DerelictGL3已经存在了一段时间.容易添加更多; 甚至还有一个完整的软件包和一个构建管理器(称为dub),它可以自动获取和构建依赖项. (2认同)

shd*_*shd 7

嗯,这不像是你使用D你必须从头开始完全构建一切.例如,您可以使用:

  • GLFW用于输入/输出
  • Horde3D作为渲染引擎
  • OpenAL声音
  • 物理学的子弹
  • Lua用于编写脚本
  • lzo用于快速减压
  • 也许是橙色的序列化

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

祝你好运!


bio*_*ics 6

在D proramming他们是:

  • 废弃谁支持OpenGL 3和OpenGL 4

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

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

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

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


AMD*_*MDG 5

欢迎来到2014年!

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

我认为D比C++更容易阅读,也更容易学习。它包含一个 C 接口和一个 C++ 部分接口。它甚至允许内联汇编与您的变量交互。D 标准库称为 Phobos。

我强烈建议 D.D 是为了效率而设计的。Adam D. Ruppe 表示,“[C]同样快”。C 是最快的语言之一。因此,如果您想构建一款具有 C 的速度和 C++ 的高级功能的游戏,D 就处于中间位置。如果您有任何疑问,请随时加入 irc.freenode.net #d。

总而言之,D 基本上是 C++ 的安全版本。虽然该语言是多范式的,包括 OOP,但重点放在 FP 范式上,使用pure函数和不变性。所有对象都有一个init属性,因此如果您声明“int foo;”,它就会被初始化为int.init. 是的,还是有指点的。D 中的指针称为左值,值称为右值。左值总是指向右值。

欲了解更多信息,请访问 D 官方网站:http://www.dlang.org/