Hello! 欢迎来到阿珏酱のBlog!

我用WebGL做18+游戏,输了“掉装备”🔞


avatar
阿珏 2026-06-13 8

紧接上文:《同一个动画,我用三种技术栈实现的区别?》

WebGL 二次元石头剪刀布小游戏。

规则很普通:

  • 石头 > 剪刀
  • 剪刀 > 布
  • 布 > 石头

但有趣的是在于:

输了会脱衣服。

对,就是这么简单粗暴。


起因其实是“我想研究精灵图”

一开始我根本没想做游戏。
我只是想研究:

  • atlas
  • sprite
  • 图层叠加
  • 动画裁剪

这些东西。
然后想着:“总得有个实际应用场景吧?”

于是脑子一抽:

那干脆做个二次元脱衣猜拳。

然后项目开始朝奇怪方向狂奔。


这个项目最麻烦的其实不是游戏逻辑

石头剪刀布规则简单得离谱。
真正麻烦的是:衣服层级
因为角色不是:“一张完整图片”

而是:

  • 底图 (防粿体被抓包,特意加密了)
  • 衣服 A
  • 衣服 B
  • 衣服 C
  • 配饰
  • 遮挡层

不停叠。


“脱衣”其实是图层管理

玩家赢了:

  • 按设定好的顺序移除一件衣服

电脑赢了:

  • 再按逆序穿回来

听起来简单。
实际上会遇到一堆问题:


比如“不能瞬间露底图”

这个特别关键。
如果你:

先删旧衣服
再加新衣服

中间可能会闪出底图。
于是视觉效果会特别怪。
所以我后来用了:reveal 覆盖逻辑

新的层会立刻顶上。
尽量避免:

“裸体一帧闪现”。

虽然本身这项目看起来不正经
但至少技术上要优雅。


WebGL 在这里真的很舒服

这个项目我最后选 WebGL 做。
原因很简单:图层太多。

而且:

  • alpha 混合
  • 多 sprite
  • 动态切换

特别适合 GPU 干。
如果你用DOM干,可能就会被人审查元素扒衣服🥵


Atlas 真的是好文明

项目里大量东西都是 atlas。
也就是:一张大图切很多小图。

这样有几个好处:

  1. 少加载:不用疯狂请求几十张 PNG。
  2. 好管理:所有素材都在一起。
  3. WebGL 特别喜欢,GPU 本来就很适合这种:“一张纹理反复采样”。

我甚至还写了个调试工具

这个是我后来觉得最实用的部分。
因为:调 sprite 位置真的太折磨了。

尤其是:

x
y
w
h
z-index

全手填的时候,人会疯。


所以我直接做了个 devtools

可以:

  • 勾选显示哪些衣服
  • 拖拽移动
  • 实时改位置
  • 改层级
  • 复制 JSON 配置

瞬间舒服很多。


这项目让我重新理解“前端游戏”

其实浏览器现在已经强得离谱。
Canvas2D、WebGL、requestAnimationFrame 这些东西组合起来。

已经足够做很多:

  • 小游戏
  • 视觉小说
  • Live2D 风格效果
  • 角色互动系统

甚至一些轻量 galgame。


最后

这个项目本质上还是个技术实验,只是实验方向稍微有点不正经。

但它确实让我把:

  • WebGL
  • sprite atlas
  • 图层系统
  • 动画状态管理

这些东西狠狠练了一遍。

而且:

用“整活项目”学技术,真的比写 TodoList 快乐太多了。

在线试玩:https://iajue.github.io/CanvasGame/undressing/index.html

如果你还记得她: 《论网速快慢的区别》
已经不是第一次请出她整活了.(ps:赤井心,暱稱哈洽馬,是日本一位活躍在YouTube上的虛擬YouTuber,所屬事務所為hololive)
图 92

暂无评论

发表评论
OωO表情

相关阅读

最新文章

最新评论

恰饭