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被确认为arm64
和x86
都可以修复。
如果你不会自己编译项目
你可以:
- 等待这个
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文件直接随着项目分发的。甚至出现过由于beatoraja
的mocha ir
是闭源的导致在官网发布的依赖版本比开源的项目里的版本更高的事情。这其中有某些依赖是x86
限制的,所以目前使用了arm64
芯片的新mac用户如果使用一个arm64
版本的jdk
去运行beatoraja
会直接因为架构不兼容抛出异常。所以社区里普遍认为的解法是下载一个x86
的jdk
去运行转译,这的确能正确地启动,但是游戏会直接无法播放任何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仍然没有被合并。