目 录CONTENT

文章目录

用AI从零开始写游戏

过客
2026-05-07 / 0 评论 / 1 点赞 / 2 阅读 / 0 字

大家都说用OpenClaw和Hermes等AI工具可以写代码写游戏,但这也不是网传的那么简单,一句话帮我写一个xxx游戏AI就可以直接完成的,它写出来的可能不是你想要的,除非是一些超级简单的游戏(如:贪吃蛇,2048这种)。稍微复杂的游戏或项目,核心还是你自己要有清晰的想法和迭代意愿,AI是超级助手,不是全自动工厂。设计文档比代码重要,我们先要确定自己想要什么,完善好游戏设计文档

一、写游戏设计文档

先确认好游戏类型,写一个极简的游戏项目文档,可以让AI给个文档模板,或直接让AI以询问问答的方式来一起完成,IA会写先理个模板,让要需要你填写的部分以选择或询问的方式问出来,回答完成后可以让AI生成一份游戏项目文档了。

写一个2D肉鸽游戏,用引导询问的对话方式,帮我完成游戏设计文档

二、游戏项目文档

根据AI完善的游戏项目,并保存到本地文件中,基本包含以下内容:

1. 项目基础信息

  • 游戏类型:第三人称射击+肉鸽(Roguelike)
  • 核心玩法
    • 1~4人组队进入随机生成的地牢关卡
    • 玩家控制角色在固定视角内移动和射击,每层清怪→选技能/遗物→下一层→Boss战→结算
    • 肉鸽核心:随机关卡生成 + 获得金币/随机奖励 + 单局死亡重开
    • 单局时长:15-30分钟
  • 技术栈​:
    • 服务端:Go 1.26.2+(gorilla/websocket),登录用HTTP,游戏内用WebSocket
    • 客户端:Cocos Creator 3.8.x + TypeScript
    • 通信协议:Protobuf + WebSocket(二进制帧)
    • 存储:PostgreSQL(业务数据)+ Redis(在线状态/房间缓存)
    • 部署:Docker分离部署
  • 目标​:商业化,首期交付可运行Demo(支持4人联机+2层地牢+3种技能)

2. 服务器架构设计

采用分阶段演进策略,先单进程跑通,再按需拆分微服务:

2.1 两个阶段的架构图

阶段 1(Demo版):单进程 monolith

┌──────────────────────────────────────┐
│           GameServer (单进程)         │
│  ┌─────────┐  ┌───────────────────┐  │
│  │ HTTP    │  │ WebSocket Handler │  │
│  │ (登录)  │  │ (游戏逻辑)         │  │
│  └─────────┘  └───────────────────┘  │
│  ┌─────────────────────────────────┐ │
│  │ RoomManager (房间管理/内存)      │ │
│  │ BattleLogic (战斗结算)           │ │
│  │ DungeonGenerator (关卡生成)      │ │
│  └─────────────────────────────────┘ │
│  ┌─────────────────────────────────┐ │
│  │ PostgreSQL (持久化)              │ │
│  │ Redis (在线状态/房间缓存)         │ │
│  └─────────────────────────────────┘ │
└──────────────────────────────────────┘

阶段 2(上线版):按需拆分微服务

┌──────────┐     ┌──────────┐     ┌──────────┐
│ LoginSrv │     │ GateSrv  │     │ GameSrv  │
│ (HTTP)   │────>│ (WS网关) │────>│ (大厅)    │
└──────────┘     └────┬─────┘     └──────────┘
                      │           ┌──────────┐
                      └──────────>│ RoomSrv  │
                                  │ (战斗)   │
                                  └──────────┘

2.2 服务职责

服务 职责 通信方式
LoginSrv 注册/登录/Token签发 HTTP(对外)
GateSrv WS连接管理/心跳/路由转发 WebSocket(对外)+ gRPC(内部)
GameSrv 大厅/背包/技能/活动/排行榜 gRPC(内部)
RoomSrv 房间生命周期/战斗逻辑/关卡生成 gRPC(内部)
ConsoleSrv 后台管理/数据统计/封禁 HTTP(内部管理)

2.3 存储选型

