跳至主要内容

Sand:浏览器里就能玩的超写实沙子模拟器,玩法与原理全解析

abe ·

Sand 是一款免费的浏览器小玩具,能把手机屏幕变成一盘手感逼真的沙子。本文介绍怎么玩、它为什么看起来这么真实,以及它在落沙游戏悠久历史中的位置。

VENO 封面:浏览器沙子模拟器 Sand 的两张倾斜截图,一张是倒出的沙子螺旋,一张是在深色沙子中划出的之字形沟槽,配文“倾斜摇一摇”

Sand 是一款在网页浏览器中运行的免费沙子模拟器。 它会用几十万颗细小的沙粒铺满整个屏幕,你可以用手指推动沙子、倾斜手机让它滑动,或者摇一摇把沙粒撒开。它使用 WebGL2 和 JavaScript 开发,手机、平板和台式电脑都能玩,无需下载。

它不是一款有关卡或分数的游戏,而是一个让人平静的数字玩具,有点像禅意沙盘,玩起来却出乎意料地停不下来。下面会介绍玩法、各个选项的作用、几个画出更好看图案的技巧,并简单聊聊它为什么感觉如此真实。

Sand 速览

是什么 超写实沙子模拟器(解压玩具,没有关卡)
在哪玩 任意现代浏览器打开 av.github.io/safe-sand
价格 网页版免费
设备 手机、平板和台式电脑
手机操作 拖动画线,倾斜让沙滑动,摇晃把沙撒开
电脑操作 鼠标拖动推沙,方向键或 WASD 倾斜,按住空格键(Space)摇晃
开发技术 WebGL2 和 JavaScript,在显卡芯片上进行模拟
源代码 GitHub

Sand 怎么玩

打开页面后,你会看到一张小小的开始卡片。选好沙子,再选沙子“下面”铺的是什么,然后点 Pour(倒沙)。

Sand 开始卡片:River、Beach、Desert、Volcanic、Coral 五种沙子,三种底面选项和 Pour 按钮

  1. 选择沙子类型: River、Beach、Desert、Volcanic 或 Coral。每种都有自己的配色,从灰色的河沙砾到深色火山沙,再到浅色珊瑚沙。
  2. 选择沙子下面的底面: Light、Lock screen 或 Screen off。这会改变沙粒所在的表面。
  3. 点 Pour。 在 iPhone 上,系统询问时请允许访问运动数据,否则倾斜功能无法使用。
  4. 开始玩。 用手指在沙子里划出沟槽,倾斜手机让沙子滑动,摇一摇把沙粒甩开,或者把手机翻过来屏幕朝下,看沙子掉落。

刚倒出的河沙在浅色底面上形成柔和的螺旋图案

在电脑上,你用鼠标代替手指,用方向键或 WASD 倾斜虚拟沙盘,按住空格键摇晃。沙子的反应完全一样,不过作者是为手机版设计的,因为运动传感器能让沙子回应你真实的手部动作。

在手机上实现真正的全屏

浏览器地址栏会占用空间。想要完整体验,可以把页面添加到主屏幕:iOS 上点 Share → Add to Home Screen(分享 → 添加到主屏幕),Android 上点 Install app(安装应用)。之后它会像应用一样全面屏打开。

这款沙子模拟器为什么感觉这么真实

你可能玩过的大多数浏览器沙子游戏都使用网格:每个像素是一个“格子”,可以是沙、水或空白,简单的规则让它一步一步往下移动。这种方式很适合搭建和混合,但沙子看起来像像素。Sand 走了另一条路,它试图还原真实的沙子。

手指在一层灰色河沙中划出的之字形沟槽,沙粒堆积在两侧边缘

根据项目在 GitHub 上的说明:

  • 每一颗沙粒都被模拟。 大约 100,000 到 460,000 颗独立沙粒同时在显卡芯片(GPU)上运动。
  • 真实单位。 模拟以毫米为单位,采用真实重力(9.81 m/s²),所以沙子的速度和轻微的滞后感都符合你对真沙的预期。
  • 每颗沙粒都不一样。 沙粒有各自的大小、矿物颜色和摩擦力。松散的沙粒会滚动、蹦跳,而一大堆沙会保持不动,直到你倾斜超过它的休止角(angle of repose),也就是沙堆在滑落前能保持的最陡坡度。
  • 光影效果。 应用每一帧都会生成沙堆的高度图,带来坡面、自阴影和褶皱处柔和的明暗。光照方向跟随手机倾斜,所以你移动时阴影会拉长,石英颗粒会闪光。
  • 声音来自沙子本身。 沙沙声由每秒数千个细小的咔嗒声组成,取决于实际在动的沙子有多少。小石子发出的咔嗒声更低沉。没有东西在动时,就完全安静。

深色火山沙上一道锐利的之字形沟槽,切口边缘的沙粒颜色更深

还有一个细节能看出它对真实感的追求:旋转手机时画面不会跟着转。沙子固定在玻璃上,就像真实沙盘里的沙子一样。

沙子类型与底面对比

