最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

為什么你學(xué)不會(huì)Minecraft模組開發(fā)

2023-06-24 17:00 作者:雪尼Snownee  | 我要投稿

這篇閱讀時(shí)長五分鐘的文章可能是目前最有價(jià)值的模組開發(fā)入門指南。

為什么要寫這篇文章

筆者經(jīng)常會(huì)被動(dòng)接觸到一些教你開發(fā)模組的新視頻系列,其中總能看到視頻作者在雄心勃勃地向你介紹如何創(chuàng)建項(xiàng)目等工作,有的甚至?xí)ㄙM(fèi)大量時(shí)間向你傳授編程基礎(chǔ)??赏乱粍?,你就會(huì)在推薦視頻欄目里看到很多過去類似的教程,它們往往都不了了之,即使你真的耐著性子看完,也可能僅僅學(xué)了個(gè)皮毛,做不出自己真正想要的東西。

這些教程往往忽視了一個(gè)重要且基礎(chǔ)的問題,那就是分析并解決問題的思路。下文將試圖補(bǔ)足這一點(diǎn),并對(duì)你的模組開發(fā)之路有所啟發(fā)。

這篇文章到底是什么

這篇文章不是教程。這篇入門指南將會(huì)避免技術(shù)細(xì)節(jié)和時(shí)效性內(nèi)容,也不針對(duì)特定的平臺(tái)。筆者將以六年的模組開發(fā)經(jīng)驗(yàn)和一億次作品下載量保證其可靠性,分析你的處境,給出分析并解決問題的思路,最后分享幾個(gè)筆者認(rèn)為最重要的實(shí)踐。

也許你并不想學(xué)習(xí)模組開發(fā)

對(duì)于一些人來說,他們希望做出自己心目中的模組。其實(shí),學(xué)習(xí)模組開發(fā)只是達(dá)成目的的一種手段。大部分需求都可以通過現(xiàn)有方式更快實(shí)現(xiàn),你需要做的是尋求專業(yè)玩家/開發(fā)者的建議,說不定某個(gè)你未曾聽說的模組已經(jīng)做了你想要做的事。

如果你的需求比較簡單,可以考慮使用MCreator。不要小瞧它,筆者就曾經(jīng)被MCreator網(wǎng)站里作品的功能性震驚到過,或許你也應(yīng)該了解一下。

如果你的需求復(fù)雜但規(guī)模較小,筆者的建議是委托專業(yè)人士為你完成,畢竟學(xué)習(xí)模組開發(fā)對(duì)于零基礎(chǔ)者而言并非一朝一夕,讓專業(yè)的人做專業(yè)的事會(huì)更好。寫到這里,筆者不禁回想起自己被一些開發(fā)者報(bào)價(jià)之低再次震驚到的事了。

對(duì)于另一些人來說,他們希望借此增長他們游戲開發(fā)、產(chǎn)品設(shè)計(jì)、或是溝通協(xié)作的能力。這是一個(gè)很好的選擇,因?yàn)镸inecraft有著最大的玩家基數(shù)和模組社區(qū),你可以有充足的機(jī)會(huì)展示自己的作品。

前置知識(shí)清單

在正式學(xué)習(xí)模組開發(fā)之前,你應(yīng)當(dāng)具備以下知識(shí):

  • 首先,你應(yīng)該有基本的面向?qū)ο缶幊讨R(shí)。你需要知道基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),這樣你才能以合適的方式存儲(chǔ)數(shù)據(jù)。你需要知道什么是線程,這樣才不會(huì)在想要實(shí)現(xiàn)動(dòng)畫時(shí)卡死游戲。你需要知道什么是垃圾回收,這樣才不會(huì)把整個(gè)維度一直存儲(chǔ)在內(nèi)存里。

  • 其次,你應(yīng)該對(duì)Java語法有一定了解,至少能夠在看到不熟悉的語法時(shí)能通過搜索引擎找到答案。

  • 最后,你應(yīng)該對(duì)Minecraft本身有相當(dāng)程度的了解。這樣你才能在想要實(shí)現(xiàn)某樣?xùn)|西時(shí)立刻聯(lián)想到游戲中的某個(gè)內(nèi)容或系統(tǒng)有可以利用之處。

如果你看到這里覺得自己還不夠格,請(qǐng)選擇互聯(lián)網(wǎng)上大量制作精良的Java教程,它們遠(yuǎn)比那些模組開發(fā)教程里試圖教你的要好得多。

還有一些知識(shí),它們并不是必須的,但是會(huì)對(duì)你很有幫助:

  • 玩其他模組的經(jīng)驗(yàn)。

  • 設(shè)計(jì)模式。這會(huì)讓你快速理解某個(gè)系統(tǒng)的工作原理,也讓你在設(shè)計(jì)自己的系統(tǒng)時(shí)更加得心應(yīng)手。

  • 游戲開發(fā)經(jīng)驗(yàn),最好是RPG網(wǎng)絡(luò)游戲。這會(huì)讓你更好地理解服務(wù)端和客戶端的交互和通信。

