The-Powder-Toy/The-Powder-Toy
GitHub: The-Powder-Toy/The-Powder-Toy
一款基于 C++ 和 SDL 的免费物理沙盒桌面游戏,模拟气压、热量、重力及物质间的复杂交互,供玩家自由创造与探索。
Stars: 5219 | Forks: 876
# The Powder Toy - 2026年6月
从 [Powder Toy 官网](https://powdertoy.co.uk/Download.html)获取最新版本。我们也上架了 [Steam](https://store.steampowered.com/app/1148350/The_Powder_Toy/)。
要使用保存等在线功能,你需要[注册一个账户](https://powdertoy.co.uk/Register.html)。
你也可以访问[官方 TPT 论坛](https://powdertoy.co.uk/Discussions/Categories/Index.html)。
你是否曾想要炸毁某物?或者一直梦想着操作核电站?你有意愿开发自己的 CPU 吗?The Powder Toy 能让你做到所有这些,甚至更多!
The Powder Toy 是一款免费的物理沙盒游戏,它模拟了气压和流速、热量、重力以及不同物质之间无数的相互作用!游戏为你提供了各种建筑材料、液体、气体和电子元件,可用于构建复杂的机器、枪支、炸弹、逼真的地形以及几乎任何其他东西。然后你可以挖掘它们并观看酷炫的爆炸,添加错综复杂的接线,与小火柴人一起玩耍或操作你的机器。你可以浏览并游玩社区制作的数以千计的存档,或者上传你自己的存档——我们欢迎你的创作!
这里有一个 Lua API——你可以自动化你的工作,甚至为游戏制作插件。The Powder Toy 是免费的,其源代码在 GNU 通用公共许可证下发布,因此你可以自己修改游戏或协助开发。
# 构建说明
请参阅 Wiki [主页](https://powdertoy.co.uk/Wiki/W/Main_Page.html)上的 _Powder Toy 开发帮助_ 部分。
# 使用的库及其他资源
* [bzip2](http://www.bzip.org/)
* [FFTW](http://fftw.org/)
* [JsonCpp](https://github.com/open-source-parsers/jsoncpp)
* [libcurl](https://curl.se/libcurl/)
* [libpng](http://www.libpng.org/pub/png/libpng.html)
* [Lua](https://www.lua.org/)
* [LuaJIT](https://luajit.org/)
* [Mallangche](https://github.com/JammPark/Mallangche)
* [mbedtls](https://www.trustedfirmware.org/projects/mbed-tls/)
* [SDL](https://libsdl.org/)
# 指南
像使用 MS Paint 一样,用鼠标点击元素并在场地中绘制即可。游戏的其余部分就是探索接下来会发生什么。
# 按键控制
| 按键 | 操作 |
| ----------------------- | --------------------------------------------------------------- |
| TAB | 在圆形/方形/三角形笔刷之间切换 |
| 空格键 | 暂停 |
| Q / Esc | 退出 |
| Z | 缩放 |
| S | 保存印章(STK2 发布时与 Ctrl 一起使用) |
| L | 加载上次保存的印章 |
| K | 印章库 |
| 0-9 | 设置视图模式 |
| P / F2 | 将截图保存为 .png |
| E | 打开元素搜索 |
| F | 暂停并步进到下一帧 |
| G | 增大网格尺寸 |
| Shift + G | 减小网格尺寸 |
| H | 显示/隐藏 HUD |
| Ctrl + H / F1 | 显示介绍文本 |
| D / F3 | 调试模式(STK2 发布时与 Ctrl 一起使用) |
| I | 反转压力和速度图 |
| W | 循环切换重力模式(STK2 发布时与 Ctrl 一起使用) |
| Y | 循环切换空气模式 |
| Ctrl + E | 循环切换边缘模式 |
| B | 进入装饰编辑器菜单 |
| Ctrl + B | 开启/关闭装饰 |
| N | 开启/关闭牛顿重力 |
| U | 开启/关闭环境热量 |
| Ctrl + I | 安装 Powder Toy,用于通过双击加载存档/印章 |
| 反引号 (`) | 开启/关闭控制台 |
| = | 重置压力和速度图 |
| Ctrl + = | 重置电流 |
| \[ | 减小笔刷尺寸 |
| \] | 增大笔刷尺寸 |
| Alt + \[ | 笔刷尺寸减 1 |
| Alt + \] | 笔刷尺寸加 1 |
| Ctrl + C/V/X | 复制/粘贴/剪切 |
| Ctrl + Z | 撤销 |
| Ctrl + Y | 重做 |
| Ctrl + 光标拖动 | 矩形 |
| Shift + 光标拖动 | 直线 |
| 鼠标中键点击 | 吸取元素 |
| Alt + 鼠标左键点击 | 吸取元素 |
| 鼠标滚轮 | 更改笔刷尺寸 |
| Ctrl + 鼠标滚轮 | 更改笔刷垂直尺寸 |
| Shift + 鼠标滚轮 | 更改笔刷水平尺寸 |
| Shift + R | 粘贴印章时水平镜像选中区域 |
| Ctrl + Shift + R | 粘贴印章时垂直镜像选中区域 |
| R | 粘贴印章时逆时针旋转选中区域 |
| F11 | 开启/关闭全屏 |
## 命令行
| 命令 | 描述 | 示例 |
| --------------------- | ------------------------------------------------ | ------------------------------------------- |
| `scale:SIZE` | 更改窗口缩放比例 | `scale:2` |
| `kiosk` | 全屏模式 | |
| `proxy:SERVER[:PORT]` | 要使用的代理服务器 | `proxy:wwwcache.lancs.ac.uk:8080` |
| `open FILE` | 将文件作为印章或游戏存档打开 | |
| `ddir DIRECTORY` | 用于保存印章和首选项的目录 | |
| `ptsave:SAVEID` | 打开在线存档,用于 ptsave: URL | `ptsave:2198` |
| `disable-network` | 禁用互联网连接 | |
| `disable-bluescreen` | 禁用蓝屏处理程序 | |
| `redirect` | 将输出重定向到 stdout.txt / stderr.txt | |
| `console` | 在 Windows 上将输出重定向到新的控制台 | |
| `cafile:CAFILE` | 设置证书包路径 | `cafile:/etc/ssl/certs/ca-certificates.crt` |
| `capath:CAPATH` | 设置证书目录路径 | `capath:/etc/ssl/certs` |
标签:C++, Lua, rizin, SDL, 开源, 数据擦除, 沙盒游戏, 物理模拟