我用 Spring Boot 写了个「终端风格模拟经营游戏引擎」:引擎 + JSON 游戏文件,开箱即玩

一个用 Java 写的、可以"换一个 JSON 就换一个游戏"的模拟经营引擎,还自带两套完整游戏。
📌 本项目由 AI 生成 · 0 手工编程:整个 TermSim Engine(引擎代码 + 玩法 + 两个游戏文件)均由 AI 大模型生成,作者没有手写一行业务代码。作者负责的是:定义需求、提出玩法、逐版迭代调试与验收把关。这是一次"用 AI 从零造一个能玩的游戏引擎"的真实实践记录。

一句话介绍

TermSim Engine 是一个基于 Spring Boot 3.3.5 + Thymeleaf 实现的终端风格模拟经营游戏引擎。它的核心思路是 引擎 + 游戏文件(JSON)分离:

  • 引擎(Java 代码)提供通用的经营模拟框架------时间 / 四季 / 天气、客流量与购买模拟、NPC 好感与评价、贷款计息、装修解锁、随机事件、声誉漂移、胜负判定、存档系统;
  • 游戏文件(JSON)决定具体的玩法内容------小卖部、饭馆、奶茶店......任何场景都能通过一个 JSON 文件"安装即玩";
  • 界面 是经典 CRT 终端风格:荧光绿文字、扫描线、闪烁光标、启动动画、命令行输入,满满的复古感。

项目开箱自带 「街角小卖部」 和 「街角饭馆」 两套完整游戏,克隆下来 mvn spring-boot:run 就能玩。

为什么想做这个

  1. 想验证"引擎与内容分离"这套思路在游戏里到底好不好用。 商业游戏里策划和程序分工,靠配置驱动玩法;我想在一个小项目里把这件事做到极致------程序不碰玩法,玩法不碰代码。
  2. 终端界面自带一种独特的气质。 荧光绿 + 扫描线 + 命令行,配上经营模拟的"数据流"感,非常契合。
  3. 想做一个"谁都能往里塞游戏"的开放平台。 门槛够低,社区才能长出来。

技术栈

层 技术
后端 Java 17 · Spring Boot 3.3.5 · Spring MVC
模板 Thymeleaf 3
前端 jQuery 3.7.1(WebJar 离线提供)· 原生 CSS/JS
3D 背景 Three.js r128(本地静态资源,离线可用,失败自动降级)
数据 JSON 文件(游戏安装文件 + 存档,无数据库)
序列化 Jackson(snake_case 命名,便于游戏文件作者阅读)
测试 JUnit 5(引擎核心逻辑 62 个用例)

功能亮点

这个引擎在 12 个版本迭代里,把一套模拟经营玩法打磨得非常完整:

基础经营框架

  • 实时时间流:现实 1 秒 = 游戏 1 分钟,支持暂停 / 继续 / 打烊快进 / 时间倍速(0.5×~5×);
  • 四季 × 天气 × 时段影响客流与商品需求(早 / 午 / 晚);
  • 进货、定价、贷款(按游戏日实时计息)、装修解锁新品类、随机事件;
  • 实时终端日志:每一笔成交、每一次随机事件(比如小偷光顾)都会实时滚动到终端,经营过程一目了然。

NPC 与社交

  • 6 位 NPC 街坊:好感度变化 + 评价台词 + 主动社交(闲聊 / 送礼 / 请客,好感 50+ 带客、80+ 宣传);
  • NPC 委托订单:街坊清晨可能下单,按时交货赚溢价 + 好感,逾期则声誉受损。

经营策略层

  • 贸易策略:小卖部可批发回笼现金,饭馆可开通外卖平台(每日自动接单、占厨房产能、评价影响声誉);
  • 雇佣系统:按月薪雇佣员工(自动进货 / 揽客 / 采购让价 / 外卖加成 / 安保保洁),涨薪提效率、降薪可能离职,发薪日现金不足会欠薪跑人;
  • 银行存取款 + 理财:日复利计息,现金放店里会被小偷盯上,存银行更稳;理财产品定期锁定、到期自动兑付;
  • 供应链(v1.10):合作值升级解锁进货折扣(最高 88 折)、赊账进货(30 天账期)、独家高毛利商品。

大系统玩法

  • 地图地产:4 处地段客流量与房价不同,可申请房屋贷款买新地产、迁移店铺(库存自动随店走),每月等额本息还款;
  • 分店系统(v1.9):可开分店(费用递增、需声望门槛),每店库存 / 定价 / 装修 / 雇员 / 选址客流完全独立,现金存款贷款理财为全局唯一账户;
  • 口碑评级(v1.10):按价格分 + 新鲜分 + 服务分每日结算满意度,实时影响客流与客单价;每 30 天评级(街坊小铺 → 街区标杆);
  • 街区竞争(v1.10):竞争对手登场抢客流,玩家可用价格战 / 营销战 / 口碑攻势反击,把对手热度压到歇业可拿「街区称霸」成就;
  • 节日庆典(v1.11):四季各一场应季节日,筹备金换客流加成,闭幕结算战报与回报抽成;
  • 员工培养晋升(v1.11):雇员经验成长 + 忠诚度系统,满级可晋升骨干(全员光环),并从技能池习得永久技能。

