Re: [討論] 請問mod API是什麼?
※ 引述《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
→
08/19 15:24, , 1F
08/19 15:24, 1F
推
08/19 15:25, , 2F
08/19 15:25, 2F
※ 編輯: zxcvforz 來自: 114.25.74.160 (08/19 15:27)
推
08/19 17:34, , 3F
08/19 17:34, 3F
推
08/19 17:35, , 4F
08/19 17:35, 4F
推
08/19 18:02, , 5F
08/19 18:02, 5F
→
08/19 18:02, , 6F
08/19 18:02, 6F
→
08/19 18:15, , 7F
08/19 18:15, 7F
推
08/19 18:27, , 8F
08/19 18:27, 8F
推
08/19 18:43, , 9F
08/19 18:43, 9F
→
08/19 18:44, , 10F
08/19 18:44, 10F
→
08/19 18:44, , 11F
08/19 18:44, 11F
→
08/19 18:47, , 12F
08/19 18:47, 12F
推
08/20 02:55, , 13F
08/20 02:55, 13F
推
08/20 07:37, , 14F
08/20 07:37, 14F
→
08/20 09:03, , 15F
08/20 09:03, 15F
→
08/20 09:04, , 16F
08/20 09:04, 16F
→
08/20 10:17, , 17F
08/20 10:17, 17F
→
08/20 11:15, , 18F
08/20 11:15, 18F
→
08/20 11:16, , 19F
08/20 11:16, 19F
→
08/20 17:05, , 20F
08/20 17:05, 20F
討論串 (同標題文章)