GTA San Andreas with AI(SAAI),将大语言模型(GPT)、TTS、SOVITS整合进入圣安地列斯,使用真正的AI控制NPC的行为、语音。
开发环境:Windows11 工具链:Cmake + MSVC
前端(Plugin):[SAAI.Plugin] ASI插件
后端(Server):[SAAI.Server] 本地服务器
持续迭代中…
v1.5开发计划:
- 行为管理模块:控制NPC的更多行为和复杂任务
- 语境生成器Plus:生成更加复杂的语境信息
- 行为生成器:给NPC的行为接AI,需要至少一个Buffer来消除延迟,可能与内容生成器合并
- AI行为模型:用操作词的方式约束AI的回答
- 智能刷新:与行为管理相似,管理NPC的自然刷出
- 语音输入:接受玩家指令,不知道1.5能不能做这个,可能放到再后面
为CPed的AI类书写一切可用的NPC行为API:
- 加入主角队伍(已完成)
- 说话(已完成)
- 离开主角队伍
- 逃跑
- 追杀某人
- 设置血量、死亡等
- 去往某地,开车或步行
- 开车撞什么,开多快
- 上主角的载具
- 驾驶载具
- 设置武器
- 做基本动作,跳、跑、走、蹲等动作
- 做复杂动作,支持ped通用动作、cutscene动作、导入自定义ifp,要参考SA Mission Maker Remake?
- 各类游逛逻辑
- 游泳?
将当前能收集的一切用户输入和游戏内状态集成到统一的Context对象:
- 作弊码(已完成)
- 语音输入
- 主角行为,打了某人,开着什么车,开车到了某处,步行到了某处,撞了某人某物,上了什么车,拿枪指了谁,有没有掉血,有没有吃到吐等…
- 要行动的NPC(需要根据其他状态来决定这个值)
- 环境行为,天气、附近的事件、发生了枪击爆炸撞车堵车等
- 剧情推进度
根据当前收集到的Context,询问AI目前该做什么,将AI的回答约束为定义好的行为模型指令,一一对应到前述的AI行为API。输出格式化:“谁要干什么”
这一步AI是否能做到合理的决策有待实验,是否设计状态机/状态树有待考虑。
是否单独做成一个模块有待考虑,目的是取消掉过于无脑的作弊码刷人逻辑,可以让主角打个电话叫人开车过来,也可以随机地出现在某个地点自动跟主角打招呼之类,理论上可以根据语境触发,然后接上行为管理,但是肯定需要另外的Spawner来先刷出这个NPC,从而执行行为。
再开一个语音转文本的本地服务器,收集用户语音输入。将收集到的文本传给插件这边对应的Client模块,Client需要一个Buffer保存最近的文本指令,每次给语境生成器一个文本指令。
联系开发者:B站_Cyber蝈蝈总