首页 › games › 《2048》他周末写了个游戏,全世界都在抄

仓库档案

先说结论:如果你这辈子只想精读一个游戏仓库,学“怎么把一个玩法做到无法再删”,就选它。十一年过去,移动端小游戏市场上靠这套玩法吃饭的产品数以百计,而它们的祖师爷,是一个意大利年轻人用周末两天时间写出来练手的东西。

这游戏是什么

一句话:4×4 的棋盘,往四个方向滑,数字相同的瓷砖撞在一起就合并翻倍,凑出 2048 就赢——然后你可以继续挑战更高的分。

它的出身比玩法还有名。2014 年 3 月,Cirulli 玩到一款 iOS 上的付费小游戏《1024》(往上追是 Asher Vollmer 的《Threes!》),觉得挺好玩,但自己手痒,想做一个带动画效果的网页版练练手。他后来在公开场合的原话大意是:我只是想给自己做个带动画的小版本,当作周末的编程练习。

两周之内,这个“练手项目”变成了一场全球性的数字瘟疫:办公室白领摸鱼、学生课堂传阅、媒体跟进报道、App Store 上冒出成百上千个借名字的克隆。Google 2014 年度搜索趋势里,它排在游戏类前列。一个没有推广、没有买量、没有美术资源的纯网页游戏,靠玩家的手手相传完成了这一切。

玩家核心循环

flowchart LR
    A[滑动一次<br>全盘瓷砖倒向一边] --> B[系统随机投放<br>一块 2 或 4 的新砖]
    B --> C{还有空位或<br>可合并的邻居吗?}
    C -- 有 --> D[合并成功:数字翻倍<br>分数上涨+动画反馈]
    D --> E[离 2048 更近一步<br>大脑分泌一点多巴胺]
    E --> F[规划下一步<br>大数怎么靠边、小数怎么排]
    F --> A
    C -- 没有 --> G[棋盘锁死,游戏结束<br>结算分数,对比最高分]
    G --> H[就差一点点/这次能更好<br>不服,再来一局]
    H --> A

注意这个循环里两个最精妙的阀门:

新砖投放是随机的——你永远无法完全规划,只能“在随机里做最优”。这让每局都不一样,也让输棋有借口、赢棋有惊喜。

失败是即时的、无惩罚的——死局出现的那一刻游戏直接结束,没有生命值、没有体力条、没有等待。点一下“再来一局”,三秒后你又在一局新游戏里了。摩擦力小到近乎没有,这是它传播力的一半来源。

为什么上头

拆开看,2048 把经典成瘾机制里的四样东西压缩到了一次滑动里:

即时反馈,频率高到变态。 每滑一次,要么瓷砖移动、要么发生合并——没有一次操作是无效的。合并发生时,数字翻倍、瓷砖放大弹跳一下、分数跳涨。这个“弹跳”只是几行 CSS,但它给大脑的奖励信号是实打实的。对比那些点一下要转圈三秒的产品,2048 的反馈延迟是零帧。

进度感有刻度,而且刻度是指数的。 2、4、8、16……每次合并都让你“升一级”,而且越往上,每一级的视觉冲击越大——数字变大、颜色变深。玩家对“我这局最高合到过 512”有清晰的记忆点,这个数字就是这局的成就徽章。人类对指数增长没有直觉,所以每次翻倍都仍然新鲜。

随机奖励,控制权又在你手里。 新砖出现的位置不可控,但你怎么排布是你的决策。这是斯金纳箱和策略游戏的杂交:老虎机的随机性 + 象棋的深度。输了你不会觉得“运气游戏”,你会觉得“我刚才第 37 步不该把 128 放中间”。归因于自己,才会再来一局。

社交攀比自带传播。 分数是天然的比较物。“我 8900 分”“我 21000”,截图发群里,下一秒群里就少了一个人——他去下载了。2048 没做任何社交功能,但分数这个设计天然就是社交货币。传播不是它做了什么,而是它留了个口子。

还有一个常被忽略的设计:它没有“通关即结束”。合出 2048 会弹出胜利提示,但按钮写的是“继续玩”。胜利不是终点,是里程碑。多少独立游戏死在“通关了就卸载”,而 2048 把通关做成了一件只是顺路发生的事。

技术拆解

这个仓库最大的特点是:它是 2014 年前端的原生态标本,简单到可以直接背下来。

文件结构一览(都在 js/ 目录下):

没有构建工具,没有依赖,打开就能读。全游戏的移动+合并算法大约一百多行,思路值得完整讲一遍,因为它是可迁移资产:

  1. 根据滑动方向算出一个遍历向量。往左滑时,格子要从左到右处理;往右滑时反过来。这个“处理顺序”是所有滑块类游戏的灵魂——先处理的瓷砖先占位,后面的瓷砖才能正确地一路滑到底。
  2. 每块瓷砖先找到自己的最远可达位置(一路上都是空格就滑到头)。
  3. 检查最远位置的下一格,如果数值相同且本回合尚未合并过,就合并——merged 标记保证一块 4 不能一口气变成 16,这是规则正确性的关键。
  4. 全部移动完后,在随机空位投放一块新砖(90% 是 2,10% 是 4)。

