No Mercy Michel
No Mercy Michel 是巴黎工作室 Merci-Michel 拿自己员工做对手的一局掰手腕。访客输入昵称后先在线等一个真人对手,等不到,就由一位 Merci-Michel 的员工出场。28 位员工各有一条手臂,肤色、纹身和配饰各不相同,有人戴着劳力士,有人文着法棍和披萨。比赛三局两胜,比的只是谁点鼠标点得更快。
这是 Merci-Michel 给自己做的小游戏,游戏名把工作室名字里的 Merci(法语的谢谢)换成了 No Mercy(毫不留情),开场第一句就是 You thought we were nice people(你还以为我们是好人)。这个游戏拿到了 FWA 的当日站(FWA of the Day)。

01概念
访客在首页输入一个昵称,按下 Fight 按钮,No Mercy Michel 就先在线上替他找一位同时在玩的真人。访客等了大约 15 秒还找不到真人时,系统会改派一位 Merci-Michel 的员工来当对手。

Merci-Michel 把全体员工做成了游戏里的对手,工作室介绍自己的方式因此从案例和团队照片变成了一场场比赛。游戏里一共有 28 位对手,每一位都有自己的名字、一个外号、难度等级、手臂的肤色,以及一组配饰和纹身,难度分成简单、中等、困难和专家四档。纹身大多是个人化的小图案,有人文着自己的名字,有人文着 Game Boy、骰子和小胡子。访客每打一场,系统就换一位还没交过手的员工,直到把所有人都打过一遍,所以这个游戏也是一份另类的团队介绍。
比赛的规则只有点击,访客每点一下鼠标或按一下空格键,就给自己的手臂加一次分。双方的分差决定两条手臂往哪边倒。分差拉到一个固定值,这一局就结束,三局两胜。为了不让一局拖太久,每一下的分值会随时间变大,开局 2 秒后从 1 分涨到 3 分,6 秒后再涨到 4 分。
作为对手的员工也有自己的出手节奏。程序按难度给每位员工定一个基础点击间隔,每一下再随机浮动一成,所以对手的手速不是匀速的。开局 6 秒后,对手开始变累,点击间隔一点点拉长。一位中等难度的员工开局每秒能点 6.6 下,打了 20 秒后降到每秒 3 下多,访客只要撑过开头,就有机会把比分扳回来。
比赛结束后的文案延续了开场那句话的嘲讽口吻。访客输了,屏幕上写着 YOU SUCK(你真菜)和 we are not surprised at all(我们一点都不意外),赢了则是 VICTORY(胜利)和当前的连胜次数。
首页上还有两样东西,让访客在比赛之外也有理由回来。右下角挂着一张连胜排行榜,只列前十名,第一名连赢了 149 场。页面顶部一直滚着 FREE STICKERS(免费贴纸)的横幅,点进去是一张订阅表单,订阅的人可以抽 Merci-Michel 的贴纸。
02设计
整个游戏发生在一个三维的拳击台上。台面、围绳和角落里搭着毛巾的凳子都在,背景里是一片虚焦的蓝色灯光,像一座坐满观众的场馆。两条手臂是软胶玩具一样的卡通造型,表面圆润、反光柔和,纹身像贴纸一样印在皮肤上。镜头始终从侧面低角度看着这两条手臂。

界面的字体借用了体育比赛的语言。昵称、回合数、READY 和 FIGHT 这些大字用的是 United Sans 的超粗和压缩字形,像球衣号码和赛事海报,对手的外号和 Winstreak(连胜)这类点缀词则用一款叫 Cetary 的手写体。两位选手的名字分列在屏幕左上和右上,下面各写着实时的每秒点击数,像电视转播里的比分牌。首页的 Fight 按钮是一颗带厚度的橙色圆钮,和手臂的软胶质感是同一类材质。
场景的颜色跟着比赛的状态变,平时整个场景是深蓝色的。访客赢下这一场,场景整体变成金黄,输了就变成暗粉红,画面四周的暗角也跟着换成深蓝、暗黄或暗红。一局分出胜负的那一刻,拳击台的地面会泛起一圈红光。

Merci-Michel 把观众的声音做成了飘在场地里的文字。比赛时屏幕上会不断浮起一行行倾斜的白字,有的是欢呼,比如 SMASH HIM、GO GO GO、FINISH HIM 和 MONSTER,有的是嘘声,比如 YOU SUCK、LAME、BORING 和 HAHAHA。这些字是三维场景里的粒子,而不是网页文字,它们从选手身后浮起,再慢慢淡掉,给访客一种有人在台下看着的压力。
03动效
这个游戏从进门到结算,都是一连串的舞台调度。访客按下 Fight 后,屏幕缩成一个圆形的舷窗,窗里是访客自己的手臂,下面写着 Looking for a challenger(正在寻找对手)这类等待文案。找到对手后,两条手臂从舷窗里出来扣在一起,READY 和 FIGHT 两个大字随着一团白色的冲击波炸出来,比赛才开始。每一局结束后,屏幕先打出 ROUND 2 的字样,再重复一遍 READY 和 FIGHT。
比赛中的动画都在放大点击的反馈。两条手臂的角度直接对应分差,访客点得快,自己的手臂就一点点把对方压下去,镜头也跟着偏过去。一局分出胜负时,镜头会冲到赢家那条手臂跟前。赢下一整场后,一条手臂在金色的场景里单独举起来,VICTORY 几个大字斜着压在它前面。对局中的画面始终保持每秒 60 帧,也就是每帧约 16.7 毫秒,最慢的一帧是 36 毫秒。

