上次介紹了MKXP與其分支
MKXP不只能跨平台,由於底層調用與渲染皆使用了新的方式去處理,在效能上也獲得了非常多的提升,這一切歸功於所有參與MKXP與其他分支的所有人,由衷的感謝。
在此也感謝快閃小強大大,提供了建構上的幫助。
在此也感謝快閃小強大大,提供了建構上的幫助。
- 為什麼要使用MKXP?
現在的XP、VX、VA對於現今的遊戲引擎來說是古老的,尤其是RMXP,XP於2004年發布,距今已過了快17年,各項老舊功能與限制對於現在的遊戲來說是綁手綁腳的,運行只使用單核心、老舊的DirectDraw渲染、擴展解析度麻煩……等等的,這些都深深影響著遊戲的開發。
雖然MKXP並不能讓上述版本的RM變得跟MV、MZ一樣,但至少是非常接近的,也得以脫離"古老"的代名詞。
可跨平台、新的OpenGL渲染方式、支援更新的Ruby版本、一致的跨平台運行……這些都有助於讓遊戲開發與遊戲變得更加跟得上時代。
雖然MKXP並不能讓上述版本的RM變得跟MV、MZ一樣,但至少是非常接近的,也得以脫離"古老"的代名詞。
可跨平台、新的OpenGL渲染方式、支援更新的Ruby版本、一致的跨平台運行……這些都有助於讓遊戲開發與遊戲變得更加跟得上時代。
1920*1080加上一大堆會讓原XP lag到要死的光源,在此情況下FPS依舊是滿的
- 為什麼會選擇MKXP-Z而不是其他的分支呢?
由於大部分的RM專案都會使用到WIN API,而原版本的mkxp-z並不支援,mkxp-z很好的修復了這一點,並且mkxp-z的作者Roza,也撰寫了關於構建的gitbook,讓一般人也得以自行購建自己預想的執行檔。
但mkxp-z目前有一些缺點:
字體的渲染有一點偏離
字體不支援.otf檔
除此之外表現良好
- 對於正在執行或已完成的專案,會有任何的問題嗎?
若您使用MKXP-Z作為方案的話,則可以比較不用擔心這件事
除非遊戲內用到了大量插件、外部dll檔調用、自定義的腳本……等等的
建議備份專案後,嘗試看看是否能順利運行
當然也建議該使用者要有除錯能力
以下構建教學適合:
2023/3/21 - 此教學適合使用舊版本之mkxp-z使用者,主要以v1.3.0的mkxp-z為主
想學習之人、具開發需求者、欲跨平台使用者、欲自定選項者 (當然若想嘗試也無妨
建議構建者需要有使用Linux的經驗
只是單純想要使用mkxp-z、不想構建的人,請拉至最底下
開始前的一些說明:
一般來說,若想在Linux上運行遊戲則應於Linux上進行構建,但這也只是方便而已。所以也可以在Windows上構建其他跨平台的執行檔,只是這需要許多的嘗試。
若沒有限制,則建議使用其系統進行構建。若沒有原生系統那就使用VM(虛擬機)。
在下嘗試過於Windows8.1、10、Ubuntu18.04成功構建(沒有mac
快閃小強則於macOS成功建構(不確定版本
以下是測試過目前無法建構的系統:
Windows7、Ubuntu 19.X
若沒辦法成功購建,甚至是一些環節就出了問題,那就使用VM創造一個乾淨的系統後再試一次。(乾淨的環境很重要
以下教學歸功於mkxp-z的作者Roza,並將於Windows10系統作為範例,也就是說構建出來的將會是給Windows系統的執行檔。Linux的教學將會留到下一篇,macOS的話就交給其他人了
安裝依賴項目
1.必須安裝MSYS2 - 新版MSYS2不具備建構時所需的必需品
*安裝結束時將說明是否運行64bit版本的MSYS2,選擇否(勾消)
2.安裝結束後將環境變數加上 路徑(若為預設):
*環境變數添加方法:對本機按右鍵內容→進階系統設定→進階→環境變數→添加使用者變數
C:\msys64\mingw32\bin |
若運行mkxp-z時,警告缺少dll檔案,則說明沒有添加好環境變數、又或者沒有安裝好該dll檔的軟體
3.運行msys64資料夾內的mingw32.exe
4.安裝各項所依賴的軟體
pacman -S base-devel git mingw-w64-i686-{clang,meson,cmake,openal,SDL2,SDL2_image,SDL2_ttf,pixman,physfs,libsigc++,libvorbis,fluidsynth} |
…這過程需要一段時間
5.安裝Ruby
*Ruby 1.8.7手動建構包連結
git clone https://github.com/inori-z/ruby --single-branch --branch ruby_1_8_7 cd ruby autoconf rm -rf ext/tk ext/openssl ext/win32ole CC=gcc ./configure --enable-shared --disable-install-doc make -j`nproc` make install cd .. |
*若無法make則建議使用VM新建一個乾淨的系統
*運行完指令後,ruby將會安裝到C槽的根目錄中,名為mingw32,請將資料夾複製進msys64中
*新版MSYS2於Windows有高機率無法順利建構,建議換個ruby版本,作法一樣
6.構建與安裝ObjFW與SDL_Sound
git clone https://github.com/ObjFW/ObjFW git clone https://github.com/Ancurio/SDL_Sound (cd ObjFW && ./autogen.sh && ./configure && make -j`nproc` && make install) (cd SDL_Sound && ./bootstrap && ./configure --disable-flac --disable-modplug --disable-speex && make -j`nproc` && make install) |
*如果使用Windows10,安裝ObjFW會出現一些錯誤,為了解決錯誤除了自己構建OFArray之外,也可以選擇使用該連結的文件,將文件複製到mingw32中
構建應用程式
1.設定編譯器
export OBJC=clang CXX=clang++ OBJCXX=clang++ |
若不想每次開啟MSYS2都要打上面那一串,那麼可以設定
2.克隆github上的mkxp-z,並構建
echo "export CC=clang OBJC=clang CXX=clang++ OBJCXX=clang++" >> ~/.bashrc |
2.克隆github上的mkxp-z,並構建
git clone --recurse-submodules https://github.com/inori-z/mkxp-z cd mkxp-z meson build -Dcjk_fallback_font=true cd build ninja |
至此動態鏈結構建完成,構建出來的執行檔將會在/home/使用者/mkxp-z/build內
檔名為mkxp-z.exe,將其放進遊戲專案內取代Game.exe。
而mkxp-z的設定檔案為mkxp.json.sample,該檔案位於/home/使用者/mkxp-z/,將其一同放置進遊戲專案內。若要使用設定檔的設定,請將其改名為mkxp.json,並參考內部說明進行設定。
*這部分可有可無
除了exe檔、mkxp.json檔之外還需要撥放midi音樂檔所需要的dll檔,放置於同一層
可於mkxp-z作者的預構建檔案中提取 連結
Windows:fluidsynth.dll
Linux:libfluidsynth.so.1
macOS:libfluidsynth.dylib.1
*若出現了缺少dll檔的情況,請參考安裝依賴項的第2點
*若mkxp-z.exe沒有報錯,而是直接關閉,或許是OpenGL版本不支援、顯示驅動過舊或沒有、RGSS版本問題……等等的,可以進行後面的靜態鏈結試試看。
*動態鏈結成功後的嘗試是為了方便進行之後靜態鏈結的構建,如果運行exe檔有缺少dll檔的情況,之後的靜態鏈結基本上很難成功,由於軟體安裝時都會提供靜態、動態兩種檔案的函式庫,若其一沒有則另一應沒有,除非是自己build軟體的。
動態鏈結與靜態鏈結:
動態鏈結函式庫(Dynamic-link library)具體來說,就是將一些常見的程式碼包裝成dll檔,每當程式需要使用到時就調用該dll檔作為使用,如此一來可以減少記憶體使用量、節省硬碟使用空間,RM中調用WinAPI32就是其概念。
靜態鏈結函式庫(Statically-linked library)主要用以需要將應用程式或執行檔發布時所用,將該應用程式所需的所有函式庫都打包起來,之後無論應用程式發布至哪一台電腦上,都不用擔心缺少了那些函式庫,缺點就是體積大。
打包(靜態鏈結)
1.要完成靜態鏈結,則必須使用mxe's,以獲得OpenAL,pixman和harfbuzz的靜態版本
mxe:連結
解壓縮後將i686-w64-mingw32.static的資料夾內容複製進mingw32中
2.構建靜態ObjFW
cd ~ cd ObjFW && ./autogen.sh && ./configure --enable-static && make -j`nproc` && make install |
3.修改/home/使用者/mkxp-z/src/meson.build的檔案內容
於if host_system == 'windows'底下加上以下兩行
explicit_libs += 'libbrotlicommon-static;libbrotlidec-static;' explicit_libs += 'libgcc;libstdc++;libruby18;' |
4.將動態鏈結好的/build資料夾刪除
cd ~ cd mkxp-z/ rm -rf build/ |
5.重新構建
meson build -Dstatic_executable=true -Dcjk_fallback_font=true cd build ninja |
至此靜態鏈結構建完成,執行檔依舊於/build資料夾中
*該構建打包好的執行檔,可以直接給其他人作為引擎取代Game.exe使用
在下已經構建好的二進位執行檔:連結
2020 / 9 / 5:完成ruby2.7版本的mkxp-z執行檔,VXAce已可使用
2023 / 3 / 21:修改失效的連結
若有需要msys2用的ruby 2.7,這裡一併提供連結:連結
安裝方法與一般安裝相似,-S改成-U就可以了
若有腳本編輯能力的話,搖桿控制、視窗大小倍率調整、解析度…等等的,可以於遊戲專案中自行調整。
如果有需要圖片式教學又或者任何問題還請在下方留言