激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

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

c語(yǔ)言 游戲開(kāi)發(fā)(都9012年了,為何我還堅(jiān)持用C語(yǔ)言開(kāi)發(fā)游戲)

發(fā)布時(shí)間:2023-11-27 14:49:07 瀏覽量:150次

?都9012年了,為何我還堅(jiān)持用C語(yǔ)言開(kāi)發(fā)游戲

c語(yǔ)言 游戲開(kāi)發(fā)(都9012年了,為何我還堅(jiān)持用C語(yǔ)言開(kāi)發(fā)游戲)

我最近所有個(gè)人項(xiàng)目游戲都是用“純” C語(yǔ)言開(kāi)發(fā)。解釋為什么要這樣做可能很有趣。

預(yù)警:一大堆枯燥的編程語(yǔ)言觀點(diǎn)將要出現(xiàn)。

我需要什么樣一種編程語(yǔ)言

有些條件是不可協(xié)商的。

首先,語(yǔ)言必須可靠。我無(wú)法接受花時(shí)間去處理那些不是我自己原因造成的 bug。

我的許多游戲都是為 Flash 開(kāi)發(fā)的,現(xiàn)在 Flash 快要死了。我不想花時(shí)間將舊游戲移植到新平臺(tái),我想制作新游戲。我需要一個(gè)可以信任一段時(shí)間的平臺(tái)。

同樣,我想避免將自己綁定到特定的操作系統(tǒng),并且理想情況下,我希望可以具備為控制臺(tái)開(kāi)發(fā)的選擇。因此,重要的是編程語(yǔ)言是可移植的,并且具有良好的可移植庫(kù)支持。

我理想中的編程語(yǔ)言

在我想要的但不是必需的列表上,最重要的是簡(jiǎn)單性。我發(fā)現(xiàn)查找語(yǔ)言特性,以及各種古怪的“聰明” API令人厭煩。我希望熟練一種理想的語(yǔ)言,然后再不必查找任何東西。

處理 bug 是巨大的精力消耗。我希望錯(cuò)誤能盡可能少的產(chǎn)生,所以我需要嚴(yán)格的類型檢查,強(qiáng)烈的警告消息和靜態(tài)代碼分析。我希望 bug 更容易被發(fā)現(xiàn),所以我想要好的調(diào)試器和動(dòng)態(tài)分析。

我對(duì)高清現(xiàn)實(shí)并不感興趣,但我仍然對(duì)性能有所關(guān)注。擁有更多可用周期可以拓寬工作范圍。如果您不信守忠誠(chéng),探索現(xiàn)代功能強(qiáng)大的計(jì)算機(jī)可能帶來(lái)的影響尤其有趣。

進(jìn)一步,我更關(guān)心編譯器的速度。我不是禪宗大師,等待 10 秒鐘以上會(huì)是一種浪費(fèi)。而且更重要的是,等待會(huì)打斷我的工作流程,刷刷 Twitter,突然發(fā)現(xiàn) 5 分鐘或更多時(shí)間就沒(méi)有了。

我不是一個(gè)虔誠(chéng)的 OOP 使用者,盡管我大部分職業(yè)生涯經(jīng)歷都在處理類和對(duì)象,但是花費(fèi)的時(shí)間越多,對(duì)為什么要如此嚴(yán)格地結(jié)合代碼和數(shù)據(jù)的理解就越少。我需要將數(shù)據(jù)作為數(shù)據(jù)進(jìn)行處理,并編寫(xiě)最適合特定情況的代碼。

替代方案

C++ 仍然是開(kāi)發(fā)游戲的最常用語(yǔ)言,并非沒(méi)有道理。我仍然用它來(lái)完成幾乎所有合同項(xiàng)目,但我非常不喜歡它。

C++ 滿足了我的需要,但嚴(yán)重挫敗于我真正需求,它極其復(fù)雜。盡管有不錯(cuò)的工具,但仍然容易創(chuàng)建各種隱匿的錯(cuò)誤。與 C 語(yǔ)言相比,它的編譯速度也較慢。它的性能還不錯(cuò),并且提供了 C 語(yǔ)言所沒(méi)有的功能。但那些并不是我真的想要的功能,而且成本很高。

C# 和 Java 也有類似的問(wèn)題。它們是冗長(zhǎng)而復(fù)雜的野獸,但我需要一種簡(jiǎn)潔簡(jiǎn)單的替代。它們都為使程序員發(fā)展成為我強(qiáng)烈反對(duì)的 OOP 風(fēng)格做了很多工作。按照大多數(shù)高級(jí)語(yǔ)言的設(shè)計(jì),它們傾向于隱藏復(fù)雜性,而實(shí)際上并不能阻止它帶來(lái)的困擾。