04工程
No Mercy Michel 的界面是用 Vue 写的,Vite 负责打包,三维部分交给 three.js,three.js 外面还包着一层 Merci-Michel 自己的 WebGL 框架。这个游戏可能早在几年前就做好了。它用的 three.js r146 是 2022 年发布的版本,项目在后台数据服务上的名字又叫 mm-10years,看起来是工作室十周年时做的,今年才拿到 FWA 当日站。
实时对战靠的是 Google 的 Firebase,这是一套帮网站存取实时数据的云端服务。访客进站时会被分配一个匿名身份,按下 Fight 后进入 Firebase 实时数据库里的等候区。匹配到真人之后,两边的点击数据是通过点对点的连接直接互相发送的,排行榜和连胜记录则存在 Firebase 上。
这个三维场景在显卡上的负担很轻,结算页上每一帧只向显卡发出 23 次绘制指令(draw call),场景里约 5.6 万个三角形。程序会先按显卡型号定一个初始画质档位,画面跑顺之后再往上调,在 RTX 3060 这一级的显卡上,开场 7 秒左右就能升到最高一档。
这个游戏的下载量很大,首次打开首页就要下载约 11.4 MB,而访客这时还只看到一个输入框和一个按钮。下载量里最大的单个文件是一个 1.6 MB 的音效合集,接着是手臂用的三张 PNG 贴图,合计约 3.2 MB,最大的一张是 1.5 MB 的法线图。法线图记录的是表面的细小起伏,让手臂表面在不增加模型面数的情况下也多出细小的凹凸。打完两场比赛后累计是 13.6 MB,多出来的主要是分成三层的背景音乐,每层约 380 KB。
首屏本身来得很快,服务器在 150 到 215 毫秒内返回第一个字节,浏览器 276 到 344 毫秒画出第一块内容(FCP)。这两项分别远在 Google 建议的 0.8 秒和 1.8 秒之内,加载中也没有东西跳位置。问题出在之后的准备阶段,页面在加载时有一个长 1.2 秒的长任务,也就是一段让浏览器连续忙着、完全不响应输入的脚本,访客这时点任何地方都没有反应。
键盘用户能玩这个游戏,读屏软件的用户和怕晃动画面的访客却被挡在了外面。空格键和鼠标左键的作用一样,所以只用键盘也能打完一场。整个场景却画在一块没有任何文字说明的画布里,读屏软件的用户听不到比分,也不知道对手是谁。操作系统里有一个减少动态效果的设置,是给容易被屏幕上的运动弄得不舒服的人用的,这个站的样式表没有为它写任何规则,镜头摆动、粒子文字和冲到手臂跟前的特写在任何设置下都照常播放。
05评分与团队
| 奖项 | 出处 | 日期 | 分数 |
|---|---|---|---|
| FWA of the Day | The FWA | 2026-09-26 | 85 POINTS,DAYS 2 |
Merci-Michel 的这个游戏在 FWA 拿到 85 分,FWA 把它归在 Fun & Playable(好玩可玩)、Game(游戏)和 Personal/Portfolio(个人与作品集)三个分类下。FWA 不公布分项分数,所以看不出评委在哪一方面给分最高。
| 署名 | 身份 | 战绩 |
|---|---|---|
| Merci-Michel | 巴黎数字游戏化工作室 | FWA 80(FOTD 64) |
署名只有 Merci-Michel 这个工作室,而游戏里的 28 位对手就是这间工作室的成员,所以做游戏的人和被打的人是同一群人。Merci-Michel 是一家巴黎的数字游戏化工作室,也就是把品牌内容做成游戏的工作室。这个游戏是它拿到的第 80 个 FWA,它的当日站一共有 64 个。
06档案
- 获奖日期
- 2026-09-26
- 奖项
- The FWA FOTD 2026-09-26
- 站点
- https://no.merci-michel.com/
- 署名
- Merci-Michel
- 设计取向
- interface
- 技术路线
- realtime
- The FWA
- 85 POINTS,DAYS 2。https://thefwa.com/cases/no-mercy-michel
- 技术栈
- Vue,Vite,three.js r146,Firebase 实时数据库与匿名登录,点对点连接,Web Audio 音频精灵
- 资产总计
- 首次加载约 11.4 MB,其中音效合集 1.6 MB,三张 PNG 贴图约 3.2 MB。打完两场 13.6 MB
- 首屏与帧率
- FCP 276 到 344 ms,LCP 376 ms,CLS 0。对局 60 fps