就这四步。市面上所有 2048 变体、滑块合并类玩法,核心都是这四步。这套算法今天用任何语言重写都是一两天的事,你可以直接把它移植到微信小程序、Flutter、Godot,规则层完全不用动。

几个工程决策放到今天依然是教科书级别:

逻辑与渲染彻底解耦。 game_manager 只负责吐状态,html_actuator 只负责画。游戏核心对 DOM 一无所知。正因如此,后来社区把它移植到 React、Vue、Canvas、原生 App 的时候,规则层一行没改。你写任何小游戏,请照抄这个分层:规则、渲染、输入、存档四个模块,各自可以独立换掉。

CSS 动画而非 JS 动画。 瓷砖的滑动是绝对定位加 CSS transition,合并的弹跳是一个 class 切换。DOM 只动位置和 class,浏览器自己补帧。对小体量游戏来说,这比 requestAnimationFrame 手写插值便宜得多,而且效果是 60 帧丝滑。

存档就一个 localStorage。 没有账号体系,没有云同步,关掉浏览器再打开,棋盘还在原样。对一个局时长五分钟的游戏,这个设计刚好够用——多余的服务器一分钱不用花。

离线可玩。 当年用了 HTML5 AppCache(这个技术今天已废弃,别学),但"断网也能玩"这个目标本身值得记住:小游戏的传播场景经常是微信里点开一个链接,网络环境参差不齐,能离线就少一层流失。

顺带一提,这个玩法还养活了 AI 教学界:2048 是 expectimax 搜索和启发式评估的经典练习题,GitHub 上有一批求解器仓库,最高能稳定合出 16384。想给游戏加个“AI 代打”或者做个可视化教学视频,素材是现成的。

变现观察

2048 的变现故事是一个反向案例正面讲的稀有样本——因为作者本人基本没从这游戏赚到直接的钱。

时间线是这样的:Threes! 团队打磨了一年半,定价 1.99 美元上架;1024 是它的移动端简化仿品;Cirulli 的 2048 又是 1024 的网页简化版,免费、开源、零广告。结果免费且最易获取的版本赢者通吃。Threes! 的设计师 Greg Wohlwend 当时公开表达过愤怒,大意是:我们花一年半做的游戏,输给了一个周末的克隆。这场“抄袭的抄袭的抄袭”链条后来成了游戏设计圈反复讨论的公案,核心争议至今没有答案:玩法不受版权保护,那打磨玩法的成本谁来付?

具体到钱,流向是这样的:

给个人开发者的启示有三层。第一层:纯玩法创新留不住钱,但能买到入场券——如果你做出一个像 2048 一样疯传的东西,真正的收益在你的下一个项目里。第二层:克隆潮证明了这个玩法品类能吃广告变现——你不必当祖师爷,当克隆潮里包装最好的那个就够了,后来“合成大西瓜”系列把这条路又走了一遍。第三层:开源玩法类仓库的星标价值被普遍低估——它带来的合作、工作机会和信任,折现率比广告高得多。

给我的灵感

点子一:换皮 + 成长线,做小程序小游戏(周末级 MVP,广告变现)。 玩法层原样照抄那一百多行算法,主题换成有收集欲的物种:猫从奶猫合到巨型猫、修仙从练气合到大乘、汽车从二手奥拓合到超跑。每次升级配一张立绘和一句文案。成本几乎全在素材,逻辑零风险。上线微信/抖音小游戏,挂激励视频:死局时“看广告洗牌一次”、开局“看广告带一个词条”。同类玩法在小游戏平台有大量已验证流水,拼的是题材包装而不是算法。

点子二:2048 + Roguelite 词条(1-2 周 MVP,适合 itch.io 或 Steam 抢先体验付费)。 每局开局三选一词条:“4 号砖出现率 +20%"“开局自带一块 128"“每 1000 分获得一次撤销”。通关或达成分数解锁新词条池,构建出“这局我要玩撤销流还是大数流”的策略感。2048 的问题是一次性消费,词条系统直接给这个玩法续了五十小时命。这类“经典玩法+轻肉鸽”的重组是近两年独立游戏圈跑通过的付费公式,量级小、周期短,正适合个人。

点子三:每日挑战 + 排行榜(约一周 MVP,网页广告+打赏)。 固定每日随机种子,全世界玩家当天面对同一局——这是 Wordle 验证过的钩子,把单机玩法变成每日社交仪式。加一个极简每日排行榜,页面挂一条广告位,页面底部放打赏码。服务器只需要一个“生成今日种子 + 存分数”的接口,一台最低配的云函数就够。原版十年没人认真做这个,是个明显的空位。

点子四(顺手赚的):把求解器做成内容。 expectimax 求解 2048 的可视化视频、源码解析文章,国内外平台都还稀缺。不求直接变现,求的是给上面三个点子导流——技术和玩法解析内容,是独立开发者性价比最高的获客手段。

上手

一个 19 岁年轻人在周末写下的一千行代码,十一年里被全世界抄了个遍。它没有让作者发财,但它证明了另一件事:一个足够小、足够锋利的玩法,本身就是一个可以环游世界的物种。你要做的不是复刻历史,是找到你的那把小刀。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入