[教學(xué)][krkrz多平臺] Kirikiri SDL2

本文章和內(nèi)容僅為個人興趣分享,如需轉(zhuǎn)載請注明項(xiàng)目來源及作者。
KrKrSdl2是Github作者uyjulian制作的Krkrz引擎多平臺項(xiàng)目,通過SDL2圖形庫制作運(yùn)行端口使得krikrz/2游戲能夠在支持SDL2圖形庫的平臺上運(yùn)行,如macOS、Linux等,
項(xiàng)目地址:github.com/krkrsdl2/krkrsdl2。
曾經(jīng)psv平臺上krkrv項(xiàng)目和switch平臺上的krkrs項(xiàng)目都是該項(xiàng)目的前身。目前krkrsdl2主要支持并維護(hù)的平臺有類Linux(如Ubuntu20.04)、macOS、 WebAssembly網(wǎng)頁端,衍生支持的平臺有Android、Psvita、Switch,我根據(jù)作者最近Github的更新中預(yù)編譯發(fā)布進(jìn)行測試后,發(fā)現(xiàn)目前最新版在Switch端仍然有無法運(yùn)行的Bug,由于作者暫時不測試維護(hù)衍生支持的平臺,本人也不太了解大氣層系統(tǒng)插件的運(yùn)行調(diào)試,希望有大佬能幫忙看看修復(fù)一下。
鏈接:tieba.baidu.com/p/7809943061
目前我也在為該游戲制作漢化補(bǔ)丁,并實(shí)時更進(jìn)魔獸之森發(fā)布的運(yùn)行補(bǔ)丁,感興趣的可以關(guān)注一下
鏈接:tieba.baidu.com/p/8404027186
由于移植游戲本身需要用到krkr方面的基本制作知識和漢化知識,這里不過多贅述,個人推薦可以看一下b站up主Dir-A的相關(guān)視頻進(jìn)行學(xué)習(xí),鏈接:space.bilibili.com/8144708,這個大佬有教很多關(guān)于視覺文字游戲,感興趣的小伙伴可以去了解學(xué)習(xí)。
同時還有krkrz的參考文檔,鏈接:krkrz.github.io。
更多相關(guān)資料就不在這里詳細(xì)分享了,有需要的可以自行bing、Github亦或者在下面求助,知道的我會盡可能回答。
krkrsdl2的使用范圍:
首先,krkrsdl2只能運(yùn)行krkrz,而krkrz是可以向下兼容krkr2的,所以你依然有可能移植由krkr2制作的游戲,如魔法使之夜、千戀萬花之類的,但是krkrsdl2只能運(yùn)行未加密的xp3包,所以直接移植商業(yè)向發(fā)布并有加密的krkr游戲似乎并不適用,需要自己重制,類似魔獸之森自制的FSN。亦或者像作者所建議的使用Wine或Kirikiroid2進(jìn)行移植體驗(yàn)。請注意,常規(guī)pc上的KAG(KiriKiri Adventure Game)3并不能直接通過krkrsdl2移植,這一點(diǎn)會放在最后講。
其次,在Github中已有作者預(yù)編譯發(fā)布的各平臺版本,位置在如下圖的tag中,但你仍然可以通過自己編譯并定制開啟krkrsdl2的功能以適配你所要運(yùn)行的krkr作品。

下面我將大致講講krkrsdl2在各平臺的編譯和移植使用方法,編譯環(huán)境與作者最新所用的Ubuntu20.04一致,當(dāng)然在在開始編譯之前你需要用下圖的命令去克隆倉庫,具體也可以參考krkrsdl2的介紹頁中(krkrsdl2.github.io/krkrsdl2/en)作者的描述,如果你在git clone或者是curl過程中遇到無法下載時建議在你用于編譯的系統(tǒng)中開啟代理(就是梯子、魔法)。

