self_improvement 静 · 手部运动
stadia_controller 玩 · 全神贯注
apps 两个世界
self_improvement
静 · 手部运动 为「一边听人说话一边玩」设计。全部遵守下面八条规约:无文字数字、提前 1.5 秒可见、停手无代价、难度恒定、静音、暗底低对比。目标是占住手,不占住耳朵。
stadia_controller
玩 · 全神贯注 把上面那八条全部丢掉 之后做的游戏。会加速、会失败、有音效、有最高分。它们不是拿来分心用的——专心玩 。切到这个世界时整个界面会换成玉青色,就是提醒你规则变了。
palette
为什么换配色 Material 3 的动态取色本来就是用来表达「你在哪」的。两套 tonal 调色板从同一套构造法生成——紫色 seed 与玉青 seed——所以换过去之后每一个层级、每一处对比度关系都还成立,不是简单地把颜色替换掉。
rule 「静」的设计规约
translate P1 无文字数字
visibility P2 提前 1.5 秒可见
pan_tool P3 停手无代价
trending_flat P4 难度恒定
balance P5 固定比率奖励
volume_off P6 全程静音
dark_mode P7 暗底低对比
south P8 只向下自适应
block 无 Game Over
block 无存档与每日任务
casino
随机性的边界 只随机「你出手前就能看见的量」——转速、方向、目标位置、缺口宽窄。绝不随机出手时刻本身,也绝不随机奖励大小(那是老虎机配方,会让你抬不起头)。金弧是唯一的分数变化,且它在你出手前就明明白白亮在那里,属于可见参数,不是暗抽奖。
fact_check
验收 边玩边听一段没听过的播客 8 分钟,之后立刻复述三个要点。能说出 2 条算过;只剩 1 条就把周期调长、窗口放宽,别先砍机制。
handyman 直接套现成的
除了游戏画布本身,这个界面上你看到的每一样都是谷歌给好的组件,不用自己写:
check androidx.compose.material3 — Card / ListItem / NavigationBar / Slider / IconButton / Chip / TopAppBar,全部现成,含状态层与涟漪。
check MaterialShapes — 那些花瓣形图标底就是 M3 Expressive 的 Cookie / Clover / Burst / Pentagon,直接当 Shape 用,还自带形变动画 API。
check SharedTransitionLayout — 列表点进游戏页的容器变换,Compose 里声明两个 sharedElement 就有了,不用手写 FLIP。
check MotionScheme.expressive() — 全套弹簧参数,导航指示器、按压回弹、页面转场直接用,不用调贝塞尔。
check dynamicDarkColorScheme() — 一行接上系统取色,配色跟着用户壁纸走。
close 要自己写的 — 只有五块 Canvas 的绘制与判定内核,大约 500 行。其余全是拼装。
build
唯一要小心的地方 判定必须用 MotionEvent.getEventTime() 而非回调时刻,否则安卓 40–90 ms 的输入延迟会被算进玩家误差里,±56 ms 的核心窗口就成了玄学。相位一律由 (t − t0) % P 算,别用帧计数累加。震动 createOneShot(12, 60),超过 20 ms 就变成抢注意力的独立感觉事件。