Hacker News 中文摘要

RSS订阅

我用C语言写游戏(没错,就是C) -- I write games in C (yes, C)

文章摘要

作者Jonathan Whiting解释了他选择用C语言开发游戏的原因:C语言可靠、稳定,不会因平台更迭而频繁迁移;具有高度可移植性,支持跨平台和主机开发;语言简单易记,无需频繁查阅文档,能专注于创作新游戏而非维护旧代码。

文章总结

为什么我依然选择用C语言开发游戏

我是一个特立独行的开发者。最近所有的个人游戏项目,我都坚持使用纯粹的C语言进行开发。这种做法在当今业界实属罕见,因此我想分享一下自己的思考。

核心诉求

硬性要求: 1. 可靠性:不能把时间浪费在解决语言本身的缺陷上 2. 持久性:经历过Flash消亡的教训后,我需要确保开发平台具有长期生命力 3. 跨平台性:必须支持多操作系统,最好还能兼容游戏主机开发

理想特性: - 简洁性:语言特性应该简单到可以完全记住 - 强类型系统:配合静态代码分析减少bug产生 - 高效调试:完善的调试工具和动态分析能力 - 编译速度:超过10秒的编译等待会严重破坏创作状态 - 性能表现:不追求极致画质,但需要保留创作空间 - 非强制OOP:更倾向于灵活处理数据和代码的关系

其他语言的局限

C++: 虽然仍是游戏开发主流,但过度复杂的设计容易产生隐蔽bug,编译速度也较慢。其提供的许多高级特性反而带来了不必要的复杂度。

C#/Java: 强制OOP范式与我的理念相悖,冗长的语法和隐藏的复杂性反而可能带来更多问题。

Go语言: 虽然设计理念先进,但垃圾回收机制不适合游戏开发,游戏库生态薄弱,长期前景也存在不确定性。

Web技术: JavaScript过于灵活导致大型项目难以维护,快速迭代的技术栈也令人不安。Haxe虽然前景较好,但生态成熟度仍需观察。

自制语言: 虽然极具吸引力,但意味着放弃现有生态支持,且我更愿意专注于游戏开发本身。

C语言的优势

  1. 锋利而可靠:虽然需要谨慎使用,但掌握后非常稳定
  2. 极速编译:目前最快的编译体验之一
  3. 无处不在:几乎可以运行在任何平台上
  4. 强大生态:持续的库支持和工具链更新

需要强调的是,这只是我的个人选择。考虑到我已经积累了丰富的C语言开发经验,这种选择可能并不适合所有人。但就目前而言,C语言依然是我的最佳拍档。

返回主站

评论总结

以下是评论内容的总结:

支持使用C语言的观点

  1. 简洁性与控制力

    • C语言简单直接,适合需要底层控制的场景(评论1, 21)。
    • "C is a constructor, and as a constructor it places few limits on what you can do"(评论21)。
    • "I like the fact that C gives you so little... you have to think about your problem at a very fundamental level"(评论23)。
  2. 历史与实用性

    • 许多经典游戏(如id Software的作品)是用C开发的(评论9, 15)。
    • "Literally thousands of games have been written in C"(评论9)。

反对使用C语言的观点

  1. 协作与开发效率

    • 团队协作时,C代码库可能带来痛苦(评论1)。
    • "Working in a group on a C codebase tends to introduce pain"(评论1)。
    • UI开发在C中尤为繁琐(评论3)。
  2. 现代替代方案

    • 现代语言(如Rust、Zig)在安全性和工具链上更优(评论2, 18)。
    • "Zig is actually simpler than C while being more precise"(评论18)。

关于C++的争议

  1. 复杂性争议

    • C++的复杂性是自找的,可以通过限制特性使用来避免(评论10, 16)。
    • "C++ doesn’t take longer to compile if you don’t abuse templates"(评论10)。
    • 但C++社区对最佳实践的分歧令人困扰(评论23)。
  2. 与C的对比

    • C++是C的超集,但部分开发者认为其特性冗余(评论16)。
    • "C++ is, practically speaking, a superset of C... All self-inflicted problems"(评论16)。

其他语言推荐

  • Odin:结合C的简洁性和Go的现代性(评论2, 5)。
  • Zig:简化C的同时提供更精确的类型系统(评论18)。
  • Rust:适合需要内存安全和并发的场景(评论2)。

关键引用保留

  • 支持C
    • "C is my language and served me well for decades"(评论1)。
    • "C is a constructor... places few limits on what you can do"(评论21)。
  • 反对C
    • "Why would you brag about it?"(评论16)。
    • "C is a systems programming language, not an application programming language"(评论22)。
  • C++争议
    • "C++ is a rotating pell post full of sharp knives"(评论19)。
    • "People say 'I use C and not C++' to say something about themselves"(评论16)。