Minecraft 為什麼不用 C 寫呢?

Minecraft

運行環境是java,就像android一樣不接地氣啊,而iOS基礎語言是obj-c,其iOS版的自然也要用c編程,接地氣,速度快

那麼問題來了,為什麼PC版不用c寫呢,非要繞到java上去,使得MMO化變成了遙遠的夢


我記得之前知乎有一個專業寫MC插件的人曾經跳出來說,MC他爹的程序寫成一坨屎。如果是真的的話,用C語言來開發,他肯定寫不出來。


https://github.com/fogleman/Craft

你要的c語言版本


誰告訴你 android 不接地氣?

用 Java 寫都能賺一棟豪宅為什麼還要用 C 寫?

這個故事告訴我們編程語言並不那麼重要。

程序員思考問題總是從技術角度入手,但是卻忘記了在真實社會中「人」才是最重要的。

微軟工程師的爆料:

叛逆者:「現在android上也還是 (OpenGL 1.X),wp上是沒辦法才用的2.0。頂點數實在太多了,再加上不用vbo不用instancing,驅動和GPU都很難受。這和java還真沒關係,是GPU那邊卡。「

這種情況下,就算用 C 都沒用,哪怕用彙編寫都卡。


事實上證明 語言和成功與否並沒有太大的卵關係


對這個題目的最直接回答是:notch是個先干後想的人,而不是個先想後乾的人;mc是他大堆獨立遊戲里碰巧成功的一個,而不是他十年磨一劍的扛鼎之作。所以,他開發遊戲,當然用最敏捷的方式。

http://minecraft-zh.gamepedia.com/%E7%89%88%E6%9C%AC%E8%AE%B0%E5%BD%95/Classic

看,這是mc的classic版本記錄。仔細看一下,mc以多麼快的速度推出新特性。

實際上,C開發效率低不是指C大幹快上的時候一定比java慢,而是指安全性遠遠不如java,java最大的特點就是,會為你犯得錯誤兜底。所以說,現在mc的代碼爛成這個樣子,居然還可以跑,很大一部分程度上要仰賴java的兜底。如果他用C寫,其實發布1.0版的時間不會相差太多,但是隨後的維護很快會變成一場噩夢,後來估計也不會有什麼大變化,無非就是notch被迫請幾個大牛來重構他的代碼,然後把他的25億分走一半而已……

但是,C/C++和java的差別其實也沒有那麼大。如果要mojang現在丟掉所有源碼,重寫一個mc出來,他們很可能就要使用C++。說白了,還是在那個時間點,java比C優勢更大而已。


無他,唯手熟爾。


因為MC是個頁游

盜版MC=啟動器+遊戲

正版MC形式1=web

正版MC形式2=正版啟動器+遊戲

Java開發效率甩開C幾條街, 運行效率沒個鳥用.

C++的話, 還稍微有幾個人做, C還是洗洗睡吧

MC巨大的玩點是在mod上. java做這個輕車熟路

C做呢? 內存誰分配? 我寫mod前要不要先擼一個框架, 類庫之類的...


開發速度巨慢,就憑這就一點也不接地氣


有微軟接盤你還怕什麼,肯定會用C++重寫的


跑個題,多虧了Minecraft沒用有C寫,現在Minecraft社區才能這麼活躍。

不然以Notch的代碼水平,根本做不出一個像樣的API來,現在能有這麼多Mod玩?


我以前待的公司做的產品主要是C#

後來大boss說:我們要趕潮流啊sqlserver一邊去我們上Oracle吧

眾人齊道:老大趕潮流還是先把產品改JAVA吧

boss:怎麼改

眾人:推了重做么么噠

boss:wqnmlgb


任地獄告訴我們,遊戲性大於一切。畫面,代碼,什麼的都是後話。


看了那麼多答案,忍不住說一句,xbox360版本是什麼寫的?JAVA么?


java用十倍的性能換取十倍的開發效率。


以後vs2015可以秒全平台,不存在接不接地氣了


其實是因為我的世界這個遊戲的地圖刷新時間是每秒20次(在我的世界裡一秒被分成20tick,紅石中繼器可以設置1到4tick的延遲)。也就是說每1tick,地圖都會檢查沙子是否該落下,水是否可以繼續流動,以及紅石電路的運行。

1紅石刻=0.1秒

1遊戲刻(1game tick)=0.05秒

為什麼只有PC版紅石電路的啟動才是即時的,活塞的特性PC版也和其他的版本不同(但是一般的延遲卻大於1tick,小於2tick,大家都認為活塞的延遲為1.5tick。這是在12w27a更新之後的性質,之前應該是2tick,這裡的刻是紅石刻)。

而PE版為了緩解紅石帶來的壓力就把紅石的延遲加大了,PSV好像擁有預載入紅石電路的能力(就是按下開關要等一會兒,然後紅石才工作)

安卓可以運行Java,所以就有人來研究如何讓手機玩上PC的mc,他成功了,1.7. 10在很多人的手機上能達到20到40幀,高端手機幀數更高(吐槽一下這個垃圾iOS,要不是因為iOS我的世界完全可以在手機上不叫PE)。我的意思就是把PC上的mc精簡精簡優化優化,然後手機上運行完全比現在的PE好到不知道哪裡去

最後是我的世界的風格的問題,嚴格的來說我的世界風格統一(現在白框按鈕簡直破壞風格)。notch的像素風格是很不錯的,也很養眼,那個材質包能和原版相提並論?估計也就只有Disco大師的OCD材質包了,不過現在不叫材質包了,而叫資源包,聲音文件都有。

紀念紅石大師Disco

紀念創世神Notch

資料來自minecraft wiki


你看過了minecraft解包的源代碼你就知道為什麼不用c寫了。他們根本不可能用c寫出來的。。。。


哪有遊戲用c語言寫的,提問也應該為什麼不用c++寫,這是軟體界的常識吧,要用面向對象的語言啊,你試著用c語言去寫這種工程肯定痛苦


我是來提問的。。。。。。mc需要的內存較高是不是因為是使用java編寫的原因呢?


這恰恰證明了一個產品的成功與否和用什麼語言並沒有什麼卵關係,大家也不用忙著爭哪個語言好哪個語言不好了,學好了都好。


推薦閱讀:

玩Minecraft被困住了怎麼辦?
我的世界裡的畫像為什麼十分恐怖詭異?
Minecraft中有哪些指令?
Minecraft有什麼有趣的玩法?
長時間玩 Minecraft 單人模式的人的人 會感到寂寞嗎?

TAG:遊戲 | 遊戲開發 | 編程 | 我的世界Minecraft | 《我的世界》攜帶版MinecraftPE |