亚洲AV免费看深爱成人|日韩av另类一级特黄片在线|中国免费一级黄片|国产av一二三区|亚洲有码AV在线|久久亚洲国产日韩欧美|成人免费AV网站|婷婷一区综合一区|亚洲AV无码导航|高级欧美成人网站

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

c語(yǔ)言能開(kāi)發(fā)游戲嗎(為什么我選擇用 C 編寫(xiě)游戲?)

發(fā)布時(shí)間:2023-11-27 00:38:48 瀏覽量:123次

?為什么我選擇用 C 編寫(xiě)游戲?

c語(yǔ)言能開(kāi)發(fā)游戲嗎(為什么我選擇用 C 編寫(xiě)游戲?)

“古老”的C++,仍然是當(dāng)前編寫(xiě)游戲時(shí)最常用的語(yǔ)言,但是 C 為什么才是最適合的?

作者 | Jonathan Whiting

譯者 | 彎月,責(zé)編 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下為譯文:

我喜歡走不尋常路。最近我所有的個(gè)人項(xiàng)目游戲都是利用“最普通”的C語(yǔ)言編寫(xiě)的。所以,我覺(jué)得有必要解釋一下為什么我選擇用C編寫(xiě)游戲。

下面讓我們來(lái)談一談?dòng)嘘P(guān)編程語(yǔ)言的見(jiàn)解,我警告你這些內(nèi)容可能有點(diǎn)枯燥。

編程語(yǔ)言必須具備的條件

有些事情是沒(méi)有商量的余地的。首先,這種語(yǔ)言必須可靠。我可不愿花時(shí)間去處理那些不是我自己造成的錯(cuò)誤。

我的許多游戲都是用Flash編寫(xiě)的,現(xiàn)在Flash快要死了。我不想花時(shí)間將舊游戲移植到新平臺(tái),我想制作新游戲。我需要一個(gè)可以在很長(zhǎng)一段時(shí)間都保持穩(wěn)定的平臺(tái)。

同樣,我也不想將自己綁定到特定的操作系統(tǒng),而且理想的話,我希望該語(yǔ)言還可以為游戲機(jī)開(kāi)發(fā)游戲。因此,我選擇的編程語(yǔ)言必須擁有可移植性,這點(diǎn)很重要,而且擁有良好的可移植庫(kù)支持。

期待編程語(yǔ)言具備的條件

雖然不是必須條件,但我最想要的首先是簡(jiǎn)單性。我感覺(jué)查找語(yǔ)言功能和稀奇古怪的“聰明” API極其令人厭煩。我希望我可以記住這種理想的編程語(yǔ)言,而且再也不必查找任何東西。

處理Bug會(huì)消耗大量腦細(xì)胞。我希望產(chǎn)生的bug越少越好,所以我希望這種語(yǔ)言能嚴(yán)格檢查拼寫(xiě),強(qiáng)烈的警告消息和靜態(tài)代碼分析。我希望很輕松就能發(fā)現(xiàn)bug,所以我想要良好的調(diào)試器和動(dòng)態(tài)分析。

我對(duì)實(shí)現(xiàn)高清并不感興趣,但我卻十分在意性能。節(jié)省下更多的CPU時(shí)鐘周期,意味著你有更多的余地去嘗試別的東西。如果你不追求高分辨率,那么探索現(xiàn)代功能強(qiáng)大的計(jì)算機(jī)的潛力會(huì)非常有趣。

此外,我更加關(guān)心編譯器的速度。我不是禪宗大師,對(duì)我來(lái)說(shuō)等待10秒鐘以上就是浪費(fèi)時(shí)間,而且更重要的是,這會(huì)打亂我的節(jié)奏,我會(huì)情不自禁打開(kāi)Twitter,一晃眼5分鐘就過(guò)去了。

我并不熱衷于面向?qū)ο?。我一生的大部分時(shí)間都在處理類和對(duì)象,但是花的時(shí)間越多,就越不明白為什么要如此嚴(yán)格地結(jié)合代碼和數(shù)據(jù)。我想單獨(dú)處理數(shù)據(jù),然后再編寫(xiě)最符合特定情況的代碼。

其他替代語(yǔ)言

C++仍然是當(dāng)前編寫(xiě)游戲時(shí)最常用的語(yǔ)言,這并非沒(méi)有道理。幾乎我所有的簽約工作中都使用了C++。但我非常不喜歡C++。

c語(yǔ)言能開(kāi)發(fā)游戲嗎(為什么我選擇用 C 編寫(xiě)游戲?)

C++可以滿足必備的條件,但是嚴(yán)重不符合我所期望的一些條件。C++極其復(fù)雜。盡管C++有很多優(yōu)秀的工具,但很容易制造出隱匿的bug。與C相比,C++的編譯速度也較慢。雖然C++的性能很好,而且還提供了C所沒(méi)有的功能,但這些都不是我想要的功能,而且因此付出的代價(jià)是高度的復(fù)雜性。

