只用 C 語言可以開發出有意思的遊戲嗎?

只用 C 語言,不用 C++。

歷史上純 C 開發的遊戲名作有沒有?


可以。

許多上世紀90年代的 PC 遊戲是用 C 語言開發的,例如 https://github.com/id-Software 中的 《Wolfenstein 3D》(1992)、《Doom》(1993)和《Quake》(1996) ,不過通常也會包含手工寫的彙編(這還算是純C么?)。我開發的《王子傳奇》(1995)也是這種情況。

「開發出有沒有意思的遊戲」其實與編程語言的關係不太大。

但對比 C 語言,C++ 有不少地方更方便而已。相比之下,有些代碼用 C 語言比較麻煩,例如要用宏來寫泛型編程、沒有運算符重載等。現在業界很少用純 C 語言來開發遊戲。


有意思是遊戲性問題。

所以這是個遊戲設計的問題,而不是編程技術問題。

那麼答案是可以。

別說只用C了,哪怕完全沒有電子產品,也可以把遊戲設計得有意思。


遊戲底層編程的發展路徑是 純彙編 -&> C -&> C++

在ps,ps2那個時代,有大量的遊戲都是用c語言(混合內聯彙編)來編寫的。這裡面的好遊戲汗牛充棟,就不贅述了。

ps3世代之後的遊戲基本都用c++了。


DOOM、雷神之錘。


C++基本上就是C套了個作用域資源管理和模板的馬甲。你用C寫項目,無非就是資源管理麻煩一些而已,只要你自己能捯飭明白,沒什麼不可以的。


可以,但沒必要,c語言參與了各種遊戲或者遊戲引擎的底層開發,一般的大型遊戲開發絕不是用某種語言這麼單純的問題。一個大型遊戲的開發需要龐大的團隊使用各種各樣的語言和工具來完成。總結一下主要有C/C++,彙編語言,著色器語言,腳本語言,高效的開發語言C#或Java。

首先一般的遊戲開發架構(Windows)從底到頂一般是Direct X?——遊戲引擎——遊戲。

Direct X?相當於所有顯卡的一個統一介面,為遊戲提供一個利用硬體渲染的編程模型,但Direct X?介面為了追求高性能功能非常單純和鬆散,不利於遊戲的高效開發。此時就需要根據遊戲特點對其進行適當的取捨和封裝,實現一組更高抽象的遊戲開發介面和框架,可以理解成遊戲引擎中的圖形引擎。這部分的開發一般使用的語言是C/C++和少量的彙編語言。

至於遊戲引擎是一個非常複雜的功能聚合體,所有的遊戲開發工作都是在之上進行的。包括圖形引擎,音頻引擎,碰撞引擎,藝術資源管理,腳本引擎等等。到此為止幾乎還沒有涉及到你所說的遊戲開發。

首先在圖形渲染方面,例如光照陰影處理等等,現代顯卡一般是通過可編程著色器實現對圖形效果的控制,所採用的編程語言一般是一些著色器語言,例如Direct X?採用的HLSL,OpenGL使用的GLSL等等,語法類似C語言,遊戲執行時被編譯載入到顯卡上,在實現硬體渲染速度的同時又實現了編程的靈活性。

大型遊戲開發的絕大部分工作其實都是在編寫遊戲腳本,腳本是大型遊戲得以如此高速開發和發布的主要原因。腳本化的開發讓遊戲開發擺脫了硬編碼的種種弊端,讓遊戲內容可以輕易的修改和調試。遊戲故事如何進行,各種事件如何觸發,何時該播放哪些聲音或動畫,如何使用藝術團隊創作的資源,這些都是在腳本中編寫的,可以說引擎決定了遊戲能做什麼,而腳本才真正決定了遊戲做了什麼。一些著名的引擎如虛幻系列都有自己獨特的腳本語言,其他一些引擎可能會採用一些第三方的腳本語言,比如比較流行的Lua。所以開發一個新遊戲最簡單的情形就是沿用之前的引擎,創作藝術資源,然後編寫腳本將其組織成一個遊戲,幾乎不需要什麼底層的編程語言。

開發環境方面,遊戲團隊內部可能會使用一些開發和設計工具對資源進行處理,可以理解成遊戲引擎的IDE,這部分因為是內部工具,而且可能需要經常修改所以一般採用比較高效的開發和語言,比如暴雪就是部分使用.NET和C#進行一些內部工具的開發。

至於引擎核心的開發,Windows比較流行的方法是使用最新版本的Visual Studio,顯卡廠商如NVIDIA也會為VS開發一些插件來簡化顯卡編程和調試。


可以,但很難。總有人對C語言有某種幻覺,覺得沒那麼難,似乎自己明明很快就掌握了這門語言,很簡單,於是乎躍躍欲試想拿C語言做點事情。可是只學完C語言,卻發現自己什麼也做不了。C語言沒用嗎?當然有用,現在所知的最流行的幾款語言都和它沾親帶故,現在所知的最主流的操作系統都和它有點關係。但想要做這些比較厲害的事情,學完C語言是遠遠不夠的,還要有浩瀚如海的外圍知識,能做到這樣的你已經是一個合格的C語言工程師了,但是很可惜,你想做一個大型客戶端遊戲,還是會感覺人微力薄。主要是,C語言面向結構化,有其自身固有的缺點,不然也不會發展出面向對象的語言來。它本就不適合去在更高層一展拳腳。但是嘛,學了並不虧。


Diablo I使用C語言開發的。


C語言可以結合到單片機,比如arduino或者stm32,做平衡小車或者四軸,同樣很有意思,比單純在PC開發遊戲好玩很多。


可以,但不現實,也很麻煩。

具體步驟我可以告訴你,但是看你有沒有耐心去學習相關知識。

純c開發遊戲2d遊戲可以去學WinApi學會裡面的基礎bitblt就能做簡單的2d遊戲。雖然gdi效率不高,但是做出來的也能看。

純c開發3d遊戲可以去學directx9,雖然directx是用c++寫的,但是你可以像c一樣去使用他,而且d3d有個好處,那就是基於底層,運行速度快。

另外純c開發的遊戲也不少,國內的仙劍1就是純c開發的,網上有他的源碼,你可以自己下來學習研究下。

最後祝你能早日開發出一款符合自己心意的遊戲。


你會說漢語嗎?

你能寫出紅樓夢嗎?

這不是一個概念的,差遠了


貪吃蛇行嗎 我有代碼


推薦閱讀:

PC怪物獵人世界,隨從貓特殊裝備獲得方式
遊戲該不該背這個鍋?遊戲或成新型婚姻殺手
Warframe武器從機制到配置(下-配置篇)
不動腦不動手不氪金的遊戲,那還有什麼可玩的?
電競日報:ChuaN被曝買外圍;Artifact首個賽事公布

TAG:遊戲 | 遊戲開發 | C編程語言 |