注意 - Lost-MSth/Arcaea-server GitHub Wiki
游戏机制
PTT 计算
PTT 的计算主要是参考 Arcaea 中文维基,但由于 Recent30 的计算方式不明朗,可能导致与官方的 PTT 不一致,见谅。
Recent 30 计算规则
维护一个队列,从左边进右边出,以下是一些规则:
- 若 30 首未满,则新成绩从左边进队列,全体右移
- 若新成绩的加入导致歌曲总数小于 10,则从右边开始向左寻找一个成绩,使 Recent30 刷新后歌曲种类数大于等于 10,若找不到,则退出最右边成绩;否则,退出找到的元素,并右移,把新成绩放在左端
- EX 成绩、Hard 模式 Track Lost 成绩以及初见成绩会得到保护,若 Recent30 的改变会降低 PTT,则维持 Recent30 不变,并且若此成绩高于 Recent30 内同样铺面的成绩,会从最早的记录开始进行刷新
定数表
歌曲数据库来自 BotArcAPI releases, 若缺少某些歌曲,服务器会认为歌曲 Unranked,评分默认设为 0 并不计入 Recent30,请自己在数据库里添加某些歌曲的定数,当然可以添加自制铺面定数。
世界排名
以歌曲数据库里所有曲目的 FTR 和 BYD 谱面定数大于 0 的用户谱面最高分数和作为依据
搭档角色
- 解锁了所有角色,并且设定在满级觉醒状态
- v1.5 以后添加了角色技能
- v2.5 以后完善了角色系统,包括升级、觉醒等机制
世界模式
从 v1.3 版本开始,世界模式可用,而且允许自定义地图
因为数据缺少,给出的地图并不多,可以自行抓包添加。在 event 章节给出了几个自制的循环地图,可以作为参考
注意事项
- 地图配置必须无误,可以参考官方图进行制作
- 最后一格必须有奖励,否则可能导致 Arcaea 崩溃
- 如果是歌曲解锁奖励,请保证 Arcaea 中拥有这些曲目,否则可能导致 Arcaea 崩溃
- Beyond 地图与其它图有所不同,请参考官方图,多加小心
歌曲解锁
- 从 v1.3 开始会尝试提前进行一些解锁,但不保证全部解锁
- 从 v1.7 开始购买系统上线
- 对于其它歌曲使用云端存档同步可以解锁
歌曲下载
从 v1.4 开始可以进行自定义的歌曲下载
- 请确保文件名正确,文件完整
- 请确保存在所需的所有文件,所有缺少的难度铺面和歌曲文件
- 对于以整个曲包来下载的情况,需要准备好曲包内所有歌曲的缺失文件
- 谱面文件可能有最小物量,物量太少的铺面无法下载
- 服务器运行期间对歌曲文件夹内容进行修改后,请在后台刷新歌曲谱面Hash信息
- 禁止在下载非官方铺面后登入官方服务器上传铺面成绩,若被封号,概不负责
登录与注册
注册的时候不会考虑邮箱地址,请随便填写。
从 v2.4 开始,邮箱地址会被记录并排重,但仍然不会去检查邮箱可用性。
多设备登录
从 v2.2 开始支持多设备登录,但请尽量不要使用,以免产生各种奇怪问题
多设备登录也包括相同设备的多应用共存登录
数据同步
- 服务端支持数据同步且不做数据检查,完全允许从官方服务器下载数据后上传至本地服务器
- 后台允许将云存档覆盖到 best_score 表中,上传会直接覆盖 Best 成绩表,且没有 Recent30 数据,所以更新的 PTT 会不准确
- 数据下载也是支持的,但请不要将数据向官方同步,若发生封号,概不负责
购买
没有用。记忆源点默认 114514。
从v1.7开始购买系统上线,且支持修改一些信息,比如价格和折扣,记忆源点默认 0
奖励系统
从 v1.9 开始添加了奖励系统,允许在后台设置一些奖励,虽然看起来没啥用
- 奖励描述请精简,太长了在客户端会无法显示完整
- v2.6 以下奖励只支持记忆源点和碎片
- 曲包奖励会导致客户端闪退
- 奖励物品中只有第一条会被客户端处理
- 过期的奖励不会分发
- 奖励在登录时领取,只能领取一次
兑换码系统
从 v2.0 开始添加了兑换码系统,允许在后台设置一些奖励,虽然看起来没啥用
- 兑换码目前不会过期
- v2.6 以下奖励只支持记忆源点和碎片
- 奖励物品都会被处理
目前,客户端似乎没有反馈,但奖励物品能被服务器正确处理
剧情
当使用全解锁云端存档时,同步时若是从服务器下载,会默认全部解锁。(大概)
好友系统
- 正常使用,默认好友位 50 个。(大概可用)
- 没有对立和光两个默认账户,但是有一个测试账号 admin。(好友ID:123456789)
排名系统
正常使用,但好像没什么用。
Link Play
从 v2.8
版本开始,支持联机模式,可能存在各种奇妙 bug,请谨慎使用
课题模式
从 v2.9
版本开始,支持课题模式
运行与环境搭建部分
服务端
- 运行后请不要点击 CMD 窗口内内容,以免进入选择状态卡住服务器。(按回车键取消选择即可)
- 服务器性能和安全性没有保障,没有经过并发测试,没有经过各种安全性测试,请不要在外网搭建服务器。
当然有一个非常重要的理由是 616 可能会找上门。
- 可能出现端口冲突导致无法使用,请检查所使用的端口。
客户端
- 确保设备与服务器在同一网络下,其实就是能访问到服务器。
- 确保设置好代理,这样 Charles 才能引导 Arcaea 访问本地服务器。
- 安卓 7 以上和 iOS 系统有更加复杂的设定,请参考说明文档和指示。
Arcaea v3.6.0 版本以后,客户端需要做一些更加复杂的设定(你懂的)
服务器建设与程序设计
Flask
HTTPS
Flask 是支持 SSL 的,如有需要,请自行开启。
前端
前端采用 Jinja2 进行设计,当然没有一丁点美化,CSS 文件来自官方模板
为了能兼容各种各样的情况,使用非常原始的网页设计,没有采用前后端分离的模式,一点点 JS 什么的也没有
数据库
为了能兼容各种各样的情况,使用了 SQLite
乱建的数据库,可能有某些地方不妥,不过应该是基本满足 BC 范式的。几乎什么数据约束也没有,没有半个函数和触发器,也没有视图,效率堪忧,安全性等于零。
日志
从 v2.3 开始会记录报错日志,同时可以在配置文件中选择开启更加详细的日志