C#和Java也有類似的問(wèn)題。這兩種語(yǔ)言都非常冗長(zhǎng)且復(fù)雜,我想尋找一種簡(jiǎn)潔明了的編程語(yǔ)言。C#和Java都是面向?qū)ο蟮娘L(fēng)格,而我卻非常不喜歡面向?qū)ο?。與大多數(shù)高級(jí)語(yǔ)言一樣,這兩種語(yǔ)言都傾向于隱藏復(fù)雜性,但實(shí)際上并不能減輕復(fù)雜性給我?guī)?lái)的困擾。

我很喜歡Go,這種語(yǔ)言的很多方面都繼承了C,而且還考慮到了自發(fā)布以來(lái)多年積攢的經(jīng)驗(yàn)。我喜歡使用Go,但是Go也有一個(gè)重大問(wèn)題。對(duì)編寫(xiě)游戲來(lái)說(shuō),“暫停一切”的垃圾回收是一個(gè)巨大的痛苦, “暫停一切”是我無(wú)法忍受的。此外,Go對(duì)游戲的庫(kù)支持非常差,盡管你可以通過(guò)包裝C庫(kù)來(lái)解決這個(gè)問(wèn)題,但是這樣做會(huì)增加很多工作量。而且Go的定位讓我對(duì)其長(zhǎng)期的發(fā)展充滿了擔(dān)憂。

Go語(yǔ)言用來(lái)制作Web的東西也不錯(cuò),但是感覺(jué)Go語(yǔ)言發(fā)展得太快。我真怕它像flash那樣死掉了。此外,我真的不喜歡javascript,它太過(guò)于寬松,看到人們利用javascript編寫(xiě)大量軟件,我由衷地感到驚訝。我自己沒(méi)有興趣嘗試。

感覺(jué)Haxe比其他編程語(yǔ)言更有前途。如果再做Web開(kāi)發(fā)的話,我可能會(huì)深入研究一番。這種語(yǔ)言也有一些很好的庫(kù)支持。但我擔(dān)心Haxe過(guò)于年輕,還能持續(xù)發(fā)展多久?我不想對(duì)此妄加發(fā)表評(píng)論,畢竟我只是淺嘗輒止。

看到這里有人可能會(huì)說(shuō),這么挑剔干脆自己寫(xiě)一門編程語(yǔ)言吧。我很佩服創(chuàng)造出新編程語(yǔ)言的人,我自己常常也有這種想法。但我感覺(jué)放棄現(xiàn)有的庫(kù)支持,并為將來(lái)的兼容性承擔(dān)全部責(zé)任,這個(gè)擔(dān)子有點(diǎn)過(guò)重了。而且這也是非常困難的,所以還是回歸現(xiàn)實(shí),我寧愿做游戲,也不愿創(chuàng)建新的編程語(yǔ)言。

為什么C仍然是我的最佳選擇?

C很危險(xiǎn),但是很可靠。C就像一把鋒利的刀,雖然有可能會(huì)劃破手指,但也可以切菜,而且C非常簡(jiǎn)單,學(xué)會(huì)謹(jǐn)慎使用也非難事。

C的速度非???,我想不出還有什么比C的編譯更快的編程語(yǔ)言。

C幾乎可以在所有環(huán)境中運(yùn)行,而且通常都比較容易。很難想象無(wú)法運(yùn)行C的情況。

C擁有強(qiáng)大且持續(xù)的庫(kù)和工具。

雖然說(shuō)這話的時(shí)候,我略感悲傷,但C仍然是我的首選語(yǔ)言。

我絕不是想鼓動(dòng)每個(gè)人都來(lái)使用C。我在本文中所做的推薦針對(duì)非常具體且不尋常的情況。我已經(jīng)編寫(xiě)了大量非?!捌胀ā钡腃代碼,而且我感覺(jué)使用C語(yǔ)言的時(shí)候最舒適。

以上,感謝閱讀。

原文:https://jonathanwhiting.com/writing/blog/games_in_c/

本文為 CSDN 翻譯,轉(zhuǎn)載請(qǐng)注明來(lái)源出處。

【END】

c語(yǔ)言能開(kāi)發(fā)游戲嗎(為什么我選擇用 C 編寫(xiě)游戲?)

熱門課程推薦

熱門資訊

請(qǐng)綁定手機(jī)號(hào)

x

同學(xué)您好!

您已成功報(bào)名0元試學(xué)活動(dòng),老師會(huì)在第一時(shí)間與您取得聯(lián)系,請(qǐng)保持電話暢通!
確定