1、立项背景和目标
叠层消除(Tile Match)是海外休闲手游中用户量大、变现模式成熟的品类。项目目标是做一款面向 Google Play / App Store 的叠层消除手游,靠激励视频、插屏广告和内购变现,同时沉淀一套可以快速换皮复用的游戏框架。
2、核心功能模块
- 核心玩法:图块多层错位堆叠,只有未被遮挡的图块可以点击;点击后飞入底部 7 格槽位,同类自动归组,凑齐 3 个即消除。清空棋盘即过关,槽位填满或限时关卡超时则失败。
- 特殊图块:冰冻块、木箱块、问号块、锁链块。
- 关卡系统:200 个关卡,随进度解锁新图块和背景,全部通关后随机循环。
- 道具系统:提示、撤销、洗牌、额外槽位,可用金币购买或看广告获取。
- 体力系统、关卡地图、新手引导、设置(音效、震动、隐私协议)。
- 商业化:激励视频复活或领道具、插屏与横幅广告、内购商店。
- 账号与云存档:游客即玩,可绑定谷歌账号同步进度。
3、业务流程
启动加载 → 选择"新游戏"(游客)或"继续游戏"(谷歌登录)→ 主菜单关卡地图 → 进入关卡(消耗体力)→ 点选图块消除 → 通关领取金币;失败后可看广告复活或使用道具 → 进度自动同步到服务器。
1、整体架构
客户端用 Unity 2022.3 + C#,基于 Watermelon Core 框架(存档、UI 页面、Tween、对象池、广告和内购抽象层);后端用 Node.js + Express + MongoDB,认证用 Google OAuth2.0 + JWT。客户端通过 IPlayerServerApi 接口与服务器解耦,开发阶段用桩实现替代,前后端可以并行开发。
2、我负责的模块和结果
- 玩家账号与云存档:实现"游客即玩 + 谷歌账号绑定升级"。游客绑定时上传本地进度,服务器取最大值合并,进度不会倒退。
- 数据同步:金币变动只打"待同步"标记;过关、切到后台、每 5 分钟才推送;切回前台时拉取最新数据,避免多设备冲突。
- 后端服务:完成注册、登录、绑定、拉取、同步、改昵称 6 个接口,包括 JWT 游客令牌(30 天有效)和接口限流(全局 60 次/分钟,登录 10 次/分钟)。注册接口按设备 ID 去重,重复调用返回同一账号。
- 启动流程:重做加载页(进度条动画、按钮弹出、淡出过渡)和"新游戏 / 继续游戏"选择流程。
3、难点和解决方案
- 游客没有稳定标识:最初用 googleId 当主键,游客无法关联。改为由服务器生成 userId 作为唯一标识,谷歌账号只是可以绑定的登录方式,deviceId 作为辅助信息。
- 没网时无法注册,导致进不了游戏:标记"待注册",允许先在本地玩,后台每 30 秒重试,注册成功后自动补推离线期间的进度。
- 加载页按钮点不了:排查发现 Game 场景已经自动激活,它的 UI 盖住了按钮,而且加载页的 Canvas 缺少 GraphicRaycaster。改为开启手动控制模式,让场景加载完先暂停,等玩家选择后再激活,并补上 Raycaster;另外加了防重复点击标记,解决"继续游戏"被多次触发的问题。