發(fā)布時間:2023-11-27 00:38:48 瀏覽量:120次
“古老”的C++,仍然是當(dāng)前編寫游戲時最常用的語言,但是 C 為什么才是最適合的?
作者 | Jonathan Whiting
譯者 | 彎月,責(zé)編 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下為譯文:
我喜歡走不尋常路。最近我所有的個人項目游戲都是利用“最普通”的C語言編寫的。所以,我覺得有必要解釋一下為什么我選擇用C編寫游戲。
下面讓我們來談一談有關(guān)編程語言的見解,我警告你這些內(nèi)容可能有點枯燥。
編程語言必須具備的條件
有些事情是沒有商量的余地的。首先,這種語言必須可靠。我可不愿花時間去處理那些不是我自己造成的錯誤。
我的許多游戲都是用Flash編寫的,現(xiàn)在Flash快要死了。我不想花時間將舊游戲移植到新平臺,我想制作新游戲。我需要一個可以在很長一段時間都保持穩(wěn)定的平臺。
同樣,我也不想將自己綁定到特定的操作系統(tǒng),而且理想的話,我希望該語言還可以為游戲機(jī)開發(fā)游戲。因此,我選擇的編程語言必須擁有可移植性,這點很重要,而且擁有良好的可移植庫支持。
期待編程語言具備的條件
雖然不是必須條件,但我最想要的首先是簡單性。我感覺查找語言功能和稀奇古怪的“聰明” API極其令人厭煩。我希望我可以記住這種理想的編程語言,而且再也不必查找任何東西。
處理Bug會消耗大量腦細(xì)胞。我希望產(chǎn)生的bug越少越好,所以我希望這種語言能嚴(yán)格檢查拼寫,強(qiáng)烈的警告消息和靜態(tài)代碼分析。我希望很輕松就能發(fā)現(xiàn)bug,所以我想要良好的調(diào)試器和動態(tài)分析。
我對實現(xiàn)高清并不感興趣,但我卻十分在意性能。節(jié)省下更多的CPU時鐘周期,意味著你有更多的余地去嘗試別的東西。如果你不追求高分辨率,那么探索現(xiàn)代功能強(qiáng)大的計算機(jī)的潛力會非常有趣。
此外,我更加關(guān)心編譯器的速度。我不是禪宗大師,對我來說等待10秒鐘以上就是浪費時間,而且更重要的是,這會打亂我的節(jié)奏,我會情不自禁打開Twitter,一晃眼5分鐘就過去了。
我并不熱衷于面向?qū)ο?。我一生的大部分時間都在處理類和對象,但是花的時間越多,就越不明白為什么要如此嚴(yán)格地結(jié)合代碼和數(shù)據(jù)。我想單獨處理數(shù)據(jù),然后再編寫最符合特定情況的代碼。
其他替代語言
C++仍然是當(dāng)前編寫游戲時最常用的語言,這并非沒有道理。幾乎我所有的簽約工作中都使用了C++。但我非常不喜歡C++。
C++可以滿足必備的條件,但是嚴(yán)重不符合我所期望的一些條件。C++極其復(fù)雜。盡管C++有很多優(yōu)秀的工具,但很容易制造出隱匿的bug。與C相比,C++的編譯速度也較慢。雖然C++的性能很好,而且還提供了C所沒有的功能,但這些都不是我想要的功能,而且因此付出的代價是高度的復(fù)雜性。
C#和Java也有類似的問題。這兩種語言都非常冗長且復(fù)雜,我想尋找一種簡潔明了的編程語言。C#和Java都是面向?qū)ο蟮娘L(fēng)格,而我卻非常不喜歡面向?qū)ο?。與大多數(shù)高級語言一樣,這兩種語言都傾向于隱藏復(fù)雜性,但實際上并不能減輕復(fù)雜性給我?guī)淼睦_。
我很喜歡Go,這種語言的很多方面都繼承了C,而且還考慮到了自發(fā)布以來多年積攢的經(jīng)驗。我喜歡使用Go,但是Go也有一個重大問題。對編寫游戲來說,“暫停一切”的垃圾回收是一個巨大的痛苦, “暫停一切”是我無法忍受的。此外,Go對游戲的庫支持非常差,盡管你可以通過包裝C庫來解決這個問題,但是這樣做會增加很多工作量。而且Go的定位讓我對其長期的發(fā)展充滿了擔(dān)憂。
Go語言用來制作Web的東西也不錯,但是感覺Go語言發(fā)展得太快。我真怕它像flash那樣死掉了。此外,我真的不喜歡javascript,它太過于寬松,看到人們利用javascript編寫大量軟件,我由衷地感到驚訝。我自己沒有興趣嘗試。
感覺Haxe比其他編程語言更有前途。如果再做Web開發(fā)的話,我可能會深入研究一番。這種語言也有一些很好的庫支持。但我擔(dān)心Haxe過于年輕,還能持續(xù)發(fā)展多久?我不想對此妄加發(fā)表評論,畢竟我只是淺嘗輒止。
看到這里有人可能會說,這么挑剔干脆自己寫一門編程語言吧。我很佩服創(chuàng)造出新編程語言的人,我自己常常也有這種想法。但我感覺放棄現(xiàn)有的庫支持,并為將來的兼容性承擔(dān)全部責(zé)任,這個擔(dān)子有點過重了。而且這也是非常困難的,所以還是回歸現(xiàn)實,我寧愿做游戲,也不愿創(chuàng)建新的編程語言。
為什么C仍然是我的最佳選擇?
C很危險,但是很可靠。C就像一把鋒利的刀,雖然有可能會劃破手指,但也可以切菜,而且C非常簡單,學(xué)會謹(jǐn)慎使用也非難事。
C的速度非???,我想不出還有什么比C的編譯更快的編程語言。
C幾乎可以在所有環(huán)境中運行,而且通常都比較容易。很難想象無法運行C的情況。
C擁有強(qiáng)大且持續(xù)的庫和工具。
雖然說這話的時候,我略感悲傷,但C仍然是我的首選語言。
我絕不是想鼓動每個人都來使用C。我在本文中所做的推薦針對非常具體且不尋常的情況。我已經(jīng)編寫了大量非常“普通”的C代碼,而且我感覺使用C語言的時候最舒適。
以上,感謝閱讀。
原文:https://jonathanwhiting.com/writing/blog/games_in_c/
本文為 CSDN 翻譯,轉(zhuǎn)載請注明來源出處。
【END】
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點擊咨詢報名。
2. 手機(jī)游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進(jìn)步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費、一鍵制作炫酷特效,適合新手小白。快來試試!
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點,幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動漫建模全過程,不是一般人能學(xué)的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
9. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅固
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計技巧,讓你輕松掌握!
10. 虛幻引擎5節(jié)省存儲空間用這招!緩存的清理與設(shè)置
眾所周知,虛幻引擎5(下面簡稱UE5)特別占用存儲空間,僅一個版本安裝好的文件就有60G,這還不包括我們在使用時保存的工程文件和隨之產(chǎn)生的緩存文件。而...
最新文章
同學(xué)您好!