作者zxcvforz (塔歐茲)
看板Minecraft
標題Re: [討論] 請問mod API是什麼?
時間Sun Aug 19 15:22:44 2012
※ 引述《hfs (快樂!移民瑞士!夢想成真!)》之銘言:
: A.請問mod API是什麼?
API - Application Programming Interface
API 就是兩組程式之間互相溝通所使用的一套規範、規則,
只要遵守 API 的規定來寫程式,這兩組程式就可以互通。
以 Minecraft 來講,兩組程式就是 Minecraft 主程式和任意一個模組。
目前 Minecraft 由於沒有 API (也就是官方沒有制定一套規則),
所以現行的模組實際上都是由某團隊 (MCP 團隊) 先將遊戲主程式反組譯,
變成原始碼的格式後,再由各模組作者根據 MCP 原始碼來改。
假設原本的主程式有 func1() func2() func3() 三個功能,
模組 A 想改 func1(),他就要根據 MCP 的原始碼去寫一個相容的新 func1(),
然後必須將舊的 func1() 蓋掉,主程式才會呼叫到新 func1()。
這時如果模組 B 也想改 func1(),但是他是加入不同的功能,
想要跟 A 同時存在的話,B 就必須改 A 的 func1() 而不是原版的 func1(),
不然 B 蓋掉之後 A 改的新東西就消失了。
這就是為什麼現在的 Minecraft 很容易有模組相衝,因為他們改到同一個功能,
導致後裝的模組會蓋掉先裝的模組程式,先裝的模組就不完整了。
: B.他可以消除各個MOD之間相衝的問題嗎?
只要是符合 API 規定的模組,大部分的衝突都可以解決,
但是邏輯上的衝突卻是不可能解決的。
例如模組 A 是讓你砍一塊原木就整棵樹倒下來,
模組 B 是讓你砍一塊原木後,樹的其他原木方塊會像樹葉一樣慢慢掉下來。
由於兩種功能不可能同時存在 (邏輯上的矛盾),
所以就算 A 跟 B 都使用 API 來寫,還是會相衝。
: 還是說只是讓各個MOD安裝的方式統整起來而已?
對玩家而言,他最大的好處就是排除掉絕大多數的相衝問題,
並且讓裝模組 (以後叫外掛或插件) 變得跟裝材質包一樣,
把檔案丟進資料夾就好。
: C.是不是只要有了mod API之後.
: 就不用再有FORGE或者MODLOADER或者MCPATCHER了?
: 謝謝好心人幫忙解答疑惑
那要看模組想要提供什麼功能。
如果模組想做的東西,API 並沒有提供,那麼這個模組仍然得改原始程式。
只要這類模組一多起來,Forge/ModLoader/PlayerAPI 這類東西還是會出現,
MCPatcher 也就仍然有他的地位。
不過基本上 ModLoader/Forge 這種相容性的介面層應該是最快被取代,
因為他們的本質上就是一套 API,只是由玩家自製的 API 而已,
現在有了官方 API 後,他們會是最先被取代掉的模組。
補充:
實際上 API 出來後,現在我們所知的「模組」仍然會存在,
所以也很可能 MODLoader/Forge 幾乎不受影響,
只是可能需要用到他們的東西會變少而已,
剩下真的大幅修改主程式的模組才會需要用到 MODLoader/Forge。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.74.160
→ pokyaprl:看麥塊長知識。 08/19 15:24
推 t19910422:專業給推 08/19 15:25
※ 編輯: zxcvforz 來自: 114.25.74.160 (08/19 15:27)
推 miau9202:僅求MODLoader跟Forge 也遵循官方API的格式,別再衝突了 08/19 17:34
推 yuan860721:專業推 08/19 17:35
推 er230059:官方好像有要弄一套API 不過到現在都還沒出現 08/19 18:02
→ er230059:題外話 Mod用的程式語言... Java寫起來真討厭... 08/19 18:02
→ zxcvforz:API已經在寫了,1.4很可能就會一起出來 08/19 18:15
推 bulon:長知識推推 08/19 18:27
推 cangming:不過這樣一來MOD開發者就幾乎要重寫了 但是如果跟現行API 08/19 18:43
→ cangming:差不多的話 應該能節省不少時間 不過會不會有Moder還是 08/19 18:44
→ cangming:不用官方API一樣去改程式碼呢 = =" 08/19 18:44
→ cangming:喔 看到了 XD 只希望官方的API會很強大 XD 08/19 18:47
推 chocoya:專業解說 推 08/20 02:55
推 linji:希望趕快出來>< 不然裝模組好麻煩喔 08/20 07:37
→ lulanee:不覺得官方API出來就會比較好裝模組 保證更複雜-.- 08/20 09:03
→ lulanee:不管是對寫mod還是用mod的人來說 08/20 09:04
→ linji:真希望有天模組丟到資料夾就能用~.~ 08/20 10:17
→ Nuaaukw:官方API出來後user一定比較輕鬆,但是coder就不一定了。 08/20 11:15
→ Nuaaukw:如果麻將搞出半殘的API就..."Orz 08/20 11:16