發(fā)布時間:2023-11-29 16:05:16 瀏覽量:109次
我最近所有個人項目游戲都是用“純” C語言開發(fā)。解釋為什么要這樣做可能很有趣。
預警:一大堆枯燥的編程語言觀點將要出現(xiàn)。
我需要什么樣一種編程語言
有些條件是不可協(xié)商的。
首先,語言必須可靠。我無法接受花時間去處理那些不是我自己原因造成的 bug。
我的許多游戲都是為 Flash 開發(fā)的,現(xiàn)在 Flash 快要死了。我不想花時間將舊游戲移植到新平臺,我想制作新游戲。我需要一個可以信任一段時間的平臺。
同樣,我想避免將自己綁定到特定的操作系統(tǒng),并且理想情況下,我希望可以具備為控制臺開發(fā)的選擇。因此,重要的是編程語言是可移植的,并且具有良好的可移植庫支持。
我理想中的編程語言
在我想要的但不是必需的列表上,最重要的是簡單性。我發(fā)現(xiàn)查找語言特性,以及各種古怪的“聰明” API令人厭煩。我希望熟練一種理想的語言,然后再不必查找任何東西。
處理 bug 是巨大的精力消耗。我希望錯誤能盡可能少的產(chǎn)生,所以我需要嚴格的類型檢查,強烈的警告消息和靜態(tài)代碼分析。我希望 bug 更容易被發(fā)現(xiàn),所以我想要好的調(diào)試器和動態(tài)分析。
我對高清現(xiàn)實并不感興趣,但我仍然對性能有所關注。擁有更多可用周期可以拓寬工作范圍。如果您不信守忠誠,探索現(xiàn)代功能強大的計算機可能帶來的影響尤其有趣。
進一步,我更關心編譯器的速度。我不是禪宗大師,等待 10 秒鐘以上會是一種浪費。而且更重要的是,等待會打斷我的工作流程,刷刷 Twitter,突然發(fā)現(xiàn) 5 分鐘或更多時間就沒有了。
我不是一個虔誠的 OOP 使用者,盡管我大部分職業(yè)生涯經(jīng)歷都在處理類和對象,但是花費的時間越多,對為什么要如此嚴格地結合代碼和數(shù)據(jù)的理解就越少。我需要將數(shù)據(jù)作為數(shù)據(jù)進行處理,并編寫最適合特定情況的代碼。
替代方案
C++ 仍然是開發(fā)游戲的最常用語言,并非沒有道理。我仍然用它來完成幾乎所有合同項目,但我非常不喜歡它。
C++ 滿足了我的需要,但嚴重挫敗于我真正需求,它極其復雜。盡管有不錯的工具,但仍然容易創(chuàng)建各種隱匿的錯誤。與 C 語言相比,它的編譯速度也較慢。它的性能還不錯,并且提供了 C 語言所沒有的功能。但那些并不是我真的想要的功能,而且成本很高。
C# 和 Java 也有類似的問題。它們是冗長而復雜的野獸,但我需要一種簡潔簡單的替代。它們都為使程序員發(fā)展成為我強烈反對的 OOP 風格做了很多工作。按照大多數(shù)高級語言的設計,它們傾向于隱藏復雜性,而實際上并不能阻止它帶來的困擾。
我非常喜歡 Go 語言,從很多角度來說,它是 C 語言的重生。我很想用它,但是有很多障礙阻礙了我。停止世界的垃圾收集對于游戲來說是一個很大的痛苦,停頓是不能接受的事情。游戲的庫支持也非常差,盡管包裝 C 語言庫也不麻煩,但是這樣做還是會增加很多工作量。
為 Web 開發(fā)添加功能會很不錯,但是一個快速變化的開發(fā)環(huán)境還是比較可怕。尤其是 Flash 的死亡讓我覺得恐懼。我真的不喜歡 JavaScript,它是如此寬松,我對大家竟然利用它開發(fā)了大量代碼感到驚奇。但我沒有興趣嘗試。
Haxe 看起來比大多數(shù)競爭者更有前途。如果我再次做 Web 開發(fā)我可能會更多深入研究。它有一些很好的庫支持。我有點擔心它的相對年輕,它會持續(xù)嗎?目前我沒有太多要說的,我只是涉足表面。
有些人會說不如自己造一個輪子,編寫自己的語言,自己真正想用的語言。我很佩服這個想法,有時我也想這樣做。但放棄所有現(xiàn)有的庫支持,并為將來的兼容性承擔全部責任實在太挑戰(zhàn)了。當歸結為現(xiàn)實時,我寧愿做游戲,也不愿去實現(xiàn)一門編程語言。
為什么 C 語言仍然是我的最佳選擇
C 語言很危險,但是很可靠。一把非常鋒利的刀既可以割傷手指,也可以用來切菜,但如此簡單,要學會謹慎使用它并不難。
它的速度很快,在編譯時我想不出什么更快的方法。
它可以在幾乎任何東西上運行,通常這比較容易。很難想象會出現(xiàn)它應付不了的情況。
庫和工具支持是強大且持續(xù)的。
我有些悲傷地說,但這仍然是我的語言。
我絕對不是要說“您也應該使用C語言”。我非常感激這里的偏好是非常具體且不尋常的。我已經(jīng)比大多數(shù)人編寫了更多的“純” C 代碼,這當然是我感到舒適的一部分。
是的,就是這樣 :-)
原文地址:
https://jonathanwhiting.com/writing/blog/games_in_c/
參考閱讀:
一種靈活的API設計模式:在Spring Boot中支持GraphQL
支付核心系統(tǒng)設計:Airbnb的分布式事務方案簡介
算力提升117%,資源使用下降50%,打開集群優(yōu)化正確姿勢
Golang實現(xiàn)單機百萬長連接服務 - 美圖的三年優(yōu)化經(jīng)驗
本文作者 Jonathan Whiting ,由 Tim 翻譯,轉載請注明出處,技術原創(chuàng)及架構實踐文章,歡迎通過公眾號菜單「聯(lián)系我們」進行投稿。
高可用架構
改變互聯(lián)網(wǎng)的構建方式
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設計領域和數(shù)字藝術教育的重要性,歡迎點擊咨詢報名。
2. 手機游戲如何開發(fā)(如何制作傳奇手游,都需要準備些什么?)
?如何制作傳奇手游,都需要準備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費、一鍵制作炫酷特效,適合新手小白??靵碓囋?!
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇。《天命奇御》具有多線劇情多結局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟體系揭秘,不同玩家角色的經(jīng)濟活動
Bigtime加密游戲經(jīng)濟模型分析,探討游戲經(jīng)濟特點,幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動漫建模全過程,不是一般人能學的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準備設計圖片,我從雕刻進入。這一次,它將是一種純粹關注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設置和設計技巧,讓你輕松掌握!
10. Unity3D入門:手把手帶你開發(fā)一款坦克大戰(zhàn)的游戲
Unity工程創(chuàng)建完成后如圖所示: 接下來應該導入此項目所需的Unity Package文件,要用到的Unity package文件大家可以去Unity3D的官方網(wǎng)站下載(地址:ht...
同學您好!