存储 用途 选型理由
PostgreSQL 玩家数据/背包/技能/充值记录 关系型数据,事务支持,成熟稳定
Redis 在线玩家列表/房间状态缓存/匹配队列 高频读写,TTL自动过期
日志 结构化日志输出到文件,按天轮转 Demo阶段不需要Kafka,文件+ELK即可

3. 客户端模块划分

3.1 场景架构

Cocos Creator 项目结构:
assets/
├── scenes/
│   ├── LoginScene.scene        # 登录/注册
│   ├── LobbyScene.scene        # 大厅/匹配/背包
│   ├── DungeonScene.scene      # 地牢战斗(核心)
│   └── SettlementScene.scene   # 结算/技能选择
├── scripts/
│   ├── network/
│   │   ├── WebSocketManager.ts # WS连接/重连/心跳
│   │   ├── ProtoManager.ts     # Protobuf编解码
│   │   └── MessageDispatcher.ts # 消息路由
│   ├── managers/
│   │   ├── GameManager.ts      # 全局状态单例
│   │   ├── AudioManager.ts     # 音效/BGM
│   │   ├── PoolManager.ts      # 节点池复用
│   │   └── EventManager.ts     # 事件总线
│   ├── battle/
│   │   ├── BattleController.ts # 战斗主控
│   │   ├── PlayerController.ts # 玩家输入→指令发送
│   │   ├── EntityStateSync.ts  # 状态帧接收→插值渲染
│   │   └── SkillSystem.ts      # 技能表现/特效
│   ├── dungeon/
│   │   ├── DungeonGenerator.ts # 接收种子→生成地图
│   │   ├── RoomLoader.ts       # 房间模板加载
│   │   └── MonsterAI.ts        # 怪物表现层AI
│   ├── ui/
│   │   ├── HUDPanel.ts         # 血条/技能栏
│   │   ├── SkillSelectPanel.ts # 技能三选一
│   │   └── SettlementPanel.ts  # 结算面板
│   └── data/
│       ├── ConfigTables.ts     # 配置表加载(技能/怪物/关卡)
│       └── PlayerData.ts       # 本地玩家数据缓存
└── resources/
    ├── prefabs/                # 预制体
    ├── textures/               # 贴图
    ├── audio/                  # 音频
    └── anim/                   # 动画剪辑

3.2 网络层设计

WebSocketManager(单例,场景切换不销毁):
├── 连接管理
│   ├── connect(url, token)     # 带Token的WS握手
│   ├── disconnect()            # 主动断开
│   └── reconnect()            # 自动重连(指数退避,最多5次)
├── 心跳
│   ├── 每15秒发送 C2S_Heartbeat
│   └── 30秒无响应触发重连
├── 消息收发
│   ├── send(msgId, payload)    # Protobuf编码→发送
│   └── onMessage回调→MessageDispatcher路由
└── 断线恢复
    ├── 本地缓存未确认指令队列(最多50条)
    └── 重连后发送 C2S_Reconnect(roomId, lastFrameSeq)

3.3 数据驱动

  • 战斗内​:轻量ECS模式(Entity=节点,Component=脚本组件,System=BattleController调度)
  • 战斗外​:传统MVC(Manager管理数据,UI面板监听刷新)
  • 不引入第三方ECS框架,直接用Cocos Creator原生Component

4. 通信协议设计(Protobuf)

4.1 消息分类与编号

范围 模块 消息ID范围
1000-1099 登录/认证 C2S_Login, S2C_LoginResult, C2S_Heartbeat
1100-1199 大厅/匹配 C2S_JoinRoom, S2C_RoomInfo, C2S_Ready, S2C_GameStart
1200-1299 战斗同步 C2S_PlayerInput, S2C_BattleFrame, S2C_DamageNotify
1300-1399 技能/遗物 C2S_SelectSkill, S2C_SkillOffer, S2C_RelicAcquired
1400-1499 掉落/结算 S2C_DropItem, C2S_PickUp, S2C_Settlement
1500-1599 背包/商店 C2S_OpenBag, S2C_BagInfo, C2S_BuyItem

4.2 关键消息结构

