大家好,我想在一个被闪闪发光、超现实图像和无法实现的视觉标准所占据的世界里,分享一个想法。在社交媒体上,我们被短视频所喂养,而这些视频是由刚性算法管理的,根本没有给我们选择的空间。想象力已经失去了地位。闭上眼睛,听着,脑海里想象一个故事,已经成为一种失落的艺术。回想起我年轻时的经历,作为一个爱好者在MUDs中玩耍,甚至更早之前,我沉迷于纸质游戏手册——这两者都对这个项目产生了很大的影响。在我自己的小小方式里,我希望这个项目能带来人们回到过去: 想象,梦想。 从今天的无休止的代码、数据库模式和服务器架构中脱身,我想谈谈“为什么”。我真正的梦想让我晚上工作到深夜。 我不想创造另一个固定的、无菌的游戏,所有东西都是静态的。我想创造一个充满 生机勃勃的混乱 的宇宙。一个世界里,没有什么是不可改变的,但一切都在不断变化。 我想创造一个现实,所有东西,无论是每一片草地还是每一个NPC,都有一个故事要告诉。一个地方,非玩家角色不仅仅是重复着台词的纸板模型,而是梦想着、策划着、攀登着社会阶梯,或在一个不断演变的模拟经济中走向毁灭。 在另一边的屏幕上,我想创造一个空间,不仅仅是被动的消费者。 我想创造一个世界,让你必须想象,让你真正地倾听,让你成为一个创造者自己。 # 服装服务器和午夜的冰封 有一种美丽而又令人沮丧的讽刺在这里。虽然我花时间设计一个持久的、不朽的数字宇宙,建立在想象力上,但现实世界的家用硬件总是提醒我,谁才是真正的掌控者。像照片中一样,你可以看到我的专用小型PC服务器运行整个生态系统(Java引擎、Postgres with pgvector和本地GGUF模型)。为了将其隐蔽起来,它被放置在我的外套柜里,紧紧地夹在两个无线路由器之间,周围是冬季外套。最近,这个“混乱”主题已经被过度地实践: 系统在午夜时完全冻结。 我最初责怪了冬季外套导致的热量限制,但我刚刚发现了一个滑稽的真相:我的家庭路由器自动在凌晨2:30到6:30之间禁用互联网访问。当连接断开时,容器化服务,如Cloudflare Tunnel,进入了一个无休止的重新连接循环。它们会在每秒钟内产生数千个错误,完全阻塞磁盘I/O和冻结整个CPU,直到早上。 # 如何一个异步架构拯救了这一天 这个家用基础设施的噩梦促使我让整个架构变得更加轻量和更具韧性。我最近使用 RabbitMQ 将我的项目 Homer 的整个游戏循环分离开来,使其异步和事件驱动。Java游戏引擎和RAG模块(也使用Java开发)不再直接通信。相反,消息被放入两个不同的队列: * 请求队列:从引擎到RAG。 * 响应队列:从RAG返回到引擎。 当引擎需要一些东西时,它会将消息放入请求队列。RAG读取它,使用本地LLM模型进行处理,处理完成后,将结果放入响应队列。RabbitMQ作为一个持久的缓冲区,安全地保存所有世界生成任务,即使网络完全断开。 # 最终目标 所以,完全诚实地说,我长期的梦想不仅仅是关于代码。我的秘密希望是,这个项目最终会带来一些收入,使我能够升级到一个更强大的服务器。并且,让我们面对现实,可能需要开始积蓄实际的离婚文件,因为我的妻子很可能会注意到,一个本地LLM在24小时内在柜子里运行所添加的电力账单。 🤣 我在 Patreon 上所有的开发日志都是免费的,因为我想与任何对这个开源开发之旅感兴趣的人分享。 我将在评论中留下免费开发日志的链接。感谢阅读,大家。下次见!