1.Linux平臺
作者雖然提供了meson工具鏈去更方便的編譯Ubuntu、macOS、web可用的krkrsdl2,但也提供了常規(guī)的cmake工具鏈作為編譯方法,從而可以額外編譯在psv、ns等這類平臺可用的krkrsdl2,所以接下來都以cmake編譯方式為示范作為講解。
你可以通過登錄github后在項(xiàng)目的action中查看類似于下圖中最新的工作流workflow,根據(jù)工作流的順序依次去配置編譯所需環(huán)境和編譯運(yùn)行程序。Linux平臺可以參考build-Ubuntu的流程中的過程,基本上就是安裝好build-essential、libsdl2-dev、nasm、ninja、cmake等編譯所需庫和工具后,用對應(yīng)的cmake命令進(jìn)行編譯,圖中劃紅線的都是主要的步驟:

具體的步驟和過程都可以在登陸Github后展開查看工作流每一步詳細(xì)內(nèi)容

當(dāng)然,你也可以直接查看.github/workflows/ci.yml文件,大概就是最新提交的Action生成文件:

如果需要用到brew,ubuntu20.04的brew安裝可以參考這個鏈接:www.cnblogs.com/ramlife/p/16578364.html#:~:text=ubuntu%2020.04%20安裝%20homebrew%20安裝依賴%20sudo%20apt-get%20install,%28%2Fhome%2Flinuxbrew%2F.linuxbrew%2Fbin%2Fbrew%20shellenv%29"%27%20>>%20%2Fhome%2Fptz%2F.profile%20eval%20"%24%20%28%2Fhome%2Flinuxbrew%2F.linuxbrew%2Fbin%2Fbrew%20shellenv%29"
你需要在克隆的項(xiàng)目文件夾里(即krkrsdl2文件夾底下)進(jìn)行cmake編譯。當(dāng)你編譯完成后會在build文件夾得到一個名字為krkrsdl2的程序

你可以使用下圖三種命令行方式去運(yùn)行你的krkrz游戲,第一種是將krkrsdl2放置于startup.tjs的同一目錄下運(yùn)行,第二種是指定startup所在目錄運(yùn)行,第三種是可以添加參數(shù)運(yùn)行(例如 -drawthread 指定繪圖線程數(shù))

在配置過Ubuntu的編譯環(huán)境后,其他衍生平臺的環(huán)境準(zhǔn)備也相當(dāng)于完成了一半
2.psv平臺
psv只能通過cmake去編譯,請確保你已經(jīng)在用于編譯的系統(tǒng)配置好VITASDK工具鏈環(huán)境,具體安裝配置我不過多介紹,這里僅提供相關(guān)鏈接:vitasdk.org,安裝VITASDK時建議掛代理避免git下載過程失敗。
psv的編譯工作流如下圖所示,基本原理也是通過VITASDK編譯出一個eboot.bin啟動程序用于運(yùn)行startup.tjs文件或者包含了startup的xp3封包(常見的如data.xp3),不過還順便給你打包成vpk方便直接安裝。請注意,如果你已經(jīng)編譯過別的版本并已經(jīng)生成了build文件夾,最好先刪除已有的build文件夾再重新編譯新的平臺,避免會有文件重復(fù)。

不同的是按照工作流逐步編譯生成在build文件夾下的krkrsdl2.vpk里面已經(jīng)提前包含好一個示例data.xp3,結(jié)構(gòu)如下圖,你可以在直接安裝這個vpk體驗(yàn)一下在psv上的演示效果,這個演示的KAG3的demo代碼地址為:github.com/krkrsdl2/krkrsdl2-kag3-demo。


同理如果你需要將游戲移植到psv上,只需要在編譯生成vpk時將需要打包的data.xp3換成你移植的游戲的data.xp3,或者也可以直接安裝示例vpk后在psv上替換data.xp3,以及放入游戲的其他xp3封包。個人更建議像魔獸之森做的fsn那樣將所有游戲數(shù)據(jù)包放在psv別的文件夾下,而在eboot.bin所在的vpk文件夾下的data.xp3只需要寫入引導(dǎo)啟動的代碼即可,這點(diǎn)我不過多解釋,了解過krkr基礎(chǔ)代碼知識和游戲結(jié)構(gòu)的都知道為什么是startup.tjs、data.xp3,以及你可以通過解包魔獸之森制作的fsn的vpk去查看引導(dǎo)啟動是怎么編寫的。如果有需要詳細(xì)解釋我會在以后講解魔獸之森制作的補(bǔ)丁時再做補(bǔ)充。
接下來的平臺我并沒有經(jīng)常使用或測試,不保證能完全解答和介紹清楚,僅供各位參考
3.switch平臺

最新版的devkitpro需要在項(xiàng)目的cmakelists.txt里面如下圖所示的位置補(bǔ)充一個文件后綴“.elf”,這個編譯的原理就是生成一個elf啟動程序并結(jié)合data.xp3和nacp打包成nro,類似vpk的打包。但因?yàn)樽髡哳A(yù)編譯用的版本是"devkitpro/devkita64:20210726",不知道是不是版本區(qū)別導(dǎo)致最新版devkitpro在編譯時不補(bǔ)充“.elf”的文件后綴內(nèi)容到編譯命令部分就不能正常編譯完成。


最后生成的是krkrsdl2.nro插件,同理已經(jīng)打包了一個示例data.xp3進(jìn)去。但目前最新版本krkrsdl2編譯的nro都不能在Atmosphere上正常運(yùn)行,希望有大佬能幫忙修復(fù)看看,這樣ns上也能嘗試移植krkr游戲了。
4.android平臺
在項(xiàng)目文件夾的底下有一個android-project文件夾,編譯打包前你需要將必要的xp3文件放在android-project/app/src/main/assets文件夾底下。除此外你還需要配置安裝temurin JDK17,但這個JDK的發(fā)行版我沒有詳細(xì)研究過它的安裝使用。如果有大佬知道怎么安裝temurin JDK的可以在評論區(qū)分享一下,以及Android版本的編譯過程和使用效果,我暫時還沒試過編譯這個平臺不太清楚。

5.web端
由于我不太熟悉WebAssembly平臺的編譯及使用,這里就簡單講講web端的krkrsdl2網(wǎng)頁怎么用。首先將游戲必要的xp3文件放置于編譯出的wasm等文件所在的同一文件夾底下

接著,由于主流的瀏覽器(如Edge、Chrome等)在本地加載如WebAssembly之類的本地文件時會引起跨域問題,如果你需要本地調(diào)試web端的krkrsdl2,不推薦直接以本地文件打開網(wǎng)頁,而是建立一個本地測試服務(wù)器通過localhost去訪問網(wǎng)頁,類似的教程:developer.mozilla.org/zh-CN/docs/Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server。
當(dāng)然你仍然可以使用別的可能沒有訪問本地文件跨域限制的瀏覽器去進(jìn)行打開調(diào)試,一般頁面卡在preparing(或者通過F12的控制臺查看到發(fā)生XMLHttpRequest問題)都有可能是跨域問題。

其他
默認(rèn)編譯的krkrsdl2是并沒有開啟全部功能的,這些功能在cmakelists.txt如下圖所示,你可以通過修改ON/OFF來開啟這些功能,但并不能保證開啟別的功能后在編譯過程中會不會出現(xiàn)問題,因?yàn)檫@個項(xiàng)目仍然還在緩慢更新中,如果有了解krkrz內(nèi)核的大佬或許也可以嘗試自行添加額外的功能。

需要補(bǔ)充的是,目前krkrsdl2移植的krkrz是一種為移動端設(shè)計(jì)的,只能使用專門的KAG3編寫運(yùn)行,不同于PC上常規(guī)的krkrz游戲使用的KAG3,作者提供了一個修改過的KAG3模板和演示示例,相關(guān)鏈接地址:
github.com/krkrsdl2/kag3
github.com/krkrsdl2/krkrsdl2-kag3-demo
在krkrsdl2這個對應(yīng)的Github條目中也有很多關(guān)于krkrz的編寫工具和示例,這里就不一一介紹了,感興趣的請自行研究:github.com/krkrsdl2
目前我所了解的就是以上這些平臺的編譯和使用過程,當(dāng)然個人能力有限,并不能把所有的都講的面面俱到,也歡迎各位想要嘗試移植的朋友們在評論區(qū)(或在貼吧:tieba.baidu.com/p/8533466994)提出疑問,我會盡可能的嘗試解答,更歡迎有大佬能解答講解別的平臺編譯和使用過程,能夠?qū)⑦@個多平臺的項(xiàng)目完善發(fā)展下去。