寫一個 Minecraft 包管理器,需要什麼編程語言?

Minecraft 國內整合包局勢,真的是越來越不明朗了。違反 Mojang EULA 的整合包越來越多(即 包含遊戲本體並擅自散發),卻無從遏制。

我由 JavaScript 編程語言中著名的包管理器 npm 和 yarn 得到靈感,欲寫一個 Minecraft 包管理器並開源,兼備整合製作 (依賴 mods 安裝、scripts/configs 統一管理 等等) 與整合安裝 (類比 npm install 的依賴一鍵安裝、快速生成 MulitMC 實例、導入 CurseForge 整合 等等) 於一體,並藉此嘗試改變整合製作與安裝的一般流程。

當然這僅僅是一個設想罷了。在編程語言的選擇上,由於我的編程經驗甚少,一直無從下手。Rust 中文文檔全,但相對不適合。C# 官方文檔有的還是英文(害怕)。npm 和 yarn 使用 JavaScript 編寫,他人建議我嘗試用 Python(我曾接觸過),但我弄不清一門動態編程語言怎麼可以生成像".msi"".deb"這種格式的安裝包,並且不用安裝運行時環境便可使用(躺)。

提此陋問,如有解答,不勝感謝 w


如果您會因為全英文文檔而卻步,那麼建議您先去克服這個問題。要知道這些文檔大部分章節都是由非英語母語者寫出來的。

其次,軟體打包不限語言、不限內容,只需要保證能夠正確處理環境依賴。用您上手的語言就好,這不是一個應當糾結的問題。


關於違反EULA的整合包這個,目前我可以透露一些目前MCBBS的改進方向。

目前是我們與國內幾個啟動器作者們共同制定了一套新的整合包方案,模仿CurseForge的格式,不包含mc遊戲文件,靠啟動器來補全。

但是按照你的思路的話,其實就是CurseForge的模式,但是這套模式在國內執行還是相當有難度的,一個是需要一個合法的,注意,是合法的整合站點,用來分發這些mod之類的,這個就靠MCBBS很難做到,除了伺服器難以支持較高的下載量,同時你要想要到足夠多的mod也是非常的困難的。

網易有能力做到,但是很明顯,網易是商業公司,白白燒錢的事兒可不能做的(到現在他們都沒有開放過一個API)。

等什麼時候國內專線白菜價了來再考慮吧,不過就目前國內目前寬頻的情況(民用寬頻目前低價格,高成本,差的這部分錢全部算在企業網路里了)


語言用什麼要看你擅長什麼,又什麼比較適合你的需求,不過你既然說自己沒什麼經驗的話,那就不考慮這一點。比如為了實現win10開始菜單磁貼的一些高級功能,或者將窗口隱藏到任務欄圖標這種比較設計windows api的東西的話,c#會比較方便,但是其他語言也不是不能實現,只是麻煩一點。再比如你想快點寫出來而且編程經驗不是很多,也對性能沒什麼要求的話,python也是不錯的選擇。然後包管理器往往需要一個服務里來提供包倉庫,允許發布啊更新這些,這種後台一般用java寫的很多(python和js也不錯,不過c#恐怕不太常用)。

至於不安裝運行時環境直接可以運行的安裝包,我覺得除非他對你非常重要,不然的話意義不大。有的如果真的不需要安裝運行時環境的也不過是在安裝包裡面直接包含了一個,如果發現你沒安裝就先安裝上去。 還有一種方法,就是說你先用c或者c#這種不需要安裝運行時環境就可以運行的語言寫一個啟動器,在啟動器裡面包含你用其它的動態語言寫的東西,然後別人想運行你的程序的時候先運行啟動器,自動器檢測你是否安裝了你要的語言的運行時環境,如果沒有的話下載一個並安裝,然後再運行。比如mc它的正版啟動器就是這麼做的。

不過不要小看這種項目的工作量,如果編程經驗不豐富的話,最好找一個編程經驗豐富一點的人一起幫助或者說自己先學習一下,因為這個寫起來起沒有想像中那麼簡單。


建議採用社區開發模式,通過源的方式進行分發

至於包管理器怎麼寫,看你喜歡什麼語言咯


還是用C#吧,生態比rust更好。雖然我更反對一群伸手萌新就知道要整合包的行為。

C# 編程指南 另外這不是C#文檔?


為mc寫包管理器居然不選java?(???)

開個玩笑。

python可以呀。

windows下有把python腳本和運行環境打包成exe文件的工具。linux下一般都裝了python。

語言不是問題。問題是mc的其實社區。npm還有Maven這種站點都可以說是官方帶頭的,所有開發者都會把自己的項目上傳到這些站點上,並且標註前置需求。mc好像沒這樣的站點。(可能是我不知道(T_T) )

另外,建議題主用python的人可能還考慮了python寫爬蟲相當方便。自己租伺服器存儲mod文件是不現實的,自己的伺服器上存個索引是比較可靠的方案


隨便什麼語言都可以


推薦閱讀:

編程語言中import比起include來是更先進的模塊管理機制嗎?
C++有沒有像python-pip/nodejs-npm/ruby-gem一樣的包管理工具?

TAG:編程 | 我的世界Minecraft | 包管理器 |