其它细节

  • 保质期过期损耗、声誉漂移、净资产胜负判定;
  • 幸运彩票、刮刮乐、实时自动补货(原子扣款无并发无多扣);
  • 个人形象系统(v1.7):装扮、购置车/住宅资产,共同提升个人声望,声望驱动 NPC 主动上门互动;
  • 所有列表(货架 / 定价 / 装修 / 贷款 / 报表 / 贸易 / 雇员 / 街坊 / 成就)分页展示,页面不臃肿;
  • Three.js 3D 终端背景(v1.12):粒子星云 + 网格地平线 + 漂浮线框几何体 + 光晕,垫在 UI 之下不遮挡交互,加载失败自动降级。

架构:引擎与游戏文件分离

bash 复制代码
simulation/
├── pom.xml                    # Maven 构建(Spring Boot 3.3.5)
├── games/                     # ★ 游戏安装文件目录(每个 .json 一个游戏)
│   ├── convenience-store.json # 默认游戏:街角小卖部
│   └── street-restaurant.json # 随附游戏:街角饭馆
├── saves/                     # ★ 存档目录(运行时生成,按游戏分目录)
├── README.md / DESIGN.md
└── src/main/java/com/termgame/
    ├── GameEngineApplication.java
    ├── config/EngineProperties.java   # games/saves 目录配置
    ├── model/def/                     # 游戏定义模型(record,直接映射 JSON)
    └── ...

游戏定义全部用 Java record 直接映射 JSON,命名用 snake_case,写游戏文件的人不需要懂 Java。要做一个"奶茶店"游戏?写一个符合规范的 JSON 放进去就能装、就能玩。

内置游戏

  • 🎮 街角小卖部:26 种商品、批发贸易、4 名雇员、银行 / 委托 / 彩票、4 处地产、6 位街坊、供应链 + 2 个街区对手(默认游戏,开箱即玩);
  • 🍜 街角饭馆:26 道菜、7 级装修解锁菜系、外卖平台、供应链 + 街区对手(苍蝇馆子主题)。

快速开始

bash 复制代码
# 需要 JDK 17+ 与 Maven
mvn spring-boot:run            # 或:mvn -DskipTests package && java -jar target/term-sim-engine.jar
# 打开浏览器
open http://localhost:8899/

想写 / 安装自己的游戏?项目里有完整的 游戏安装文件说明,照着规范写一个 JSON 就能接入。

工程质量

  • 引擎核心逻辑有 62 个 JUnit 5 用例,每个版本迭代都在补齐测试,保证玩法咬合不回归;
  • 纯 JSON 存储,无数据库依赖,clone 下来即用;
  • MIT License 开源,可自由使用、修改、分发与商用,仅需保留版权声明。

项目是怎么来的(AI 生成 · 0 手工编程)

这里得坦白说明:这个引擎不是"人肉敲代码"写出来的,而是完全由 AI 生成的项目。

  • 0 手工编程:引擎的 Java 代码、玩法逻辑、Thymeleaf 模板、前端样式、两个 JSON 游戏文件,全部由 AI 大模型生成,作者没有手写一行业务代码;
  • 作者的"编程"工作是定义与把关:提需求("我要一个终端风格的小卖部经营游戏")、规划玩法(NPC 社交、雇佣、供应链、分店、街区竞争......)、逐版本迭代调试、写 62 个引擎测试并验收;
  • 这不是玩具 :项目经过 12 个版本迭代(v1.0 → v1.12),沉淀了分店系统、供应链、口碑评级、街区竞争、节日庆典、员工晋升等完整玩法系统,且有 JUnit 测试保障,说明 AI 已经能协作产出"可运行、可扩展、有工程规范"的完整游戏引擎。

把这件事写出来,是想分享一个真实结论:AI 编程的边界,远比你想象的大------只要需求拆得够细、迭代跟得够紧,一个"零手写代码"的项目也可以长得很大。上面的全部内容就是最好的证据:从引擎到游戏,都是 AI 写的。

写在最后

这个项目的乐趣在于:它既是引擎,又是作品集。你可以直接玩,也可以照着规范写一个属于自己场景的模拟经营游戏,甚至把引擎当成练手 Spring Boot + Thymeleaf + jQuery 的完整示例。

欢迎 Star、提 Issue、贡献游戏文件,或者直接把它改成你的下一个想法。

项目地址:gitee.com/itsunhao/te... (TermSim Engine) 许可证:MIT License

相关推荐
y1su1 小时前
Leetcode 动态规划 模板
java·数据结构·算法·leetcode·动态规划
Wang's Blog1 小时前
Java 项目实战: 交友项目 - JWT 概述:为什么要用 Token 换掉 Session
java·ui·交友
SL_staff2 小时前
低代码选型避坑指南:为什么‘能拖拽’不等于‘能交付’?——基于JVS八大引擎的四维交付能力评估框架
java·低代码·spring cloud
李福春2 小时前
技术思考问题6:技术演讲该晒成功架构,还是交代失败与取舍?
java·开发语言·架构·computer use·深圳同盟·腾讯云架构师技术同盟·反演思维
用户7771298509123 小时前
equals和==的区别
java
旋律4143 小时前
对封装、继承、多态三个概念理解
java
code2cat3 小时前
【随笔】LLM裁判如何打分:先写评分标准,再用人工案例校准
java·人工智能·llm·agent·评估·langsmith