欢迎光临散文网 会员登陆 & 注册

[教学][krkrz多平台] Kirikiri SDL2

2023-08-03 10:03 作者:root_none  | 我要投稿


本文章和内容仅为个人兴趣分享,如需转载请注明项目来源及作者。

KrKrSdl2是Github作者uyjulian制作的Krkrz引擎多平台项目,通过SDL2图形库制作运行端口使得krikrz/2游戏能够在支持SDL2图形库的平台上运行,如macOS、Linux等,

项目地址:github.com/krkrsdl2/krkrsdl2。

曾经psv平台上krkrv项目和switch平台上的krkrs项目都是该项目的前身。目前krkrsdl2主要支持并维护的平台有类Linux(如Ubuntu20.04)、macOS、 WebAssembly网页端,衍生支持的平台有Android、Psvita、Switch,我根据作者最近Github的更新中预编译发布进行测试后,发现目前最新版在Switch端仍然有无法运行的Bug,由于作者暂时不测试维护衍生支持的平台,本人也不太了解大气层系统插件的运行调试,希望有大佬能帮忙看看修复一下。

关于这个项目在psv的现成可运行作品可以参考早期阡陌大佬分享的FSN Realta Nua终极整合版,这是由魔兽之森的论坛成员自制的krkrz游戏

链接:tieba.baidu.com/p/7809943061

目前我也在为该游戏制作汉化补丁,并实时更进魔兽之森发布的运行补丁,感兴趣的可以关注一下

链接:tieba.baidu.com/p/8404027186


由于移植游戏本身需要用到krkr方面的基本制作知识和汉化知识,这里不过多赘述,个人推荐可以看一下b站up主Dir-A的相关视频进行学习,链接:space.bilibili.com/8144708,这个大佬有教很多关于视觉文字游戏,感兴趣的小伙伴可以去了解学习。

同时还有krkrz的参考文档,链接:krkrz.github.io。

更多相关资料就不在这里详细分享了,有需要的可以自行bing、Github亦或者在下面求助,知道的我会尽可能回答。


krkrsdl2的使用范围:

首先,krkrsdl2只能运行krkrz,而krkrz是可以向下兼容krkr2的,所以你依然有可能移植由krkr2制作的游戏,如魔法使之夜、千恋万花之类的,但是krkrsdl2只能运行未加密的xp3包,所以直接移植商业向发布并有加密的krkr游戏似乎并不适用,需要自己重制,类似魔兽之森自制的FSN。亦或者像作者所建议的使用Wine或Kirikiroid2进行移植体验。请注意,常规pc上的KAG(KiriKiri Adventure Game)3并不能直接通过krkrsdl2移植,这一点会放在最后讲。

其次,在Github中已有作者预编译发布的各平台版本,位置在如下图的tag中,但你仍然可以通过自己编译并定制开启krkrsdl2的功能以适配你所要运行的krkr作品。

下面我将大致讲讲krkrsdl2在各平台的编译和移植使用方法,编译环境与作者最新所用的Ubuntu20.04一致,当然在在开始编译之前你需要用下图的命令去克隆仓库,具体也可以参考krkrsdl2的介绍页中(krkrsdl2.github.io/krkrsdl2/en)作者的描述,如果你在git clone或者是curl过程中遇到无法下载时建议在你用于编译的系统中开启代理(就是梯子、魔法)。

  • 1.Linux平台

    作者虽然提供了meson工具链去更方便的编译Ubuntu、macOS、web可用的krkrsdl2,但也提供了常规的cmake工具链作为编译方法,从而可以额外编译在psv、ns等这类平台可用的krkrsdl2,所以接下来都以cmake编译方式为示范作为讲解。

    你可以通过登录github后在项目的action中查看类似于下图中最新的工作流workflow,根据工作流的顺序依次去配置编译所需环境和编译运行程序。Linux平台可以参考build-Ubuntu的流程中的过程,基本上就是安装好build-essential、libsdl2-dev、nasm、ninja、cmake等编译所需库和工具后,用对应的cmake命令进行编译,图中划红线的都是主要的步骤:

具体的步骤和过程都可以在登陆Github后展开查看工作流每一步详细内容

当然,你也可以直接查看.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"

你需要在克隆的项目文件夹里(即krkrsdl2文件夹底下)进行cmake编译。当你编译完成后会在build文件夹得到一个名字为krkrsdl2的程序

你可以使用下图三种命令行方式去运行你的krkrz游戏,第一种是将krkrsdl2放置于startup.tjs的同一目录下运行,第二种是指定startup所在目录运行,第三种是可以添加参数运行(例如 -drawthread 指定绘图线程数)


在配置过Ubuntu的编译环境后,其他衍生平台的环境准备也相当于完成了一半
  • 2.psv平台

    psv只能通过cmake去编译,请确保你已经在用于编译的系统配置好VITASDK工具链环境,具体安装配置我不过多介绍,这里仅提供相关链接:vitasdk.org,安装VITASDK时建议挂代理避免git下载过程失败。

    psv的编译工作流如下图所示,基本原理也是通过VITASDK编译出一个eboot.bin启动程序用于运行startup.tjs文件或者包含了startup的xp3封包(常见的如data.xp3),不过还顺便给你打包成vpk方便直接安装。请注意,如果你已经编译过别的版本并已经生成了build文件夹,最好先删除已有的build文件夹再重新编译新的平台,避免会有文件重复。

