為什么我要用C寫游戲

jopen 8年前發布 | 8K 次閱讀

我就是這樣一個與眾不同的老頑固。最近所有由我單獨完成的游戲項目完完全全都是用C寫的。肯定沒人這樣干過,所以我覺得這值得我解釋下為什么我要這樣做。

枯燥的編程語言觀點要來啦!嗯,我已經警告過你們了。

為什么我要用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)
翻譯作者:碼農網 – 葉露

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!