Show Dev:一个无法点击的放置大亨游戏
Source: Dev.to
我发布过的最蠢的游戏
我做了一个点一下也没有任何作用的放置类游戏。没有升级按钮,没有声望循环,也没有“拍饼干”那种多巴胺刺激。你打开标签页,数字就会增长。仅此而已。这就是游戏本身。
它叫 The Lazy Tycoon,是闲置游戏体裁的最纯粹表达:玩家被完全移除。
这最初只是个玩笑。我在抱怨“闲置”游戏并不真的闲置——它们每分钟需要的点击次数比大多数动作游戏还多。于是我构建了逻辑上的终点:一个在你观看时自行运行的游戏。
为什么要移除玩家?
我玩过的每款闲置游戏最终都会变成电子表格作业。你每隔 47 分钟就要点一次声望按钮,因为元游戏要求这么做。所谓的“闲置”只是新手教程撒的谎。
完全去掉输入后,会出现一些有趣的现象:
- 游戏必须 易读。如果你无法操控,屏幕上的每个数字都必须自行说明。
- 节奏必须 有活力,但不依赖奖励注意力。观看应当是可选的。
- 没有需要围绕的失败状态。只有氛围和复利增长。
事实证明,当你接受自己对数字的增长无能为力时,观看它们增长竟然相当放松。它是增量游戏界的 Bob Ross。
整个项目都是 AI 生成的
我没有手写游戏逻辑。整个应用——经济曲线、公司名称、计时循环、UI——都是先由大语言模型生成,再在循环中迭代。我给它设定约束(“没有玩家输入,必须有活力,数字必须可信地复利”),让它自行完成。
这属于更大的实验:我运营一个小型工厂,专门生成并部署这些应用,每个都在独立的 Railway 服务上。一个应用,一个容器,一个子域名。如果某次生成出现问题,影响范围仅限于那款愚蠢的游戏。
计时循环和你想象的一样无聊:
useEffect(() => {
const id = setInterval(() => {
setEmpire(prev => {
const income = prev.businesses.reduce(
(sum, b) => sum + b.rate * b.level * b.multiplier,
0
);
return {
...prev,
cash: prev.cash + income,
businesses: maybeAutoUpgrade(prev.businesses, prev.cash + income),
};
});
}, 1000);
return () => clearInterval(id);
}, []);
游戏唯一的“决策”是 maybeAutoUpgrade——一个微小的启发式算法,会把现金再投资到 ROI 最高的业务上。它是一个运行在单个 setInterval 上的假 CEO。
我在代码审查中会为之辩护的奇怪选择
- 不持久化。 关闭标签页,帝国随之消失。这是特性——它让应用成为一种体验,而不是一种负担。没有 FOMO,没有存档刷钱。
- 每个应用一个服务。 我生成的每个愚蠢项目都拥有自己的 Railway 部署。过度吗?绝对是。但这意味着我可以在不触碰其他项目的情况下销毁或重新部署某个项目,而且冷启动成本几乎为零。
- 仅客户端状态。 没有后端。经济完全存在于 React 状态中。如果你打开两个标签页,就会得到两个宇宙,这在哲学上对一个关于“什么都不做”的游戏来说是正确的。
我的收获
当你剥夺交互时,UI 设计会变得异常诚实。每个像素都必须证明自己的价值,因为玩家唯一能做的就是盯着它看。我最终砍掉了大约一半最初生成的 HUD——剩下的那半反而更好。
另外:生成小而奇怪的应用并把每个都部署到独立的服务上,比维护一个巨大的笑话单体仓库 要有趣得多。
试一试
打开标签页。什么都不做。致富(虚拟货币)。
👉 lazy-tycoon.edgecasefactory.com
如果你本能地想去点击鼠标,恭喜你——你已经发现了游戏想要讽刺的问题。