我非常喜歡 Go 語(yǔ)言,從很多角度來(lái)說(shuō),它是 C 語(yǔ)言的重生。我很想用它,但是有很多障礙阻礙了我。停止世界的垃圾收集對(duì)于游戲來(lái)說(shuō)是一個(gè)很大的痛苦,停頓是不能接受的事情。游戲的庫(kù)支持也非常差,盡管包裝 C 語(yǔ)言庫(kù)也不麻煩,但是這樣做還是會(huì)增加很多工作量。

為 Web 開(kāi)發(fā)添加功能會(huì)很不錯(cuò),但是一個(gè)快速變化的開(kāi)發(fā)環(huán)境還是比較可怕。尤其是 Flash 的死亡讓我覺(jué)得恐懼。我真的不喜歡 JavaScript,它是如此寬松,我對(duì)大家竟然利用它開(kāi)發(fā)了大量代碼感到驚奇。但我沒(méi)有興趣嘗試。

c語(yǔ)言 游戲開(kāi)發(fā)(都9012年了,為何我還堅(jiān)持用C語(yǔ)言開(kāi)發(fā)游戲)

Haxe 看起來(lái)比大多數(shù)競(jìng)爭(zhēng)者更有前途。如果我再次做 Web 開(kāi)發(fā)我可能會(huì)更多深入研究。它有一些很好的庫(kù)支持。我有點(diǎn)擔(dān)心它的相對(duì)年輕,它會(huì)持續(xù)嗎?目前我沒(méi)有太多要說(shuō)的,我只是涉足表面。

有些人會(huì)說(shuō)不如自己造一個(gè)輪子,編寫(xiě)自己的語(yǔ)言,自己真正想用的語(yǔ)言。我很佩服這個(gè)想法,有時(shí)我也想這樣做。但放棄所有現(xiàn)有的庫(kù)支持,并為將來(lái)的兼容性承擔(dān)全部責(zé)任實(shí)在太挑戰(zhàn)了。當(dāng)歸結(jié)為現(xiàn)實(shí)時(shí),我寧愿做游戲,也不愿去實(shí)現(xiàn)一門(mén)編程語(yǔ)言。

為什么 C 語(yǔ)言仍然是我的最佳選擇

C 語(yǔ)言很危險(xiǎn),但是很可靠。一把非常鋒利的刀既可以割傷手指,也可以用來(lái)切菜,但如此簡(jiǎn)單,要學(xué)會(huì)謹(jǐn)慎使用它并不難。

它的速度很快,在編譯時(shí)我想不出什么更快的方法。

它可以在幾乎任何東西上運(yùn)行,通常這比較容易。很難想象會(huì)出現(xiàn)它應(yīng)付不了的情況。

庫(kù)和工具支持是強(qiáng)大且持續(xù)的。

我有些悲傷地說(shuō),但這仍然是我的語(yǔ)言。

我絕對(duì)不是要說(shuō)“您也應(yīng)該使用C語(yǔ)言”。我非常感激這里的偏好是非常具體且不尋常的。我已經(jīng)比大多數(shù)人編寫(xiě)了更多的“純” C 代碼,這當(dāng)然是我感到舒適的一部分。

是的,就是這樣 :-)

原文地址:

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

參考閱讀:

  • 一種靈活的API設(shè)計(jì)模式:在Spring Boot中支持GraphQL

  • 支付核心系統(tǒng)設(shè)計(jì):Airbnb的分布式事務(wù)方案簡(jiǎn)介

  • 算力提升117%,資源使用下降50%,打開(kāi)集群優(yōu)化正確姿勢(shì)

  • Golang實(shí)現(xiàn)單機(jī)百萬(wàn)長(zhǎng)連接服務(wù) - 美圖的三年優(yōu)化經(jīng)驗(yàn)

本文作者 Jonathan Whiting ,由 Tim 翻譯,轉(zhuǎn)載請(qǐng)注明出處,技術(shù)原創(chuàng)及架構(gòu)實(shí)踐文章,歡迎通過(guò)公眾號(hào)菜單「聯(lián)系我們」進(jìn)行投稿。

高可用架構(gòu)

改變互聯(lián)網(wǎng)的構(gòu)建方式

c語(yǔ)言 游戲開(kāi)發(fā)(都9012年了,為何我還堅(jiān)持用C語(yǔ)言開(kāi)發(fā)游戲)

熱門(mén)課程推薦

熱門(mén)資訊

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

x

同學(xué)您好!

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