模組開發(fā)迷思

到這里,筆者有必要反駁一些關(guān)于模組或是游戲本身的常見誤區(qū),秉持這樣的觀點(diǎn)對(duì)接下來的學(xué)習(xí)是有害的:

Minecraft代碼質(zhì)量差

此觀點(diǎn)的擁躉大多不具備完整開發(fā)一款軟件的經(jīng)驗(yàn)。事實(shí)上,今天的Minecraft代碼質(zhì)量已經(jīng)得到相當(dāng)程度的改善,Mojang作為有幾十名開發(fā)人員的團(tuán)隊(duì),他們的代碼會(huì)進(jìn)行足夠的審閱。假如把這樣復(fù)雜的項(xiàng)目交給99%的專業(yè)游戲開發(fā)者來做,最終都會(huì)演變成一場項(xiàng)目管理災(zāi)難。所以當(dāng)我們學(xué)習(xí)模組開發(fā)時(shí),Minecraft代碼一直是最好的老師。

Minecraft作為小游戲,性能還這么差

此觀點(diǎn)混淆了游戲的體積與游戲復(fù)雜度之間的區(qū)別。傳統(tǒng)電子游戲的體積主要來源于大量含有豐富細(xì)節(jié)的模型、貼圖和音頻,而Minecraft并不見長于此。Minecraft的世界是無限且高度可變的,這決定了Minecraft無法高效利用多核處理器,這樣同傳統(tǒng)電子游戲的粗略比較是不公平的。很難想象當(dāng)《GTA》中的每處地面都能被炸出一個(gè)大坑時(shí),它的性能可以和原來一樣。

你需要在Forge和Fabric中二選一

事實(shí)上Forge和Fabric之間的區(qū)別遠(yuǎn)沒有想象中那樣大,通過巧妙的方式可以使你的模組很快遷移到另一種平臺(tái)。Minecraft本身的代碼才是你應(yīng)該著重了解的。畢竟在最大的模組發(fā)布平臺(tái)CurseForge上,兩個(gè)平臺(tái)目前處于分庭抗禮的關(guān)系,誰不喜歡更多的用戶呢?

模組的通常模式

在這一部分中,筆者將介紹一個(gè)常見模組是如何完成其目標(biāo)的。

一般來說,模組主要做兩件事:添加新的內(nèi)容,和修改原有內(nèi)容。

要添加新內(nèi)容,一般我們會(huì)繼承或?qū)崿F(xiàn)游戲?qū)ο螅ㄎ锲?、方塊、配方、實(shí)體等),然后將它們注冊到游戲的注冊表中。

要修改原有的較簡單的內(nèi)容,我們會(huì)監(jiān)聽Forge、Fabric API或其他模組提供的事件,然后在事件發(fā)生時(shí)加入我們的邏輯。對(duì)于小眾的修改需求,平臺(tái)永遠(yuǎn)也不可能面面俱到,這時(shí)候就需要使用Mixin直接修改游戲或其他模組的代碼。

通過結(jié)合這些方法,一個(gè)完整的模組就誕生了。

從哪里開始

Minecraft Java版現(xiàn)在已經(jīng)有幾十萬行代碼,這意味著你將永遠(yuǎn)不可能完全掌握它。幸運(yùn)的是,你只需要掌握一些基礎(chǔ)知識(shí),然后在需要實(shí)現(xiàn)某個(gè)特定功能時(shí)學(xué)會(huì)相應(yīng)的部分就可以了。事實(shí)上,學(xué)會(huì)一件事情的最好方法就是真正用到它。對(duì)于那些百科全書式的視頻教程,完全沒有必要細(xì)看。

