About 关于
我做的东西,大多是一个可以被反复推演的假设。
把规则写清楚,让它跑起来,然后看它会不会给出我没预料到的结果——这件事我从三个完全不同的尺度上做了三年:一片海、一块战场、一具人体。
我是阮家忆。做的东西大多关于模拟:海战、载具对战、人体生理。它们看起来毫不相干,做法却是同一套——先定物理,再做界面;先写探针,再调参数。界面可以慢慢磨,物理错了,后面所有的漂亮都是在给错误加分辨率。
我不太相信「看起来对」。一个模拟器最容易骗人的地方,是它永远会给你一个画面:海面照样有波浪,心脏照样在跳,数字照样在变。它不会告诉你某个分支已经安静地失效了三个月。所以我的大部分时间花在判据上,而不是效果上:这个数应该在什么范围、这条曲线该不该单调、这个病到底有没有人消费。
这个站点是我的工作台一角。三个项目、几篇记录踩坑的笔记,以及一些还没做完的想法。没有后端,没有账号,没有统计——它只是几个页面,希望能被安静地读完。
- 坐标
- UTC+8 · 中国
- 在做
- 三个模拟项目 · 海战 / 载具 / 生理
- 工具
- 原生 JS、Three.js、Node 探针 · 无框架、无构建
- 偏好
- 可验证的东西 · 探针优先于肉眼
- 不做
- 后端、账号、追踪 · 这个站点没有服务器
01 做法
三条,从调试记录里抄出来的
-
01
先有判据,再有效果
每个模块先回答「怎么知道它是对的」:基线读数、分级对照、单调性、守恒量。写不出判据的功能,通常也写不出正确的实现。
PROBES BEFORE POLISH -
02
一个概念,一个入口
进座舱、取位置、判可用、装配挂载,各只有一个函数,其余地方一律调用。第二套实现不会立刻出错,它只会在几个月后悄悄漂移。
ONE DOOR PER CONCEPT -
03
让状态趋近目标
生理量大多不是自由积分,而是向目标值惯性趋近。写成指数逼近,无条件稳定;把不稳定留给「精度更高」的方法,是把失败模式换成不可预测。
STABLE BEATS CLEVER
02 站点
关于这个站点
Typography
标题用 Noto Serif SC,正文用 Noto Sans SC,标签与元信息用等宽,数字用 Palatino。中文正文行高 2.05,段落宽度控制在 34 字上下。
Build
手写 HTML 与 CSS,一段原生 JS。无框架、无构建步骤、无第三方请求;字体取系统已装的中文字体,图片全部本地。
Images
页面里的示意图是手绘 SVG,靠反色适配深色底;照片为生成图像,只作氛围示意,不是项目截图。
Palette
墨黑 #08090A,骨白 #EDE9DF,青色只用在需要被指出的地方。