以撒局域网联机MOD 开发日志 一
国庆期间,自己心血来潮,让ai做了很多以撒的mod,其中第一期视频 【以撒】假如所有道具变成圣心并且攻击倍率可以叠加 获得了1w多的播放量,还挺开心。于是又做了好几个mod,虽然不达预期但是还是挺好玩的。
于是就想着,为什么不做一个联机mod,来替代原版的联机呢?
立项
原版联机有几个问题我不太能接受:
- 帧同步,一个人卡大家都卡,延迟敏感,稍微一点延迟就会非常卡
- 不能分房间探索,必须要所有人一起探索一个房间
- 不能使用mod
为了解决这几个问题,准备做一个局域网联机mod,目标是:
- 使用局域网联机,保证联机流畅度
- 允许使用mod,并且提供相关的 网络API 给其他mod接入。
- 允许分房间探索,不必所有人在同一个房间探索。
所以就创建了,Isaac Lan 项目。
开发过程
项目基本所有东西都由Codex开发,使用 gpt-6-Astra 搭架子,使用gpt-6-Sol 干其他的活。每一个工作都会和他聊详细的方案设计,还有一些取舍,整个过程其实并不是很顺利,遇到了很多麻烦的点。
帧同步?还是状态同步?
这个是最早遇到麻烦的东西。
最初和gpt-6-Astra聊的时候,希望是走帧同步的方案。这有很多好处,实现简单,而且游戏也是帧同步做的。于是最初直接就写了一版帧同步的代码,但是实机体验下来,非常非常差。
关键点我觉得在于我对issac这款游戏的不了解。当我想达成第三个目标,分房间探索的时候,基本上已经注定了帧同步是不行的(只是我当时的想法,我做到现在这个情况有点怀疑是不是应该用帧同步了……)
这个游戏影响随机数的地方很多,即便是场景中火苗、墙壁上的虫子 数量都会影响随机数,于是两个人在不同房间的时候,经常对不上状态(我当时知道这个事情的时候,人都惊呆了)
于是最终还是选择了状态同步,由主机运行逻辑,把主机的房间状态等同步给客机,客机只做表现。
但是状态同步也是非常非常麻烦,由于以撒在设计的时候就没有考虑过状态同步的事情,导致状态非常复杂,要一个一个剥离,过程及其痛苦也非常容易漏同步状态(比如 副手道具、药丸效果等等)
还有一些道具兼容的问题,比如 蓝地图是否两个人都同步生效?迷失诅咒效果是否同步等等。最终这些只能一个道具一个道具兼容,还有角色也是一样的逻辑。
分房间探索
游戏引擎原本并不支持分房间探索功能,为了达到这个目标,要重写Isaac的房间逻辑,这时候就感叹AI真牛逼,反编译+重写,甚至代码中还有汇编代码,都可以很轻松做到。
但是分房间探索也一直有一些问题,主要是道具兼容上。比如后悔药这种道具,如果使用了,所有人是回到哪一个状态?其他的主要都卡在动画上,其他人看动画了,另一个人触发什么效果比较合适?(卡住?一起看动画?还是自由行动?)
总之有非常多琐碎的问题每天都折磨着我。
其他
项目刚开发那段时间,基本上就是每天凌晨3点左右休息,每天熬好久(开发时候电脑太吵了基本睡不着)。当时最直观的感受是,我是不是要猝死了(
好在后面发到小黑盒的时候,有好多人喜欢并来体验这个东西,还挺意外的,但是感谢你们的喜欢,后续要努力把这个mod做成一个以撒的联机框架。
以后还有挺多可以聊的关于这个mod,先记录这些。