10.1 平台 API 抽象:登录 / 支付 / 广告 / 分享 / 云存档
把登录、支付、广告、分享、云存档五类平台能力收敛成一组统一签名:每个方法返回 ok/fail/cancel 三态结果对象而不抛异常,业务代码里没有一处 try/catch。给出可跑的 PlatformAPI 接口定义、确定性 mock 宿主与三条路径都有断言的单测。
tag
把登录、支付、广告、分享、云存档五类平台能力收敛成一组统一签名:每个方法返回 ok/fail/cancel 三态结果对象而不抛异常,业务代码里没有一处 try/catch。给出可跑的 PlatformAPI 接口定义、确定性 mock 宿主与三条路径都有断言的单测。
把「自研还是用引擎」变成一个可算的分界问题:用整数递推把引擎路径(前置 120 人时、每项功能按 70% 消耗、对定制功能加 55% 约束代价)与自研路径(前置 260 人时、逐项提速)逐步累加,看累计人时何时交叉,再用 5×5 网格扫出什么条件下自研划算。
给八条引擎 × 八条选择维度配上可调权重,算出加权总分与排名,再做单权重 ±20% 敏感度分析与 33 个场景的排名稳定性基准:LayaAir 与 Cocos Creator 总分只差 1 分、榜首随权重切换,Defold 与 Phaser 名次纹丝不动,回答哪些选型结论可以信、哪些不能。
小游戏引擎不是只有 Cocos。本节把 Cocos Creator、LayaAir、Egret、Defold、Phaser、PixiJS、Unity WebGL 与原生 Canvas 八条路线放进一张公开可观察的格局对照表,并用一段 S 层脚本统计各引擎开箱内置的能力轴覆盖:从 8 条全内置到 0 条全自建,看它们如何排成一条引擎到框架再到渲染库的谱系。
《小游戏开发实战》卷二《引擎、实现与体验打磨》全书目录与阅读路径:16 章 48 节,覆盖引擎选型评分、工程骨架与构建管线、渲染适配、资源管线、游戏循环与状态机、输入交互、物理碰撞、存档反作弊、对象池内存、平台能力适配层、UI、动效、新手引导、性能优化、测试与工程化,每节都配可跑的 Python 仿真、TypeScript 内核或单文件 HTML 原型。
《小游戏开发实战》卷二《引擎、实现与体验打磨》全 50 篇。第一部分(第 1–4 章)讲引擎与框架选型的加权评分、工程骨架与分包构建管线、无 DOM 的 Canvas 渲染与多分辨率适配、图集与音频资源管线;第二部分(第 5–10 章)讲固定步长循环与确定性、输入交互、物理碰撞、存档与反作弊、对象池与内存、平台能力适配层;第三部分(第 11–16 章)讲 UI 系统、动效与打击感、新手引导、性能优化、测试与工程化。每一节都配可跑的 Python 仿真、TypeScript 内核或单文件 HTML 原型,围绕虚构小游戏《合成小岛》与贯穿工具链 pebble 展开。
pebble/config/ 的字段字典与 schema:economy.json 与 ch00_budget.json 每个字段的类型、含义与取值范围,一份可机读的 schema(D 层),以及一段真跑的校验脚本(S 层)。核心纪律是 config 里禁浮点——增长率写整数比、系数写整数百分比,随机数必须可播种。
卷一的复现手册:两个 python3(python3 3.14.6 与系统 3.9.6)的区别与陷阱、Node 26 原生跑 TypeScript 的 strip-only 约束、Playwright 复用写法(NODE_PATH 对 ESM import 无效)、pebble 目录结构与全部实跑命令,以及一份可一键运行的环境自检脚本。数字对不上时先看这一页。
小游戏不是「缩小的手游」。包体上限、首包加载时间、无 DOM 渲染与平台 API 这四条平台约束,会一路反向决定做什么品类、把核心循环设多长、界面能铺几层、社交怎么接进分发。本文讲清《小游戏开发实战》三卷本要回答的问题、六档可运行性主张,以及它与站内既有内容的分工与边界。
这一页讲清楚三件事:三卷各自负责什么、贯穿项目《合成小岛》与工具链 pebble(config / sim / core / web)长什么样、以及代码块头部的层级注释和 verify 命令该怎么读。读完你能在本机把书里任意一段代码跑起来,并知道一个数字是从哪一层出来的。
把「不在线的时间」也算进成长:在线速率、离线比例、逐段衰减与时长封顶的整数递推模型,逐分钟算出累计收益并产出 JSON、CSV 与纯 Python SVG 对比曲线,再用上限敏感性基准回答「离线补偿到底该给多长」,与 8.1 成长线、8.2 续玩机制接成闭环。
把「差一点」量化成千分比:从每局目标与进度判定,到近失驱动的「再来一局」给出概率与接受概率,用可播种内核写成能被 node --test 钉住的不变量,并让 Node 测试与 Chromium 原型跑出逐位一致的数字,文末附可直接打开的单文件 HTML 原型与无头验证脚本。
把《合成小岛》的成长线拆成升级成本与产出速率两条整数比递推曲线:用 S 层脚本算出每级耗时、累计投入与满级总账,讲清成本增速与产出增速的比值才是成长线真正的节奏旋钮,并与站点既有的通用经济配置逐级对照,最后收成三条可落地的设计规则,全程整数递推、命令行可复现。
给定每关的目标通过率,用一段整数内核反解难度参数:先建通过率模型,再写可逆的反解函数,配一个可播种抖动生成器,用 node --test 断言每关回代通过率都落在容差内,并与 Python 侧对照逐位一致,全程禁用 Math.random()。
把难度值与玩家能力接成一条整数滞后追赶的递推曲线:玩家能力追不上突然跳高的峰值关时判定为焦虑、难度回落后能力追上则回到心流,逐关算出无聊/心流/焦虑三档分布,再用 B 层基准对每关难度做参数敏感性扰动,看心流占比会漂多少、单关扰动如何级联影响后续关卡。
把《合成小岛》的 20 个关卡写成一张整数结构表:用 S 层脚本读表统计教学/主线/挑战/限时四类的占比、峰值关的相邻间隔与难度回落节奏,产出 CSV 与纯 Python 绘制的 SVG 图,让关卡结构从主观感觉变成可统计、可回归、可复核的数字。
把核心循环落成一个能跑的最小可玩原型:用 TypeScript 写可播种、无 Math.random 的合成内核,用 node --test 断言不变量,打包成单文件 HTML,再用 Playwright 无头注入输入、采样状态、验证确定性并截图存档。
包体和加载定完之后,最后一关是平台能力与审核。本节把账号、支付、广告、分享、云存档、录屏、排行榜这八项能力在六个平台上的支持情况写成一份可校验的矩阵,再用一段 S 层脚本断言设计案用到的能力在目标平台都可用,并校验每条审核红线都写下了可执行的缓解措施。
首包体积定下来之后,真正决定流失的是它要加载多久。本节用整数递推把体积折算成下载耗时,再叠一个随体积增长的冷启动初始化开销,套进一个带下限的线性进入率模型,产出三条带宽档位的曲线;B 层反过来算,给出目标进入率下各档位允许的首包上限与带宽敏感性告警。
包体上限是小游戏最硬的一条平台约束,也是立项阶段就必须定下的裁剪依据。本节先把主包、单分包、总包、分包数量四条限额写成一份可校验的配置表,再用一段 S 层脚本把资产清单折算成各包体积、逐条比对限额,并对超限的主包算出最小迁出集合,让分包方案由约束反推出来。