不同的是按照工作流逐步编译生成在build文件夹下的krkrsdl2.vpk里面已经提前包含好一个示例data.xp3,结构如下图,你可以在直接安装这个vpk体验一下在psv上的演示效果,这个演示的KAG3的demo代码地址为:github.com/krkrsdl2/krkrsdl2-kag3-demo。

演示示例界面

同理如果你需要将游戏移植到psv上,只需要在编译生成vpk时将需要打包的data.xp3换成你移植的游戏的data.xp3,或者也可以直接安装示例vpk后在psv上替换data.xp3,以及放入游戏的其他xp3封包。个人更建议像魔兽之森做的fsn那样将所有游戏数据包放在psv别的文件夹下,而在eboot.bin所在的vpk文件夹下的data.xp3只需要写入引导启动的代码即可,这点我不过多解释,了解过krkr基础代码知识和游戏结构的都知道为什么是startup.tjs、data.xp3,以及你可以通过解包魔兽之森制作的fsn的vpk去查看引导启动是怎么编写的。如果有需要详细解释我会在以后讲解魔兽之森制作的补丁时再做补充。


接下来的平台我并没有经常使用或测试,不保证能完全解答和介绍清楚,仅供各位参考

  • 3.switch平台

    switch平台的编译需要用于编译的系统安装配置了devkitpro工具链环境,具体安装配置我也不过多介绍,相关链接:devkitpro.org。

    请注意,在你用devkitpro安装了默认的switch依赖库后,你仍然需要用devkitpro安装一个switch有关的sdl库(具体名字我忘了,我之后再找找补充在评论里)。确保相关依赖库安装完毕后就能正常生成编译文件。

最新版的devkitpro需要在项目的cmakelists.txt里面如下图所示的位置补充一个文件后缀“.elf”,这个编译的原理就是生成一个elf启动程序并结合data.xp3和nacp打包成nro,类似vpk的打包。但因为作者预编译用的版本是"devkitpro/devkita64:20210726",不知道是不是版本区别导致最新版devkitpro在编译时不补充“.elf”的文件后缀内容到编译命令部分就不能正常编译完成。

最后生成的是krkrsdl2.nro插件,同理已经打包了一个示例data.xp3进去。但目前最新版本krkrsdl2编译的nro都不能在Atmosphere上正常运行,希望有大佬能帮忙修复看看,这样ns上也能尝试移植krkr游戏了。


  • 4.android平台

    在项目文件夹的底下有一个android-project文件夹,编译打包前你需要将必要的xp3文件放在android-project/app/src/main/assets文件夹底下。除此外你还需要配置安装temurin JDK17,但这个JDK的发行版我没有详细研究过它的安装使用。如果有大佬知道怎么安装temurin JDK的可以在评论区分享一下,以及Android版本的编译过程和使用效果,我暂时还没试过编译这个平台不太清楚。

  • 5.web端

    由于我不太熟悉WebAssembly平台的编译及使用,这里就简单讲讲web端的krkrsdl2网页怎么用。首先将游戏必要的xp3文件放置于编译出的wasm等文件所在的同一文件夹底下

接着,由于主流的浏览器(如Edge、Chrome等)在本地加载如WebAssembly之类的本地文件时会引起跨域问题,如果你需要本地调试web端的krkrsdl2,不推荐直接以本地文件打开网页,而是建立一个本地测试服务器通过localhost去访问网页,类似的教程:developer.mozilla.org/zh-CN/docs/Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server。

当然你仍然可以使用别的可能没有访问本地文件跨域限制的浏览器去进行打开调试,一般页面卡在preparing(或者通过F12的控制台查看到发生XMLHttpRequest问题)都有可能是跨域问题。


  • 其他

    默认编译的krkrsdl2是并没有开启全部功能的,这些功能在cmakelists.txt如下图所示,你可以通过修改ON/OFF来开启这些功能,但并不能保证开启别的功能后在编译过程中会不会出现问题,因为这个项目仍然还在缓慢更新中,如果有了解krkrz内核的大佬或许也可以尝试自行添加额外的功能。

需要补充的是,目前krkrsdl2移植的krkrz是一种为移动端设计的,只能使用专门的KAG3编写运行,不同于PC上常规的krkrz游戏使用的KAG3,作者提供了一个修改过的KAG3模板和演示示例,相关链接地址:

github.com/krkrsdl2/kag3

github.com/krkrsdl2/krkrsdl2-kag3-demo

在krkrsdl2这个对应的Github条目中也有很多关于krkrz的编写工具和示例,这里就不一一介绍了,感兴趣的请自行研究:github.com/krkrsdl2

目前我所了解的就是以上这些平台的编译和使用过程,当然个人能力有限,并不能把所有的都讲的面面俱到,也欢迎各位想要尝试移植的朋友们在评论区(或在贴吧:tieba.baidu.com/p/8533466994)提出疑问,我会尽可能的尝试解答,更欢迎有大佬能解答讲解别的平台编译和使用过程,能够将这个多平台的项目完善发展下去。

[教学][krkrz多平台] Kirikiri SDL2的评论 (共 条)

分享到微博请遵守国家法律