以撒局域网联机MOD 开发日志 一

国庆期间,自己心血来潮,让ai做了很多以撒的mod,其中第一期视频 【以撒】假如所有道具变成圣心并且攻击倍率可以叠加 获得了1w多的播放量,还挺开心。于是又做了好几个mod,虽然不达预期但是还是挺好玩的。

于是就想着,为什么不做一个联机mod,来替代原版的联机呢?

立项

原版联机有几个问题我不太能接受:

  1. 帧同步,一个人卡大家都卡,延迟敏感,稍微一点延迟就会非常卡
  2. 不能分房间探索,必须要所有人一起探索一个房间
  3. 不能使用mod

为了解决这几个问题,准备做一个局域网联机mod,目标是:

  1. 使用局域网联机,保证联机流畅度
  2. 允许使用mod,并且提供相关的 网络API 给其他mod接入。
  3. 允许分房间探索,不必所有人在同一个房间探索。

所以就创建了,Isaac Lan 项目。

开发过程

项目基本所有东西都由Codex开发,使用 gpt-6-Astra 搭架子,使用gpt-6-Sol 干其他的活。每一个工作都会和他聊详细的方案设计,还有一些取舍,整个过程其实并不是很顺利,遇到了很多麻烦的点。

帧同步?还是状态同步?

这个是最早遇到麻烦的东西。

最初和gpt-6-Astra聊的时候,希望是走帧同步的方案。这有很多好处,实现简单,而且游戏也是帧同步做的。于是最初直接就写了一版帧同步的代码,但是实机体验下来,非常非常差。

关键点我觉得在于我对issac这款游戏的不了解。当我想达成第三个目标,分房间探索的时候,基本上已经注定了帧同步是不行的(只是我当时的想法,我做到现在这个情况有点怀疑是不是应该用帧同步了……)

这个游戏影响随机数的地方很多,即便是场景中火苗、墙壁上的虫子 数量都会影响随机数,于是两个人在不同房间的时候,经常对不上状态(我当时知道这个事情的时候,人都惊呆了)

于是最终还是选择了状态同步,由主机运行逻辑,把主机的房间状态等同步给客机,客机只做表现。

但是状态同步也是非常非常麻烦,由于以撒在设计的时候就没有考虑过状态同步的事情,导致状态非常复杂,要一个一个剥离,过程及其痛苦也非常容易漏同步状态(比如 副手道具、药丸效果等等)

还有一些道具兼容的问题,比如 蓝地图是否两个人都同步生效?迷失诅咒效果是否同步等等。最终这些只能一个道具一个道具兼容,还有角色也是一样的逻辑。

分房间探索

游戏引擎原本并不支持分房间探索功能,为了达到这个目标,要重写Isaac的房间逻辑,这时候就感叹AI真牛逼,反编译+重写,甚至代码中还有汇编代码,都可以很轻松做到。

但是分房间探索也一直有一些问题,主要是道具兼容上。比如后悔药这种道具,如果使用了,所有人是回到哪一个状态?其他的主要都卡在动画上,其他人看动画了,另一个人触发什么效果比较合适?(卡住?一起看动画?还是自由行动?)

总之有非常多琐碎的问题每天都折磨着我。

其他

项目刚开发那段时间,基本上就是每天凌晨3点左右休息,每天熬好久(开发时候电脑太吵了基本睡不着)。当时最直观的感受是,我是不是要猝死了(

好在后面发到小黑盒的时候,有好多人喜欢并来体验这个东西,还挺意外的,但是感谢你们的喜欢,后续要努力把这个mod做成一个以撒的联机框架。

以后还有挺多可以聊的关于这个mod,先记录这些。