15 KiB
15 KiB
ColorBlock 消消乐游戏 - 整体说明书
一、游戏架构概述
1.1 场景流程
Main.ts (入口)
↓
Load.ts (加载场景初始化)
↓
GameManager.ts (游戏管理器 - 预加载资源)
↓
JiaZai.ts (主页场景 - 主菜单)
↓
Map.ts + Block.ts (游戏场景 - 核心玩法)
↓
GameOver.ts (结算场景)
1.2 核心模块划分
| 模块 | 说明 |
|---|---|
| 核心游戏 | 游戏主逻辑、场景管理、地图控制、方块控制 |
| 道具系统 | 各种特殊方块(钥匙、炸弹、冻结等) |
| UI系统 | 界面控制、弹窗管理、设置面板 |
| 工具模块 | 音频管理、网络请求、数据存储 |
| SDK模块 | 微信小游戏SDK、分享、支付 |
二、核心类说明
2.1 入口与初始化
| 文件 | 类名 | 功能说明 |
|---|---|---|
| Main.ts | Main | 游戏入口,加载 LoadScene 场景 |
| Load.ts | NewClass | 加载场景初始化,配置碰撞系统、微信参数 |
| GameManager.ts | GameManager | 游戏总管理器,单例模式,负责游戏初始化、资源预加载、微信配置 |
2.2 主页场景
| 文件 | 类名 | 功能说明 |
|---|---|---|
| JiaZai.ts | JiaZai | 主页场景控制器(HomeScene),负责: - UI管理(关卡、金币、体力显示) - 商店、月卡、每日任务 - 通行证系统 - 排行榜功能 - 分享奖励 - 新手引导 |
2.3 游戏核心
| 文件 | 类名 | 功能说明 |
|---|---|---|
| Map.ts | MapConroler | 地图控制器,核心游戏逻辑: - 地图生成与渲染 - 方块生成与布局 - 门控制(颜色门、星星门、锁门) - 特殊效果(冰冻、锤子、魔法棒) - 胜负判定 |
| Block.ts | Block | 方块组件,控制所有方块行为: - 22种方块类型(普通、钥匙、锁、冻结、炸弹、粘合等) - 7种颜色 - 移动、消除逻辑 - 碰撞检测 |
| SceneManager.ts | SceneManager | 游戏场景管理器(GameScene),负责: - 道具使用(锤子、魔法棒、冰冻) - 弹窗管理(商店、奖励、月卡) - 复活逻辑 |
2.4 道具系统 (prop文件夹)
| 文件 | 道具名 | 功能说明 |
|---|---|---|
| Key.ts | 钥匙块 | 用来打开锁块 |
| Lock.ts | 锁块 | 被锁锁住,需要钥匙消除 |
| Boom.ts | 炸弹块 | 炸毁周围方块 |
| Freeze.ts | 冻结块 | 冻住一定步数 |
| Star.ts | 星星块 | 打开星星门 |
| Adhesive.ts | 粘合块 | 与其他方块粘合移动 |
| Question.ts | 问号块 | 随机效果 |
| AddTime.ts | 加时间块 | 增加游戏时间 |
| Floor.ts | 地板块 | 可移动的地板 |
| Switchs.ts | 开关块 | 控制开关逻辑 |
2.5 UI界面
| 文件 | 类名 | 功能说明 |
|---|---|---|
| GameOver.ts | NewClass | 游戏结算界面,显示分数、通关率、排行榜 |
| Pause.ts | - | 暂停界面(已注释) |
| Reward.ts | - | 奖励界面 |
| Revive.ts | - | 复活界面 |
| Barrier.ts | - | 障碍物界面 |
| Window.ts | - | 通用弹窗 |
| gameOverUi.ts | - | 游戏结束UI |
2.6 工具模块 (module文件夹)
配置与数据
| 文件 | 功能说明 |
|---|---|
| GameConfig.ts | 游戏配置中心,存储GM_INFO等全局数据 |
| GameTool.ts | 工具类,提供登录认证、埋点上传、排行榜、存储等 |
音频与音乐
| 文件 | 功能说明 |
|---|---|
| AudioManager.ts | 音频管理器,单例模式,管理所有游戏音效和背景音乐 |
存储与网络
| 文件 | 功能说明 |
|---|---|
| Storage.ts | 本地存储,封装localStorage操作 |
| HttpUtil.ts | 网络请求工具,封装加密HTTP请求 |
支付与道具
| 文件 | 功能说明 |
|---|---|
| Utils.ts | 支付工具,处理月卡、通行证、订单等 |
其他工具
| 文件 | 功能说明 |
|---|---|
| Notification.ts | 事件通知系统 |
| NodePoolMgr.ts | 对象池管理器 |
| GetPosition.ts | 地理位置获取 |
| RankManager.ts | 排行榜管理 |
| List.ts | 列表组件 |
| scrollviewList.ts | 滚动列表 |
2.7 SDK模块 (Sdk文件夹)
| 文件 | 功能说明 |
|---|---|
| MiniGameSdk.ts | 微信小游戏SDK封装 |
| MiniGameManager.ts | 小游戏管理器 |
2.8 物理与碰撞系统
| 文件 | 功能说明 |
|---|---|
| lq_collide_system/ | 自定义碰撞检测系统 |
| CollisionDetection.ts | 碰撞检测工具 |
三、游戏核心玩法
3.1 方块类型 (Block.ts)
| 类型 | 说明 |
|---|---|
| 普通块 | 最基础的方块,可以移动并消除在对应颜色的门上 |
| 叠加块上/下 | 叠加方块的上下两部分 |
| 钥匙块 | 带有钥匙功能的方块,用来打开对应的锁 |
| 上锁块 | 被锁锁住的方块,需要对应钥匙才能消除 |
| 冻结块 | 带有冰冻效果的方块,会冻住一定步数 |
| 星星块 | 带有星星的方块,用来打开星星门 |
| 炸弹块 | 带有炸弹的方块,可以炸毁周围方块 |
| 水平块 | 只能在水平方向移动的方块 |
| 垂直块 | 只能在垂直方向移动的方块 |
| 粘合块 | 会与其他方块粘合在一起移动的方块 |
| 障碍块 | 障碍物,无法消除 |
| 问号块 | 随机效果的方块 |
| 变色块 | 颜色会变化的方块 |
| 加时间块 | 增加游戏时间的方块 |
| 可移动地板块 | 可以在地图上移动的地板块 |
| 三连粘合块 | 会与三个方向粘合的方块 |
3.2 颜色系统
| 颜色 | 说明 |
|---|---|
| 紫色 | 对应紫色门 |
| 黄色 | 对应黄色门 |
| 绿色 | 对应绿色门 |
| 蓝色 | 对应蓝色门 |
| 粉色 | 对应粉色门 |
| 橘黄色 | 对应橘黄色门 |
| 青色 | 对应青色门 |
3.3 门类型 (Map.ts)
| 门类型 | 消除条件 |
|---|---|
| 颜色门 | 对应颜色的方块可以消除 |
| 星星门 | 需要星星块消除 |
| 锁门 | 需要钥匙块消除 |
| 冰冻门 | 冻结块可以冻住 |
3.4 道具系统
| 道具 | 功能 |
|---|---|
| 锤子 | 消除单个方块 |
| 魔法棒 | 改变方块颜色 |
| 冰冻 | 暂停方块移动 |
四、数据结构
4.1 GM_INFO 主要属性
{
level: number, // 当前关卡
coin: number, // 金币
hp: number, // 体力值
hp_Max: number, // 体力上限
score: number, // 分数
openid: string, // 微信openid
userId: number, // 用户ID
userPowerTime: number, // 无限体力到期时间
playerPassLevel: number, // 通行证等级
passCheckActivate: boolean, // 通行证是否激活
gameId: number, // 游戏ID
scode: string, // 渠道码
matchId: string, // 比赛ID
successList: boolean[], // 成功列表
}
4.2 关卡数据结构
{
id: string, // 关卡ID
map: number[], // 地图数据
risefall: {...}, // 升降台配置
gap: {...} // 鸿沟配置
}
4.3 方块数据结构
{
type: BlockType, // 方块类型
color: BlockColor, // 方块颜色
pos: cc.Vec2, // 位置坐标
special: number, // 特殊属性
}
五、场景说明
| 场景名 | 控制器 | 功能 |
|---|---|---|
| LoadScene | Load.ts | 加载场景,初始化微信参数 |
| HomeScene | JiaZai.ts | 主菜单,显示关卡、金币、商店、任务等 |
| GameScene | Map.ts + SceneManager.ts | 游戏主场景,核心玩法 |
| GameOver | GameOver.ts | 结算场景 |
六、系统功能说明
6.1 体力系统
- 玩家拥有体力值,每进行一关游戏消耗体力
- 体力会随时间恢复(每5分钟恢复1点)
- 可以通过月卡获得无限体力
- 体力不足时显示恢复倒计时
6.2 月卡系统
- 购买月卡后享受每日奖励
- 月卡期间体力上限提升
- 月卡到期后自动恢复默认体力上限
6.3 通行证系统(PassCheck)
- 通过积累进度提升通行证等级
- 通行证达到特定等级可获得奖励
- 需要购买通行证才能获得奖励
6.4 每日任务
- 每日有分享任务
- 完成分享任务可获得奖励
- 任务进度每日重置
6.5 排行榜系统
- 显示好友排行榜
- 按关卡等级排序
- 支持显示玩家省份信息
6.6 分享系统
- 分享到群聊邀请好友
- 好友通过分享链接进入游戏
- 分享成功可获得奖励
七、文件目录结构
assets/Script/
├── Sdk/ # SDK模块
│ ├── MiniGameSdk.ts # 微信小游戏SDK
│ └── MiniGameManager.ts # 小游戏管理器
├── lq_base/ # 基础模块
│ ├── data/ # 数据定义
│ └── util/ # 工具函数
├── lq_collide_system/ # 碰撞系统
├── module/ # 功能模块
│ ├── Config/GameConfig.ts # 游戏配置
│ ├── Crypto/HttpUtil.ts # 加密网络请求
│ ├── Music/AudioManager.ts # 音频管理
│ ├── Pay/Utils.ts # 支付工具
│ ├── Position/GetPosition.ts # 位置获取
│ ├── RankList/ # 排行榜
│ ├── Storage/Storage.ts # 本地存储
│ └── Tool/GameTool.ts # 游戏工具
├── prop/ # 道具系统
│ ├── Key.ts # 钥匙
│ ├── Lock.ts # 锁
│ ├── Boom.ts # 炸弹
│ ├── Freeze.ts # 冻结
│ ├── Star.ts # 星星
│ ├── Adhesive.ts # 粘合
│ └── Question.ts # 问号
├── Avatar.ts # 头像组件
├── Barrier.ts # 障碍物
├── Block.ts # 方块组件
├── CollisionDetection.ts # 碰撞检测
├── ControlManager.ts # 控制管理
├── GameManager.ts # 游戏管理器
├── GameOver.ts # 游戏结束
├── ItemGuide.ts # 道具引导
├── JiaZai.ts # 主页场景
├── Load.ts # 加载场景
├── Main.ts # 游戏入口
├── Map.ts # 地图控制
├── MapBlock.ts # 地图方块
├── Message.ts # 消息
├── MessageContent.ts # 消息内容
├── NewMode.ts # 新模式
├── NumberToImage.ts # 数字转图片
├── Pause.ts # 暂停
├── RedeemCode.ts # 兑换码
├── Reduce.ts # 减少
├── Revive.ts # 复活
├── Reward.ts # 奖励
├── RippleShrink.ts # 涟漪收缩
├── SceneManager.ts # 场景管理
├── Uid.ts # 用户ID
├── Wall.ts # 墙壁
├── Window.ts # 窗口
├── btnControl.ts # 按钮控制
├── gameOverUi.ts # 游戏结束UI
├── heathnum.ts # 体力数字
├── monthlyCard.ts # 月卡
├── peizhi.ts # 配置
├── position.ts # 位置
└── ranking.ts # 排行榜
八、技术栈
| 技术 | 说明 |
|---|---|
| 引擎 | Cocos Creator |
| 语言 | TypeScript |
| 平台 | 微信小游戏、字节跳动小游戏 |
| 网络 | HTTPS + 加密传输 |
| 存储 | localStorage + 微信云存储 |
九、游戏流程图
┌─────────────────────────────────────────────────────┐
│ Main.ts │
│ 游戏入口加载 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ Load.ts │
│ 加载场景-初始化配置 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ GameManager.ts │
│ 游戏管理器-预加载资源、微信配置 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ JiaZai.ts (HomeScene) │
│ 主页-关卡选择/商店/任务/排行榜/通行证/分享 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ Map.ts + Block.ts (GameScene) │
│ 游戏核心-地图/方块/道具/胜负判定 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ GameOver.ts │
│ 结算-分数/排行榜/奖励 │
└─────────────────────────────────────────────────────┘
十、总结
这是一款基于 Cocos Creator 开发的微信消消乐小游戏,核心玩法是通过移动方块来消除对应颜色的门。游戏包含完整的商业化系统:
- 体力系统:控制游戏节奏
- 商店系统:售卖虚拟商品
- 月卡系统:提供订阅价值
- 通行证系统:提供成长目标
- 每日任务:提高用户粘性
- 排行榜系统:促进社交互动
- 分享系统:裂变获客
游戏设计精巧,代码结构清晰,是一款成熟的三消类小游戏产品。