给AI装上游戏眼睛:Neuro-sama Among Us AI插件从数据录制到神经网络的完整链路
给AI装上游戏眼睛:Neuro-sama Among Us AI插件从数据录制到神经网络的完整链路
【免费下载链接】neuro-amongusAmong Us Plugin for Neuro-sama项目地址: https://gitcode.com/gh_mirrors/ne/neuro-amongus
如果你是《Among Us》玩家、关注AI VTuber动态的技术爱好者,或者正在寻找一个"把真实游戏数据喂给神经网络"的开源案例,那么 Neuro-sama Among Us 插件值得你花十分钟了解一下。这个开源项目不只是一款游戏模组,它更是一套完整的"AI游戏能力流水线":插件在游戏内持续录制局面数据,通过本地网络转发给Python端,神经网络基于这些数据输出移动与操作指令,再驱动游戏角色实时行动。简单说,它让AI从"看别人玩"变成"自己上手玩"。
先说痛点:为什么大多数AI玩家"不会玩"游戏
很多"AI玩游戏"的Demo其实只做了两件事:截图识别加预设脚本。它们换一张地图、换一局任务就失灵,因为AI从不理解"现在发生了什么"。
而《Among Us》这类社交推理游戏更难:玩家位置是实时变化的、任务点分散在地图各处、还要区分内鬼与船员的不同玩法。想让AI真正"会玩",首先要解决一个底层问题——如何把游戏里的一帧画面,变成机器能读懂的、结构化的数据。这就是本项目第一个设计目标。
一条从游戏到大脑的数据流水线,拆开看只有四层
这个项目的整体思路可以概括成一句话:游戏产生数据,数据训练模型,模型反哺操作。整条链路分四层,每一层都有对应的源码目录。
第一层:录制层,把"看到的"变成"能存的"
插件启动后会创建一个本地录制目录,把每局游戏的局面写入带时间戳的.gymbag2文件(Neuro/Recording/Recorder.cs)。录制不是简单地截屏,而是分类采集结构化的信息:
- 地图结构:门、通风管的位置(
Neuro/Recording/Map/) - 玩家状态:你的位置、速度、是否在管道中(
Neuro/Recording/LocalPlayer/) - 其他玩家:最后一次被看到的位置(
Neuro/Recording/OtherPlayers/) - 任务进度:任务点、当前破坏事件(
Neuro/Recording/Tasks/) - 尸体信息:发现尸体、报告事件(
Neuro/Recording/DeadBodies/)
打个比方:录制层就像给AI配了一名"战地记者",每秒钟汇报一次"场上有谁、在哪、在干什么",而不是丢给它一段无法解析的视频流。
第二层:传输层,让数据实时抵达AI大脑
如果只录不传,AI还是玩不了。项目在Neuro/Communication/AmongUsAI/里实现了基于 WebSocket 的本地通信(CommunicationHandler.cs),把录制的帧数据实时推送给外部的AI进程。所有消息都通过 Protocol Buffers 协议序列化——每一帧的数据结构在.proto文件中定义,游戏中录制端和Python端用同一套"语言"对话,互不误解。
这里有一个设计上的巧思:本地WebSocket优先,本地文件兜底。有AI进程连着就实时传输,没有就连着就退回到写文件,训练数据依然不丢。
第三层:训练层,让神经网络学会"看局面"
这是整个项目最"硬核"的部分,集中在AI/目录。Python端先把录制的原始帧转换成定长的特征向量(AI/data/),再交给模型训练。
值得留意的是AI/nn/model.py中的两个模型设计:
- 一个基础的全连接网络,适合快速验证"数据能不能学出东西"
- 一个 LSTM 循环网络,利用时间序列记忆,理解"角色连续几帧的移动意图"
训练流程写在AI/train_model.py:加载数据集、切分训练集与验证集、逐epoch输出loss。如果你手头有显卡,还可以直接享受CUDA加速;没有的话,CPU也能跑通整个流程,只是慢一些。
第四层:执行层,把决策落成游戏操作
模型输出的不是"往前走三步"这种脚本指令,而是移动方向和动作倾向。Neuro/Movement/MovementHandler.cs负责把决策转化为真实的位移,并且内置了"卡住检测":如果角色超过一秒没挪窝,就自动触发脱困逻辑,避免AI在墙角原地发呆。
遇到小游戏时,项目则走"程序化求解"路线:Neuro/Minigames/Solvers/下内置了50多个求解器,比如修电线(FixWiringSolver.cs)、校准分配器、启动反应堆等,每个求解器通过模拟鼠标移动与点击来完成小游戏,与神经网络的分工各司其职。
三分钟让AI先学会"看"游戏:安装与首次运行
别被上面的架构吓到,实际跑起来只需三步:
- 装好运行环境:为《Among Us》安装 BepInEx 与 Reactor 两个前置模组,再准备 .NET 6.0 SDK,这是编译插件的基础。
- 编译并部署插件:用 Visual Studio 或 Rider 打开项目解决方案,把编译产出的 Neuro.dll 复制到游戏目录下的
BepInEx/plugins文件夹。也可以像官方建议那样,在Neuro/Neuro.csproj里直接配置输出路径,每次编译自动进游戏目录。 - 启动游戏:进入对局后,插件自动开始录制,
NeuroRecordings目录里会陆续出现.gymbag2数据文件。
第一次运行建议只用"录制模式":让AI先积累几局数据,同时用AI/play_test.py、AI/convert_file_test.py这类测试脚本验证录制数据能否被正确解析。先确认数据通,再谈训练模型,这是最稳妥的上手路径。
进阶玩法:把Neuro的训练数据"接手"到自己手里
项目的另一个开放价值在于:它把"采集-训练-推理"整条链路都开源了,你可以完全用自己的数据重训模型。
具体来说,跑通AI/train_model.py就能完成一轮完整训练,训练脚本会自动把数据集缓存成.pkl文件,二次训练无需重新解析原始录制。如果觉得从头训练成本高,AI/finetune_model.py支持在已有权重基础上微调,适合针对特定地图或特定玩法做定向增强。
想观察训练效果,AI/visualise.py可以把模型在局面上的输出可视化出来——它直观到什么程度呢?你甚至能看到模型在不同局面下"打算往哪走"。而AI/rename_recordings.py这类小工具则帮你管理原始录制文件,避免数据越攒越乱。
调试不是黑盒:插件自带一套"可视化手术台"
项目在Neuro/Debugging/里藏了一个非常实用的调试窗口(DebugWindow.cs),按不同主题拆成了多个标签页:对局信息、任务状态、破坏事件、录制回放等一应俱全。你可以一边开着游戏、一边观察插件内部到底在做什么。
遇到AI行为异常时,建议按这个顺序排查:
- 先查数据:录制帧是否完整,是否包含地图、任务、尸体等关键字段
- 再查模型:训练loss是否收敛,验证集表现是否正常
- 最后查执行:用小游戏求解器调试页和移动调试页,看指令是否被正确执行
这种"分层排查"的思路,也是这个项目值得学习的地方——它把AI游戏的复杂度拆解成了可观测、可复现的模块。
写在最后:这个项目最适合谁
如果你想快速体验"AI玩Among Us",克隆项目后按上面的步骤装上插件即可;如果你想研究"如何用真实游戏数据训练游戏AI",那它的价值更大——从数据采集协议到神经网络结构,再到游戏内执行与调试工具,每一步都有可读的开源实现。
动手建议:先让插件跑几局游戏、积累数据,然后跑一遍训练脚本,你会亲眼看到loss曲线下降、模型逐步学会移动。从"录制数据"到"模型动起来"的完整闭环,就是本项目最好的学习入口。如果你对AI游戏开发感兴趣,不妨直接从它的AI/与Neuro/Recording/两个目录读起。
【免费下载链接】neuro-amongusAmong Us Plugin for Neuro-sama项目地址: https://gitcode.com/gh_mirrors/ne/neuro-amongus
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
