一个真实的夜空

2026年9月5日 devlogpixelart

山在晚上变成软的

对这个一直坐着。想要一个头部场景的夜间版本,像素山在日光里工作很好看错了一次所有东西变黑暗的,太多块反对一个应该感觉深和远的天空。

所以背景山在晚上被交换给一个平滑版本,从我用于像素一个追踪超同样渡轮照片但画作一个柔软被填充的形状而不是像素。所有更接近水的,鸟,鱼,小跑步者,都保持像素。只是远背景软化了。给它一些深度,接近的东西锐利和块,远的东西模糊到黑暗像它实际上会是。

实际星座,不是随机点

可能刚散落随机星星并完成了它,实际上开始那样大约一小时:

const stars = Array.from({ length: 40 }, () => ({
	x: Math.random() * width,
	y: Math.random() * height
}));

但我想要天空实际上是天空。查了Cassiopeia和大熊(Karlsvogna,长大)坐相对于北星哪里并放了两个星座作为实际点模式而不是随机噪音。他们缓慢围绕北星旋转正如真实天空做的,刚刚加快了许多所以你能实际上在一个页面加载期间注意它发生而不是在充分夜晚。

小细节没有人必须注意,但我知道它在那里而那对我足够。

记住这在哪里

最后的东西我添加:场景现在记住大约如果你在五分钟内回来一切在哪里。鸟位置,星旋转,所有它,掉进本地存储用一个时间戳:

export const SCENE_MAX_AGE_MS = 5 * 60 * 1000;

export function loadScene<S>(
	storage: StorageLike | null,
	key: string,
	now: number = Date.now(),
	maxAgeMs: number = SCENE_MAX_AGE_MS
): StoredScene<S> | null {
	if (!storage) return null;
	try {
		const raw = storage.getItem(key);
		if (!raw) return null;
		const parsed = JSON.parse(raw);
		if (!parsed || parsed.v !== 1 || typeof parsed.savedAt !== 'number') return null;
		const age = now - parsed.savedAt;
		if (age < 0 || age >= maxAgeMs) return null;
		return parsed as StoredScene<S>;
	} catch {
		return null;
	}
}

游走离开读一篇文章并回到主页并它不仅仅重置到一个新鲜随机场景,它拾起接近它留下的地方。五分钟后它放开和重新洗。

那是设计本质上对现在完成的。苔藓绿纸,一个山那实际上看起来像山,方式太多鸟,一个侧边栏,和一个天空那知道大熊实际上在哪里。可能会继续戳小东西但这是它的形状。

0 条评论

登录 后即可评论。

登录

忘记密码?

还没有账号?