// ===== 登录 =====
message C2S_Login {
  string account = 1;
  string password = 2;           // 客户端SHA256后传输
  int32 platform = 3;            // 1=Windows 2=iOS 3=Android
}
...

5. 肉鸽核心机制设计

5.1 关卡生成

地牢生成流程:
1. 服务端生成随机种子(dungeon_seed)
2. 基于种子确定:每层房间数、房间类型、怪物配置
3. 房间类型池:普通战斗 / 精英战斗 / 商店 / 宝箱 / Boss
4. 每层结构:入口 → [2-4个房间] → 出口(通往下一层)
5. 客户端接收种子 + 房间列表,渲染地图

5.2 技能系统

技能池机制:
- 初始:玩家选择1个基础技能进入地牢
- 每清完一层:从技能池随机抽取3个技能,玩家选1个
- 技能池:根据当前层数和已选技能权重计算
- 技能升级:相同技能再次选择 → 升级(伤害+30%/范围+20%)
- 技能稀有度:普通(60%) / 稀有(30%) / 传说(10%)

其他游戏系统功能,可以后面完善

6. 非功能要求

指标 Demo阶段 上线阶段
并发连接 单机50 单机500
操作延迟 < 200ms < 100ms
状态同步频率 10Hz 20Hz
断线恢复 2分钟内重连保留房间 5分钟
防外挂 关键逻辑服务端校验 + 指令频率检测 + 行为分析
包体大小 < 50MB < 100MB
内存占用 服务端 < 512MB 单Room进程 < 2GB

三、分阶段

等完善游戏文档后,就可以让AI开始写代码了,当然,也不能让AI一次全写完,也要分阶段。写完、测试验证后,然后再开始下一个阶段。安游戏可以简单分为几个步骤,一步一步处理,过程中也可以调整:

Phase 1:基础通信

  • Protobuf协议定义(登录/房间/战斗/结算 全量消息)
  • Go HTTP登录接口(注册/登录/Token签发)
  • Go WebSocket连接管理(连接/断开/心跳)
  • Cocos Creator WebSocketManager封装
  • 登录场景UI + 连接测试
  • 日志系统迁移至 github.com/zngw/golib/log

Phase 2:房间与同步

  • 房间创建/加入/准备/开始
  • 状态同步框架(服务端10Hz广播 BattleFrame)
  • 客户端插值渲染(EntityStateSync)
  • 玩家移动:输入→服务端计算→广播→插值显示

Phase 3:战斗核心

  • 地牢关卡生成(种子→房间布局→怪物配置)
  • 怪物AI(巡逻/追击/攻击)
  • 伤害计算(服务端权威)
  • 技能系统(释放/冷却/特效表现)
  • 掉落物生成与拾取
  • DungeonScene战斗场景

Phase 4:肉鸽机制

  • 技能三选一(每层结算后触发)
  • 遗物系统
  • 死亡/观战/全灭结算
  • 胜利结算 + 金币/技能解锁持久化
  • SettlementScene结算场景

Phase 5:打磨与发布

  • 断线重连恢复
  • 音效/BGM
  • 技能特效打磨
  • 配置表系统(技能/怪物/关卡 Excel→JSON)
  • Docker部署 + 打包发布

四、让AI开始执行

每个Phase拆成独立prompt,AI只做当前Phase的事:

项目背景:读取本地游戏项目文档

当前阶段目标:Phase1

要求:
1. 只实现当前阶段的代码,不要提前写后续阶段
2. 给出完整可运行的代码,不要省略
3. 每个文件标注完整路径
4. 提供手动验证步骤(怎么跑起来、怎么测试)
5. 遇到技术选型问题,优先选成熟稳定方案

输出格式:
- 文件清单 + 每个文件的完整代码
- 依赖安装命令
- 运行命令
- 验证步骤

完成后等我确认再进入下一阶段。

到此就可以一步一步开始写游戏了,只不过,OpenClaw和Hermes都不能编辑Cocos Creator 的UI,只能写代码,写好后要自己在UI中布局,调用代码。不过可以让AI生成一些可用的UI图片。

我现在已经写完Phase2了,边写边改边优化。。。

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区