写在前面的话:
今年年初斯坦福和谷歌的研究人员创建了一个类似于《模拟人生》的微型 RPG 虚拟世界,其中 25 个角色由 GPT 和自定义代码控制,并在arxiv上提交了论文版本,引起了对AIGC+游戏的广泛讨论;
8月,该项目在GitHub上正式开源,虽然新闻报道依旧很多,但对技术和实现方法的讨论比较少,截止目前国内网站只看到知乎上有一位大神的专栏有相关概念及生成流程的解读,本文也会引用该作者一些分析
本文将从架构和实现原理的角度探讨,项目是如何驱动 Agents 做出决策的,欢迎大家一起交流和学习
PS: 目前还有一个AI小镇Plus版本的AI-Town项目也在GitHub上开源了,其可扩展性更高,笔者有其他文章介绍该项目
整体架构
该项目的环境为 Python3.9.12,游戏逻辑由 H5 引擎 Phaser3 开发,后端用 Django 作为服务器提供 Web 服务
如下图所示,由于“游戏”本身并不存在用户操作,所以 H5 的页面仅供展示使用;
Main Loop 即驱动 Agents 做出决策的主循环,以时间为 step,通过用户命令行输入的 step 来决定进行多少步的运算(注意:这里前端并不是实时同步展示运算结果的),并将运算的结果发给 Web Server 再展示到前端;
整个架构的链路并不长,用户需要自行维护的东西也很少,将项目“跑”起来是件很容易的事情,但这也侧面说明了项目的可扩展性和自由度并不高
运行方式
Web服务
首先是一个基于 Django 的后台 Server,运行 environment/frontend_server
目录下的
python manage.py runserver
运行成功后记得设置在后台常驻,该进程为整个AI小镇的运行环境,如果关闭则无法运行后续步骤
该命令启动成功后,即可在浏览器中访问 Django 设置的网址,看到整个小镇的初始化界面
注意:打开该页面的TAB最好保持在桌面,不要最小化或者隐藏,如果检测到该TAB页不在active状态的话,会卡住后台计算的进程
Simulation Server
前面启动的Web服务实际上只提供了一个默认的沙盒环境,这个环境是静态的,当Agents的行动轨迹更新后才会进行展示,所以这一步启动的是产生并向智能体发送指令的程序,项目里将其称为 Simulation Server
运行该程序,需要在 reverie/backend_server 目录下运行
python reverie.py
该进程是阻塞式的,受用户输入驱动,一般分为两个步骤: