背景信息
我父亲带我去广东参观一家生产锅具的工厂,工人们正在进行喷砂作业。他们只佩戴着简易的口罩,在极其恶劣的环境中工作。空气中弥漫着粉尘,咳嗽声不绝于耳。父亲告诉我,在广东,每年都有数千名工人因吸入过量粉尘患上肺病,这严重影响了他们的健康,有人甚至因此丧命。看到这一幕,我深受触动,决心找到一种既能保障工人健康,又不影响工作效率的工艺,来改变这种糟糕的现状。
进入工厂后,我震惊地看到,工人们的脸上除了口罩和护目镜遮住的地方,全都沾满了粉尘。持续不断的咳嗽声充斥在空气中。尽管这一群体占到总人口的近 0.7%,他们的健康和工作状况却一直未被报道,也被社会和公众所忽视。
上图:工人的工作环境中充满了粉尘,但他们只有护目镜和薄口罩作为防护。一位工人摘下护目镜时,我看到他的眉毛和睫毛都被白色的粉尘覆盖了,他说自己已经习惯了……
设计目标
玩法设计
打砂人

- 生命值:显示你当前的生命值。
- 目标与倒计时面板:该面板显示玩家需要在 5 分钟倒计时内完成 1000 口锅的喷砂任务。
- 合格率面板:显示你已经完成喷砂的锅具合格率。
装配线
视觉模糊
擦拭护目镜
屏住呼吸
在喷砂时,砂粒会扩散到空气中,但会在一段时间后沉降。按住空格键屏住呼吸 3 秒,可避免吸入过量粉尘,但之后需要深呼吸。你需要协调好屏息与喷砂的节奏,避开弥漫粉尘的空气。
生命值下降
随着时间推移,过量吸入砂粒会导致生命值下降。咳嗽图标会反映三种不同的健康状况:良好、正常、恶劣。当生命值(心形图标)耗尽时,游戏结束,玩家角色死亡。


游戏结局
视觉设计与打磨

风格迭代

在我看来,喷砂工人这一主题本身就充满了讽刺意味。我最初的目标是采用写实绘画风格,但意识到需要表现咳嗽、颤抖等元素。虽然音效和屏幕特效可以传递这些感受,但我希望通过视觉效果让观众“听”到这些声音。于是,漫画/插画风格进入了我的视野,它能通过视觉化的方式强化音效。此外,更柔和的插画风格与我想要描绘的“残酷”现实形成了鲜明对比,让主题更加深刻。

极简视觉
这款游戏采用了极简视觉风格,既富有表现力又高效直观。这种简洁性不仅提升了美学吸引力,还确保玩家能够不受干扰地专注于核心玩法。干净利落的画面设计,让玩家能轻松地在游戏环境中找到方向。
聚焦红色元素
游戏的一大特色是对红色元素的强调,这些红色元素是玩家的主要视觉焦点。通过突出这些元素,游戏简化了玩家的目标,让他们清楚地知道注意力应该投向何处。这一设计选择通过消除视觉混淆、提供明确的方向感,提升了整体游戏体验。

游戏开发
开发挑战
喷砂的视觉效果很难实现,这一直困扰着我。我尝试了多种方法来实现它。
方案一:Sprite Mask

最开始,我尝试在 Unity 中使用 Sprite Mask 来实现这一效果。当玩家按下喷砂按钮时,会实例化一个形成喷砂形状的遮罩。
但这种方案存在几个明显的缺点:
- 生成的喷砂形状遮罩不连续,与现实中喷砂的视觉效果不符。
- 会生成大量游戏对象(GameObjects),占用电脑内存,降低游戏帧率(FPS)。
方案二:插件 - Scratch Card
程序结构

用文字看这张图
游戏脚本结构的两张树状图。上:玩家控制器(C# Script)连到动作(下面是喷砂〔Plugin〕和擦护目镜〔Animation〕)和血量(value),血量经过判断「>阈值」(If)后连到反馈,反馈分出咳嗽气泡(Prefabs)、咳嗽音效(Audiosource)和相机震动(Cinemachine)。下:游戏管理器连到 UI 更新器(下面是更新目标〔Text〕和时间〔Text〕,时间经过判断「>计时上限?」(If),Yes 则游戏结束)、传送带(经过结束判断(If),No 则停止,Yes 则继续移动,都是 Transform)和砂粒生成器(C# Script)。
咳嗽效果
高斯模糊
公式
Mathf.Lerp(Blursize)
代码示例
游戏画面
结局动画

我为这款只有单一结局的游戏制作了结局动画:它象征着喷砂工人因病死亡,化为尘埃。一张迟来的专利证书缓缓飘落,预示着落后生产方式的终结。虽然我听说过科学研究正在改进锅具表面涂层的化学附着工艺,但那些在恶劣工作条件下日复一日劳作的无数工人,真的能等到工艺改进的那一天吗?
玩家反馈

在游戏结束时,我起初感到很沮丧,疑惑为什么自己如此努力地喷砂、屏住呼吸,最后还是死了(坏结局)。多玩几轮后,我明白了吕承洋的用意:让玩家看到喷砂工人的悲剧和徒劳的努力。这些工人的命运让我深受触动,也很难过。人们应该更多地关注工人的工作环境与健康,用科学方法改进生产流程,或者至少加强对喷砂工人的保护。这是一款很棒的游戏!
Jesse,18 岁
























