一款轻量级3D俯视角塔防守城小游戏,核心目标为广告变现。
《守家别掉线》 是一款以末日废土为背景的3D俯视角塔防守城游戏。玩家需要在3D场景中操控角色,抵御一波波敌人的进攻,保护基地不被摧毁。
- 对玩家:简单易上手、单局时长短、爽快感强、3D Low Poly废土风格视觉冲击力强、"队友掉线"梗有共鸣
- 对开发者:广告变现点自然、适合短视频引流、3D差异化竞争优势
- 抖音小游戏(优先)
- 微信小游戏(二期规划)
- 18-35岁男性为主
- 喜欢塔防、生存、解压类游戏的休闲玩家
- 抖音短视频用户
- 偏好3D视觉风格的轻度游戏玩家
玩家在3D末日基地中抵御一波波敌人进攻,保护基地不被摧毁,通过升级防御和释放技能生存下去。
敌人来袭 → 玩家防守(点击攻击/释放技能) → 击败波次 → 获得金币 →
升级基地/武器/技能 → 下一波敌人更强 → 基地被毁则失败 → 看广告复活/重新开始
3D俯视角45°斜向场景:
- 摄像机位置:固定俯视角,与水平面呈45°角,斜向俯视战斗区域
- 画面布局:3D场景占据主要画面,2D UI叠加在3D场景之上
- 战斗区域:敌人从场景上方/右方进攻,基地在场景下方/左下方
- 操作区域:屏幕底部固定2D UI层(技能按钮、基地状态)
场景元素(3D化):
- 基地:3D堡垒结构(Low Poly风格,铁皮+混凝土材质),有血量条悬浮显示
- 城墙:3D石墙/混凝土墙,可升级,阻挡敌人前进
- 防御塔/炮塔:3D炮塔模型,自动攻击范围内敌人
- 敌人出生点:场景上方/右侧3D标记点
- 地面:3D末日废土地形,有废墟、沙土、铁丝网、碎石等Low Poly模型
- 环境装饰:3D废弃车辆、油桶、木箱等可破坏/不可破坏场景物件
| 层级 | 技术选型 | 版本 | 说明 |
|---|---|---|---|
| 游戏引擎 | Cocos Creator | 3.8.x | 官方推荐,抖音小游戏支持最佳;启用3D渲染管线 |
| 渲染模式 | 3D场景 + 2D UI | - | 3D游戏世界使用Forward渲染管线,UI使用Cocos内置2D UI系统 |
| 开发语言 | TypeScript | 5.x | 类型安全,开发效率高 |
| 脚本运行时 | JavaScript (V8) | - | Cocos内置运行时 |
| 数据存储 | LocalStorage + JSON | - | 本地存档,简单加密 |
| 广告SDK | 抖音广告SDK | 最新版 | 激励视频为主 |
| 构建目标 | 抖音小游戏 | - | 优先平台,支持3D模式 |
| 版本控制 | Git | - | 代码管理 |
| 包管理 | npm | - | 依赖管理 |
3D模式关键配置:
- 项目设置中勾选 3D Physics(使用Bullet物理引擎或Builtin)
- 主场景Camera使用 Perspective投影,默认45°俯视角
- 场景光照使用 Directional Light + Ambient Light
- UI层使用独立 Canvas(RenderMode = SCREEN_SPACE_OVERLAY)
shoujia-game/
├── assets/ # Cocos项目核心资源目录
│ ├── _scenes/ # 场景文件
│ │ ├── Loading.scene # 加载场景
│ │ ├── MainMenu.scene # 主菜单场景
│ │ ├── Game.scene # 核心战斗场景(3D模式)
│ │ └── Result.scene # 结算场景
│ ├── animations/ # 动画资源
│ ├── audio/ # 音频资源
│ ├── fonts/ # 字体资源
│ ├── models/ # 3D模型资源
│ ├── materials/ # 材质资源
│ ├── shaders/ # 自定义Shader
│ ├── prefabs/ # 预制体
│ ├── resources/ # 动态加载资源
│ │ └── configs/ # 配置表(JSON)
│ └── scripts/ # TypeScript脚本
│ ├── config/ # 游戏配置
│ ├── core/ # 核心框架层
│ ├── entities/ # 游戏实体
│ ├── managers/ # 管理器
│ ├── platform/ # 平台接入
│ ├── skills/ # 技能系统
│ ├── testing/ # 测试套件
│ ├── ui/ # UI系统
│ └── utils/ # 工具类
├── _docs/ # 项目文档
│ ├── 1_PRD.md # 产品需求文档
│ ├── 2_Architecture.md # 系统架构设计
│ ├── 3_UI_Guidelines.md # UI设计规范
│ ├── 4_Deployment.md # 部署文档
│ ├── 5_Acceptance_Criteria.md # 验收标准
│ └── 6_Change_Log.md # 变更日志
└── preview/ # HTML5预览版
└── level1_preview.html # 第1关预览
- ✅ 3D场景搭建:废土地形、基地、城墙、敌人出生点
- ✅ 玩家攻击系统:点击发射3D实体弹道,抛物线轨迹
- ✅ 敌人AI系统:6种敌人类型,智能寻路、攻击逻辑
- ✅ 波次系统:每关3-5波,难度递增,Boss战
- ✅ 碰撞检测:子弹vs敌人、敌人vs城墙、技能范围检测
- ✅ 伤害系统:伤害计算、飘字显示、暴击效果
- ✅ 金币掉落:击败敌人掉落金币,自动收集
- ✅ 燃烧瓶:范围持续伤害,地面留下火焰区域
- ✅ 电网:范围减速+持续伤害,敌人麻痹效果
- ✅ 呼叫队友:召唤AI队友协助战斗,自动攻击敌人
- ✅ 城墙升级:增加城墙血量上限
- ✅ 武器升级:增加玩家攻击力
- ✅ 攻速升级:缩短攻击间隔
- ✅ 炮塔升级:增加自动炮塔伤害
- ✅ 快速怪:机械狗,移动速度快
- ✅ 坦克怪:重装变异体,血量高
- ✅ 飞行怪:变异蝙蝠,无视城墙
- ✅ 自爆怪:炸弹怪,死亡时范围爆炸
- ✅ Boss:巨型机械,每5关出现
- ✅ 关卡选择:20关进度,星级评价
- ✅ 设置系统:音量、画质、震动、重置存档
- ✅ 排行榜:本地排行榜,总分/关卡最高分
- ✅ 每日任务:5种任务类型,每日刷新
- ✅ 新手引导:前3关强制引导
- ✅ 分享功能:分享战绩、邀请好友
- ✅ 8个激励视频点位:复活、双倍奖励、恢复城墙、召唤队友、刷新技能、金币补给、每日签到、补给箱
- ✅ 防刷机制:频率限制、异常检测、风控评分
- ✅ 40+测试用例:覆盖核心玩法、技能、升级、广告、存档等
- ✅ 自动化测试框架:自包含测试,独立环境准备与清理
- 克隆仓库
git clone git@github.com:wangziyi-code/ai_code_xjbdx.git
cd ai_code_xjbdx- 打开项目
使用 Cocos Creator 打开 shoujia-game 文件夹。
- 预览游戏
点击 Cocos Creator 编辑器中的预览按钮,或打开 preview/level1_preview.html 进行快速预览。
直接打开浏览器访问:
preview/level1_preview.html
| 操作 | 说明 |
|---|---|
| 点击屏幕 | 玩家角色向点击方向发射3D实体弹道攻击 |
| 拖拽技能图标 | 释放对应技能到指定3D位置 |
| 点击技能按钮 | 释放以自身为中心的3D技能效果 |
| 点击升级按钮 | 消耗金币升级对应属性 |
第一版:20个关卡
| 关卡范围 | 难度 | 敌人类型 | 特殊机制 |
|---|---|---|---|
| 1-5关 | 教学/简单 | 普通拆家怪 | 引导教学,熟悉3D视角与操作 |
| 6-10关 | 中等 | 加入快速怪、坦克怪 | 引入技能系统 |
| 11-15关 | 困难 | 加入飞行怪、自爆怪 | 需要合理搭配技能 |
| 16-20关 | 挑战 | 所有类型混合 | Boss战,考验综合策略 |
波次设计:
- 每关3-5波敌人
- 波次间有5秒准备时间(可升级防御)
- 最后一波为精英/Boss波
| 敌人类型 | 外观 | 特点 | 血量 | 速度 | 攻击 |
|---|---|---|---|---|---|
| 拆家怪 | 3D Low Poly变异人形 | 基础敌人,数量多 | 低 | 中 | 低 |
| 快速怪 | 3D Low Poly机械狗 | 移动快,血量低 | 低 | 高 | 低 |
| 坦克怪 | 3D Low Poly重装变异体 | 移动慢,血量高 | 高 | 低 | 中 |
| 飞行怪 | 3D Low Poly变异蝙蝠 | 无视城墙 | 中 | 中 | 中 |
| 自爆怪 | 3D Low Poly炸弹怪 | 死亡时爆炸,范围伤害 | 低 | 中 | 高(爆炸) |
| Boss | 3D Low Poly巨型机械 | 每5关出现,高血量高攻击 | 极高 | 低 | 高 |
3D模型规格:
- 每个敌人模型三角面数 < 500
- 贴图尺寸:256x256 或 512x512
- 动画:Idle、Run、Attack、Death
- 同屏最大敌人数量:15-20个
| 技能名称 | 效果 | 冷却时间 | 持续时间 |
|---|---|---|---|
| 燃烧瓶 | 投掷燃烧瓶,落地后形成范围火焰区域,持续伤害敌人 | 15秒 | 5秒 |
| 电网 | 释放电网,范围内敌人减速并受到持续伤害 | 20秒 | 6秒 |
| 呼叫队友 | 召唤AI队友协助战斗,自动攻击敌人 | 60秒 | 30秒 |
- 燃烧瓶:3D抛物线投掷轨迹,落地后3D火焰粒子效果
- 电网:3D电网模型展开,敌人身上3D电流特效
- 呼叫队友:3D队友角色从基地跑出,自动寻敌攻击
| 升级类型 | 效果 | 基础成本 | 成本递增 | 最高等级 |
|---|---|---|---|---|
| 城墙血量 | 增加城墙血量上限 | 100金币 | ×1.5/级 | 10级 |
| 玩家攻击力 | 增加玩家攻击力 | 150金币 | ×1.6/级 | 10级 |
| 攻击速度 | 缩短攻击间隔 | 200金币 | ×1.7/级 | 8级 |
| 炮塔伤害 | 增加自动炮塔伤害 | 120金币 | ×1.5/级 | 10级 |
| 广告场景 | 触发时机 | 奖励 | 频率限制 |
|---|---|---|---|
| 失败复活 | 玩家死亡后 | 满血继续当前关卡 | 每局限1次 |
| 双倍奖励 | 过关后 | 金币×2 | 每局限1次 |
| 恢复城墙 | 城墙血量<20% | 恢复50%血量 | 每局限1次 |
| 召唤队友 | 队友掉线时 | 队友上线60秒 | 每局限1次 |
| 刷新技能CD | 技能全CD时 | 所有技能立即冷却 | 每局限1次 |
| 金币补给 | 金币不足时 | 获得500金币 | 每局限2次 |
| 每日签到 | 签到界面 | 额外钻石奖励 | 每日限1次 |
| 补给箱 | 主界面 | 随机奖励 | 每日限1次 |
| 测试类别 | 测试数量 | 覆盖内容 |
|---|---|---|
| 核心玩法测试 | 8 | 攻击、移动、碰撞、敌人AI、波次、游戏状态、机械狗、Boss |
| 技能系统测试 | 4 | 燃烧瓶、电网、呼叫队友、技能组合 |
| 升级系统测试 | 5 | 城墙、武器、攻速、炮塔、升级面板 |
| 广告系统测试 | 6 | 复活、双倍奖励、恢复城墙、召唤队友、刷新技能、金币补给 |
| 存档读档测试 | 1 | 数据完整性、恢复、每日重置、清理、加密、版本兼容、损坏恢复、多模块一致性、边界值、并发存档 |
| 关卡系统测试 | 3 | 关卡数据、流程、选择 |
| 其他测试 | 13 | 设置、排行榜、每日任务、新手引导、分享、防刷、状态同步、性能、UI |
在 Cocos Creator 编辑器中:
// 运行所有测试
await runGameTests();
// 运行指定测试
await runGameTests(['SaveLoadSystemTest']);| 文档 | 说明 |
|---|---|
| 1_PRD.md | 产品需求文档,包含游戏设计、关卡设计、敌人设计、技能设计等 |
| 2_Architecture.md | 系统架构设计文档,包含技术栈、目录结构、模块设计、数据流等 |
| 3_UI_Guidelines.md | UI设计规范,包含色彩、字体、布局、动效等 |
| 4_Deployment.md | 部署文档,包含构建配置、发布流程、审核准备等 |
| 5_Acceptance_Criteria.md | 验收标准,包含功能验收、性能验收、兼容性验收等 |
| 6_Change_Log.md | 变更日志,记录每次变更的详细内容 |
| 阶段 | 任务数 | 已完成 | 完成度 |
|---|---|---|---|
| 阶段零:3D场景搭建 | 18 | 18 | 100% |
| 阶段一:MVP | 32 | 31 | 97% |
| 阶段二:完整版 | 29 | 29 | 100% |
| 阶段三:优化与上线 | 20 | 0 | 0% |
- 3D性能优化(LOD、遮挡剔除、DrawCall)
- 包体大小优化(目标<15MB)
- 启动时间优化(目标<3秒)
- 帧率优化(确保60fps)
- 内存优化(目标<120MB)
- 美术素材制作/采购
- 音效与背景音乐
- 抖音平台接入与审核
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
本项目采用 MIT 许可证。
注意:本项目为学习和演示用途,部分素材为占位资源,实际发布前需要替换为正式美术资源。