在mac上玩beatoraja

未分类
1.3k 词

TL;DR

在目前的阶段(2025-04-19),在mac上玩beatoraja是不可能的。目前认为只有两种可行的路径:

  • 下载一个非常早期的oracle jdk8,要求下载的时候仅有x86选项,没有提供arm64选项。同时该方法只能游玩0.8.7及以下的版本,在0.8.8之后要求jdk17后该方法彻底不适用。
  • 使用Endless Dream社区fork的版本,同时需要加上我为其编写的pr代码补丁以支持mac的运行。fork分支地址见这里

以上说法主要针对arm64的mac用户(方法1),但是这不意味着x86的mac用户就可以正常的运行了,见issue838。同时方法2被确认为arm64x86都可以修复。

如果你不会自己编译项目

你可以:

  • 等待这个pr被合并到Endless Dream之后,下载最新的jar文件使用
  • 在这个位置: Release下载一个jar文件,如果你想下载0.3.0需要下载有aarch64后缀的文件,0.2.1下载macos的jar即可。(特别地,如果你是x86用户则没有0.2.1的jar,只能下载0.3.0的不带后缀的macos的jar)。

如果你会自己编译项目

1
./gradlew core:shadowJar -Dplatform=macos [-Daarch=aarch64]

对于arm64的用户需要额外添加-Daarch的参数。

所以,发生了什么?

由于某些不算是很众所周知的原因,beatoraja的依赖管理做得一团糟:他的方式是最古早地将依赖的jar文件直接随着项目分发的。甚至出现过由于beatorajamocha ir是闭源的导致在官网发布的依赖版本比开源的项目里的版本更高的事情。这其中有某些依赖是x86限制的,所以目前使用了arm64芯片的新mac用户如果使用一个arm64版本的jdk去运行beatoraja会直接因为架构不兼容抛出异常。所以社区里普遍认为的解法是下载一个x86jdk去运行转译,这的确能正确地启动,但是游戏会直接无法播放任何ogg文件。也就是说你会体验到没有声音的音乐游戏。

Endless Dream是一个社区fork的beatoraja版本,它基于lr2oraja同时引入了gradle作为项目依赖的管理工具。这就意味着有机会正确地处理mac需要的依赖了,这也是这个代码补丁绝大部分的工作。当然,这个pr没有这么简单,在修正了这个问题之后还有Apple停止了完整的OpenGL支持导致项目启动不了等等兼容性问题,但是不是这里讨论的重点。

macos-fix分支我在这里编写了一个分支保留mac的补丁,通过这个补丁可以在mac上运行Endless Dream

那么,代价是什么?

  • Mocha IR是闭源的,开源项目里不包含其代码实现。你将无法使用它。
  • Endless Dream基于lr2oraja,这个项目将lr2的判定方式等移植了过来。虽然Endless Dream保证了Drop-in Compatebility,但是无法获得完全一致的原版游玩体验。

为什么他还是一个独立的补丁分支?

仓库作者目前很忙,从2024-11至今2025-04这个pr仍然没有被合并。