Re: [問題] 循序漸進的MOD製作教程

看板Minecraft (當個創世神)作者 (run-man)時間8年前 (2017/02/05 03:48), 8年前編輯推噓3(304)
留言7則, 3人參與, 最新討論串2/2 (看更多)
先說結論 交互地圖製作建議使用插件來製作 選擇spigot較佳 相較Sponge使用Spigot能查到的資料也較多 如果有要裝模組增加遊戲耐完度 Sponge是你唯一的選擇 要使用模組還是插件,容我來科普一下 -_- 模組一般來說是指Forge的mod,大致上做幾件事: 1.利用MCP(Mod Coder Pack)將Minecraft的程式碼反混淆(否則被混淆的程式跟本看不懂) 。 2.製作Forge的API,最簡單的作法是把原是Private的Class改成Public讓開發者能呼叫。 3.協同不同模組同時運作 還有很多如提供進階的3D模型API、設定檔讀寫、多人連線的物品ID編碼等。 製作模組主要是透過修改遊戲程式來新增物品、加入特殊效果。由於Forge也能操作 官方伺服器的API,所以插件能做的事都辦的到。 那麼會有人說,Forge那麼屌幹嘛還要插件?原因很簡單,因為根據前面提到的第2點,Fo rge極度依賴原版麥塊,一旦出新版麥塊就必須等MCP更新來重新反混淆,才能做接下來的 事。哪天Mojang不開心改API工程會變得相當耗大。這就是為什麼麥塊改版後模組要修改 的原因。 為了避免這種悲劇重演,有一群人決定開發一套伺服端的API如Bukkit。這個API的規劃完 全是以插件開發者的角度去規劃,不像Forge總是依賴原版。 它的目的是要讓這個API不管原版改版幾次,我都要維持不變,變的只是實作方式(插件開 發者不需理會)。由於這個API只用在伺服,所以涵蓋範圍僅限於屬性修改、事件偵測,沒 辦法無中生有新的物品。也有些人可能會問,有些插件明明升級後也不能用啦。這是因為 Bukkit所提供的API沒辦法滿族插件開發者的需要,像是操作物品nbt標籤就必須使用nms( net.minecraft.server)直接操作麥塊伺服的實作包不被bukkit所支援,因此原版升級往 往就必須跟著更新。 目前bukkit有個插件叫作protocollib,它能夠直接對封包進行操作,讓以前往往要利用n ms的機會減少許多,也可以做出一些以前要模組才能做的事,像是改變皮膚、完全隱身( 非藥水)。 假如我想要裝插件也裝模組?早期有開發者做出MCPC,讓bukkit伺服能裝模組。主要是利 用mapping的方式,把Bukkit的API對應到Forge的API來實現,缺點是因為以不同方式使用 Craftbukkit(bukkit的實作),所以用到nms的插件常常會出問題。 當時要用mcpc還必須走一項程序叫作port。要安裝的模組要進行反編譯,修正反編譯後程 式的錯誤後,再透過程式轉換才能使用,相當繁瑣。熱門模組有好心人幫忙,冷門模組只 能摸摸鼻子自己來。後來大神開發了MCPC+,讓port走向歷史,過了一段時間改名為Cauld ron。 這時期發生了一個重大事件。這起事件導火線是Mojang強迫服主簽署DULA(Minecraft E nd User License Agreement 使用者終端協議)。詳細條文自行上網查。主要爭議點是服 主不能向玩家販賣VIP使之和未購買的玩家有功能上差異(能飛、多錢、多指令…),引起B ukkit團隊罷工,決定不幹了。 只是這樣其實還好,有原始碼誰都可以繼續做。問題是有個貢獻非常多的Bukkit開發者指 控craftbukkit裡的程式碼違反DCMA,因為使用了原版伺服程式碼(反混淆出來也算)。官 方不承認,等同於 他是抄craftbukkt,基於GPL協議,原版伺服要公開原始碼。基於商業公司不可能這麼做 ,想當然craftbukkit就被封了。才剛出道沒多久的Cauldron也因此中 槍。 事件之後,照理講加強版Bukkit的Spigot也不能存在。之所以能存活,是因為之後的版本 改採用patch的形式發佈。有用過git應該都知道patch是什麼,就是一種告訴你原始程式 碼哪邊加幾行,哪邊刪幾行的文字檔。單獨存在的patch完全不能成為能用的程式,因此 算是遊走法律邊緣吧。 Cauldron消失後,模組插件服也不復存在。於是一群從Bukkit和Cauldron來的開發者決定 發起Sponge專案,這個專案的API也是全新打造,而實作則是利用現有的Forge。目標是打 造合法的插件、插件模組服。經過長時間的開發目前已經進入beta階段。由於Spigot的存 在,使得Sponge的角色變得尷尬,儘管新的API提供很先進的特性,克服不少舊有的弊病 ,但要把bukkit插件移植到Sponge這樣差異極大的API本身就是件大工程,插件開發者又 不想同時維護兩個專案,導致能用插件少的可憐。 個人的伺服因為有裝模組卡在1.7.10也就是Cauldron所支援的最後一版。之後會希望能轉 到Sponge上,可惜插件實在太少,許多Spigot上的插件沒辦法取代,偶爾換換模組維持新 鮮度這樣。 手機排版請見諒 ※ 引碼述《KanoLoa (卡)》之銘言: : 各位前輩大大好,我因為舍弟的緣故,最近才關注到這款熱門的遊戲。 : 經過短暫的搜尋資料,決定拿MC做些小遊戲地圖分享給家人朋友玩。(還可配VR) : 因本身是資訊工程背景出身,工作上也有遊戲設計等經驗。 : 雖然直接在Unity平台作遊戲也可以很快達到作遊戲的目的, : 可我發現年紀小的弟妹特愛MC,我想可能是這種視覺風格對小孩子有更特別的魔力。 : 竟然如此,不如來好好鑽研下MineCraft! : 目標是: 1.架服(Windows) : 2.製作可與玩家多交互型的地圖 (例如簡易塔防) : 所以來請求各位大大可否給予我一些建議, : 讓我能知道從哪邊開始收集資料學習教程,比較能有效率與系統的達成目的。 : 目前我所知道的地圖製作方式,有指令方塊與直接製作MOD。 : *還有伺服器插件 : 依理解,對我來說可能是寫MOD會比較貼近個人之前的開發習慣。 : 就即不使用指令方塊與紅石的交互,純寫MOD來開發地圖(或搭配使用更好?) : 比如延遲一秒的指令,比起紅石機關觸發,我會覺得用coding下延時好像更直接點。 : 那麼,想請問製作MOD可以從哪邊開始呢?直接就架站,開始改JAVA? : 或是應該從指令開始理解,慢慢摸熟整個MC系統。教學資源看哪邊比較好呢? : 還望前輩們能給予小弟一些建議,非常感謝 m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.15.186 ※ 文章網址: https://www.ptt.cc/bbs/Minecraft/M.1486237717.A.82E.html ※ 編輯: fufu8aa (118.167.15.186), 02/05/2017 04:09:04

02/05 07:39, , 1F
bukkit開發者指控bukkit違反dmca mojang卻回說我們擁有b
02/05 07:39, 1F

02/05 07:39, , 2F
ukkit 這才真是經典
02/05 07:39, 2F

02/05 07:44, , 3F
過沒幾天又發消息說麥塊被微軟買了 好個動盪的年代
02/05 07:44, 3F
※ 編輯: fufu8aa (36.227.247.213), 02/05/2017 08:26:48

02/05 14:27, , 4F
感謝。那段歷史我實在看不太懂
02/05 14:27, 4F

02/05 14:27, , 5F
現在清楚許多了…
02/05 14:27, 5F

02/05 14:27, , 6F
所以spigot要自己編譯的原因就在這裡…嗎?
02/05 14:27, 6F
對,如果Spigot把編譯好的檔案放到他們的官網上,就要有被抄掉的心理準備

02/05 16:08, , 7F
推推
02/05 16:08, 7F
※ 編輯: fufu8aa (122.116.148.237), 02/05/2017 19:42:34
文章代碼(AID): #1ObZ0LWk (Minecraft)
討論串 (同標題文章)
文章代碼(AID): #1ObZ0LWk (Minecraft)