那么,有哪些基礎(chǔ)知識(shí)是需要了解的呢?筆者這里推薦閱讀Fabric官方文檔(https://fabricmc.net/wiki/zh_cn:start),它簡潔明了,并且提供中文翻譯。首先你應(yīng)該瀏覽一遍目錄,在你搞不清楚某個(gè)條目的意思時(shí)讀一下它的導(dǎo)言。然后,你應(yīng)該閱讀整個(gè)“基礎(chǔ)”部分、“方塊和方塊實(shí)體”的前三個(gè)章節(jié)、以及“Mixin和ASM”的前四個(gè)章節(jié)。這些內(nèi)容可以幫助你更好地理解游戲和模組的運(yùn)行機(jī)制。

解決問題的方式

對(duì)于初學(xué)者而言,在面臨一個(gè)需求時(shí)應(yīng)當(dāng)首先思考在原版和一些小型模組中是否已經(jīng)有了類似的實(shí)現(xiàn)。一般來說對(duì)于初學(xué)者,很少出現(xiàn)前所未有的需求,你應(yīng)當(dāng)學(xué)習(xí)相似內(nèi)容的寫法,融會(huì)貫通,形成自己的內(nèi)容。在這里筆者舉一個(gè)簡單的例子,希望能夠幫助你理解思考流程,舉一反三:

比如,要實(shí)現(xiàn)一個(gè)特殊的門,它會(huì)在開關(guān)時(shí)播放平滑的過渡動(dòng)畫。首先,門是方塊,要為方塊制作動(dòng)畫一般采用方塊實(shí)體渲染器。那么,原版中有沒有類似的方塊實(shí)體,它的某個(gè)部分可以繞軸旋轉(zhuǎn)呢?答案是肯定的,比如箱子的開蓋動(dòng)畫,又比如鐘的搖晃動(dòng)畫,它們都是最有價(jià)值的參考資料。

記住,不要吝嗇你的想象力!再加上持續(xù)的模仿!

最后,不要忘記Minecraft有龐大的開發(fā)者社區(qū),你可以通過搜索引擎或在群組中提問獲取幫助。不過,最好提高一下自己的英語水平,至少選擇一個(gè)好點(diǎn)的翻譯軟件。

我的實(shí)踐

“最佳實(shí)踐”是可以使開發(fā)活動(dòng)達(dá)到最優(yōu)結(jié)果的做法,但是接下來介紹的并非最佳實(shí)踐。因?yàn)槲覀兪褂玫哪=M開發(fā)工具鏈遠(yuǎn)非完美,制作模組就是一個(gè)不斷妥協(xié)的過程。筆者在這里僅提供個(gè)人覺得舒服的做法,以供參考。

使用官方映射表

使用官方映射表可以幫助你將模組更快移植到新的平臺(tái)。的確,官方映射表的質(zhì)量并不是最高的,也有一些奇技淫巧允許你通過非官方映射表移植,但官方映射表是無可爭議使用最廣泛的標(biāo)準(zhǔn)。

你可以同時(shí)使用IntelliJ IDEA和Eclipse

筆者一般使用IntelliJ IDEA編寫代碼,用Eclipse進(jìn)行調(diào)試。這是因?yàn)樗鼈兏饔袃?yōu)點(diǎn):

IntelliJ IDEA:

  • 更棒的編程體驗(yàn)

  • 使用Minecraft Development插件,尤其是編寫mixin

  • 使用GitHub Copilot

Eclipse:

  • 幾乎沒有延遲的方法內(nèi)熱重載

  • 更好用的Minecraft代碼搜索

  • Ctrl+Shift+O一鍵導(dǎo)入包

避免隨處使用非Minecraft類

筆者推薦將Forge和Fabric相關(guān)類的引用限制在幾個(gè)固定的類中,通過引用這些類來完成你的目的。這樣可以使你在遷移平臺(tái),合并代碼時(shí)事半功倍。

限制僅客戶端存在的注解也并非必需,可以通過編碼技巧避免使用。

遠(yuǎn)離TOML作為配置文件格式

TOML格式非常受一些模組開發(fā)者歡迎。然而根據(jù)筆者的經(jīng)驗(yàn)表明,TOML這種格式存在設(shè)計(jì)缺陷,目前Java生態(tài)也沒有任何一款足夠好的TOML編碼解碼器。筆者目前使用的是YAML和JSON格式。

遠(yuǎn)離Forge小眾獨(dú)家特性

歷史表明,F(xiàn)orge的一些特性總是疏于維護(hù),漏洞頻出,最終被Forge自己拋棄。建議在看到這些特性時(shí)避免盲目樂觀,而考慮轉(zhuǎn)而使用多平臺(tái)通用的解決方案。

結(jié)語

這是這篇文章的結(jié)尾。感謝GitHub@RisingInIris2017 對(duì)格式和措辭的建議。希望你有所收獲,在模組開發(fā)過程中找到屬于自己的樂趣。


為什么你學(xué)不會(huì)Minecraft模組開發(fā)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
沈丘县| 汽车| 南阳市| 陇西县| 潼关县| 高陵县| 沙河市| 青神县| 定结县| 晋江市| 哈巴河县| 页游| 闻喜县| 安塞县| 沿河| 普兰店市| 闸北区| 泗阳县| 阳江市| 七台河市| 贡山| 平陆县| 江津市| 肃宁县| 平湖市| 新竹市| 宜都市| 深泽县| 彭泽县| 萨嘎县| 新河县| 柘荣县| 吉木乃县| 乐业县| 公主岭市| 仪征市| 太仆寺旗| 天气| 邓州市| 九台市| 锡林浩特市|