我就是这样一个与众不同的老顽固。最近所有由我单独完成的游戏项目完完全全都是用C写的。肯定没人这样干过,所以我觉得这值得我解释下为什么我要这样做。
枯燥的编程语言观点要来啦!嗯,我已经警告过你们了。
从一种语言中我们所需要的
有些事是毋庸置疑的。首先,它必须是可信任的。我不能花费我的时间去解决那些不是我导致的bug。以前许多游戏都是用flash来编写的,然而现在 flash正在面向灭亡。我也不想花费不必要的时间将老游戏移植到新的平台,我想要的是制作新的游戏。因此我需要一个在一段时间内都能自信使用的平台。同 样,我想要避免自己被一个特定的操作系统捆绑。理想状况下我喜欢我可以有发展控制台的选项。所以选择一种编程语言最重要的是它是可移植的,并且有可移植式 库的支持。
从一种语言中我们所想的
我所追求的最重要的,但不是必要的一件事就是其简单性。我发现查找语言的特性和它所具备的聪明古怪的API是一件及其累人的事!理想的语言是-这些 东西都可以被记住,而无需去查找它们。另外,处理那些bug绝对会使你的创造性流失。所以我想要一个强类型的、强大的错误提示以及静态代码分析来减少 bug的出现。我还想要一个好的debugger和动态分析来使我更容易发现bug。我不关心性能是否强大,但至少可以用。如果你不追求逼真的话它可用现 代、功能强大的电脑尽情探索其可能性。
我甚至会关心编译器的速度问题。我不是可以非常专注的禅师,等待超过十秒对于我来说是一种浪费,但更重要的是这会打破我思考的节奏。
我不追求面向对象(OOP)。我已经花了太多时间在管理类和对象上面,但我发现花了更多的时间,却不太明白为什么要把代码和数据严格的结合起来。我想要处理数据并且编写适合特定情况的代码。
备选方案
C++ 仍然是编写游戏最普遍的语言,没有原因。我用它写了很多项目,但其实我非常不喜欢它。
C++ 涵盖了我所需要的,但却没有满足我想要的。它实在太复杂了!尽管一些工具相当好,但它还是十分容易出现bug。和C相比C++编译速度很慢。但即使它具备高性能并且有C所没有的一些特性,但我并不在意这些有的没的。
C# 和 Java 有些通病。它们都是冗长复杂的怪兽,我所需要的是简单简洁的东西。 它们都迫使程序员去思考面向对象编程的风格,这通通都是我反对的。作为一个高级语言,它们应该有隐藏其复杂性的趋势。
相比我更喜欢Go。在许多方面它是C的再发展,我会选择使用Go,但是它也有个很大问题阻止我使用它。使用stop-the-world的方法来实 现垃圾回收算法对于游戏是件再烦人不过的事情。游戏库的支持也是有点弱,虽然你可以使用C库,但这会增加更多的工作量。这足够让我怀疑它长期的实用性。虽 然它很好的服务于web,同时这具备了一个可怕的快速移动环境的性质。这可有点flash灭亡的意思。然后我想说我真的真的不喜欢javascript, 它是如此的松散模糊,我特别讶异居然有人能够在软件中使用它写上一大块。我简直没有一丁点兴趣尝试它。
Haxe 感觉上比其他语言更有前景。如果我还做些和web有关的东西的话我会选择它。它有很好的库支持。我就有点担心它不太成熟,能不能长久的问题。好了,我也没什么要说的了。
Jonathan Blow正在编写他自己的语言,一种他自己想用的语言。我特别羡慕,有时候我也会考虑做这件事。但想想,需要丢弃所有现有的库支持和承担未来兼容性的责任以至于太对需考虑。并且这实在太困难了,当本质问题于此,我宁愿去做游戏好了。
为什么C是我的***选择
C既危险又可靠。 就像一把锋利的刀,切手指和切蔬菜一样,但学会小心的使用它也不会太难。
它编译的时候特别快,我无法想像有什么比它更快。
它还可以在任何地方运行,通常较为容易。我都想不到它什么时候不能像这样工作。
库和工具支持又强大又不间断地更新。
我要很悲壮的告诉你们,这就是我的语言。
我绝对不会说“嘿,你也应该使C”我完全赞每个人有不同的个人偏好和特别的习惯。只想说相比用其他语言来说我已经编写了很多C 代码,并且这令我很舒服。哦好吧,就这样 :-)
译文链接:http://www.codeceo.com/article/why-i-write-games-in-c.html
英文原文:Why I Write Games in C (yes, C)