沙子类型 外观 适合
River 灰褐色沙砾,夹杂小石子 深而清晰的沟槽
Beach 明亮温暖的浅褐色 柔和、平静的图案
Desert 橙红色沙粒 在浅色底面上形成强烈色彩对比
Volcanic 深灰到黑色 锐利线条和浓重阴影
Coral 非常浅,几乎是白色 细腻、低调的漩涡

“沙子下面”选项会改变沙粒所在的表面:Light、Lock screen 或 Screen off。用同一种沙子分别试试,看看你最喜欢哪种效果。

浅色珊瑚沙在浅色背景上倒成松散的螺旋

画出更漂亮沙画的 7 个技巧

  1. 倒沙后等一秒。 先让沙粒落定再画,否则线条会被重新填平。
  2. 慢慢画,边缘更干净。 手指慢慢划会留下清晰的沟槽和整齐的沙壁;快速一扫则会把沙子甩到两边。
  3. 小幅度倾斜。 倾斜到沙子刚开始移动的位置,再把手机放平。用这种方法可以引导整片沙丘。
  4. 摇一摇重来。 用力一摇,沙子就会重新铺成均匀的一层,方便下一次作画。
  5. 画画选火山沙。 浅色底面上的深色沙最能显出线条和阴影。
  6. 戴上耳机打开声音。 声音来自正在移动的沙粒,你能听出缓慢滑动和突然崩塌的区别。
  7. 觉得卡顿就检查低电量模式。 在 iPhone 上,低电量模式(Low Power Mode)会把浏览器限制在每秒 30 帧。应用能检测到这一点,不会因此减少沙子,但关闭低电量模式可以恢复完整帧率。

倾斜手机后河沙被推到屏幕一侧,另一侧露出一条空白

如果运行很慢

应用会自动调整画质。如果连续两秒帧率偏低,它会先逐级降低屏幕清晰度,之后才减少沙粒数量,并会记住这个档位供下次使用。所以在旧手机或没有强力显卡的笔记本上,沙子看起来可能会稍微模糊一点,但依然能流畅移动。本文截图是在使用软件渲染图形的电脑浏览器中截取的,所以有些区域看起来略有块状感。

落沙游戏简史

沙子玩具在浏览器中流行了大约二十年:

  • 2005 年: 日本一个博客上的 Java 小程序让这个类型流行起来。后来的扩展版本“Falling Sand Game”为整个类型命名。
  • 2007 年: Powder Game 在玩法中加入了液体模拟。
  • 2010 年: The Powder Toy 为电脑玩家带来了液体和牛顿引力。
  • 2019 年: Sandspiel 证明了沙子玩具可以借助编译为 WebAssembly 的 Rust 和 WebGL 在浏览器中快速运行。作者在他的文章中解释,每种元素都在网格上遵循非常简单的规则,乐趣来自相邻元素之间的互动。
  • 2020 年: Nolla Games 的 Noita 于 10 月 15 日结束抢先体验。这是一款动作 Roguelite 游戏,用工作室的话说,“每一个像素都经过物理模拟”。

Sand 是这个大家族中的另一个分支。它不在像素网格上放很多种元素,而是专注于一种材质:以毫米计量的真实沙粒,以及双手捧着沙盘的感觉。

网页游戏开发者能从中学到什么

  • WebGL2 足以承担重度模拟。 几十万个粒子在普通浏览器标签页中运行,不需要原生应用。
  • 善用传感器。 通过设备运动数据实现倾斜和摇晃,能让玩具更有实体感。注意 iOS 会请求权限,所以要在按钮点击时启动传感器。
  • 自适应画质,不要靠猜。 测量帧时间,检查浏览器是否只是限制了帧率,然后小步降低画质并记住结果。
  • 声音应跟随模拟。 根据实际运动生成的音频,比循环播放的音效样本听起来更自然。
  • 部署保持简单。 这个项目没有构建步骤:任何静态文件服务器都能托管。

常见问题

Sand 沙子模拟器免费吗?

免费。av.github.io/safe-sand 上的网页版可以直接在浏览器里玩,无需下载或注册账号。

Sand 能在电脑上玩吗?

可以。用鼠标拖动推沙,用方向键或 WASD 倾斜,按住空格键摇晃。手机版因为使用运动传感器,手感更自然。

为什么我的 iPhone 倾斜没反应?

iOS 需要你授权才能把运动数据分享给网页。点 Pour,在弹出提示时允许访问运动数据即可。

Sand 是有关卡的游戏吗?

不是。它是一个解压的沙盒玩具,没有分数、计时或目标,你只需要画、倾斜和摇晃。

什么是落沙游戏?

这是一类模拟游戏,大量细小粒子(例如沙、水或火)遵循简单的物理规则并相互作用。Powder Game、The Powder Toy 和 Noita 都是知名例子。

Sand 模拟了多少颗沙粒?

据作者介绍,大约 100,000 到 460,000 颗,具体取决于你的设备。

相关文章

游戏加载中…

VENOGAME / PLAYBOOK

我的竞技场

保存在此设备,无需账号。

点击爱心,建立自己的游戏收藏。