本页目录

星际争霸:母巢之战 AI 开发接口(BWAPI)

bwapi · bwapi/bwapi

BWAPI 是免费开源的 C++ 框架,用于与即时战略游戏《星际争霸:母巢之战》交互,供学生、研究者与爱好者编写能实际对局的 AI 代理。默认仅向 AI 暴露可见游戏状态,隐藏迷雾中单位信息并禁止用户输入,以便编写不作弊的 AI;这些默认设置...

沙盒生存 模拟经营 SDL C++ 物理系统 存档系统 粒子系统 UI 系统 高级
★ Stars 5,395 Forks 923 License LGPL-3.0 更新 2026-11-06

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
README 未提供国内网络或镜像相关说明;在线功能(保存存档等)依赖官网账号与服务器,国内访问速度待核验。构建依赖较多(SDL、FFTW、libcurl、mbedtls 等),具体步骤以官方 Wiki 为准。

中文项目介绍

《The Powder Toy》是一款用 C++ 编写、基于 SDL 的桌面版「落沙」物理沙盒。它把经典落沙玩法扩展成一套相当完整的物质模拟系统:除了颗粒堆积,还模拟气压、气流速度、热量与重力,以及不同物质之间数量繁多的相互作用。

README 用几个很直白的设问概括了它能做什么:想炸点东西?想操作一座核电站?想自己造一颗 CPU?这些都可以在游戏里尝试,而且不止于此。

游戏提供建材、液体、气体与电子元件等各类元素,可以搭建复杂机械、枪械、炸弹、逼真的地形,以及几乎任何你能想到的装置。搭好之后,你可以去挖掘它们、观看爆炸效果、布置精细的电路布线、摆弄小人,或者直接操作自己造的机器运转。社区里已有成千上万的存档可供浏览和游玩,你也可以上传自己的作品。

项目本身免费,源码以 GNU 通用公共许可证分发,因此你可以自行修改,也可以参与开发。

核心功能

多物理量模拟

在落沙颗粒之外,同时模拟气压与气流速度、热量、重力,以及物质之间的相互作用。

丰富的元素库

涵盖建材、液体、气体与电子元件,可用于搭建机械、武器、地形等装置。

可交互的实验场

支持挖掘、爆炸、布线,以及操控小人等玩法。

社区存档

可浏览并游玩社区制作的数千个存档,也能上传自己的创作。

Lua API

可以自动化操作,甚至为游戏编写插件。

开源可改

源码以 GPL 分发,欢迎自行修改或协助开发。

技术架构分析

技术要点

  • 语言与图形层:C++ 编写,使用 SDL 处理窗口与输入。
  • 模拟核心:围绕气压、气流速度、热量与重力构建,并处理大量物质之间的相互作用。
  • 脚本扩展:提供 Lua API,可用于自动化与插件开发。
  • 依赖库:README 列出的第三方库包括 bzip2、FFTW、JsonCpp、libcurl、libpng、Lua、LuaJIT、Mallangche、mbedtls 与 SDL。

构建与运行

README 没有在正文中展开编译步骤,而是指向官方 Wiki 主页面上的「Powder Toy Development Help」一节,构建方法请以该文档为准。

获取游戏的方式:从 Powder Toy 官网下载最新版本,或在 Steam 上获取。若想使用保存存档等在线功能,需要在官网注册账号;官方论坛同样可以在网站上访问。

补充说明

玩法与操作

上手方式非常直接:用鼠标点选元素,然后像用画图软件一样在场地里绘制,剩下的就是观察会发生什么。

README 给出的常用按键包括:

  • TAB 在圆形、方形、三角形笔刷之间切换;[ 与 ] 调整笔刷大小,鼠标滚轮同样可以改变笔刷尺寸。
  • 空格 暂停,F 暂停并单步前进一帧。
  • Z 缩放,0–9 切换视图模式。
  • E 打开元素搜索,B 进入装饰编辑菜单。
  • S 保存图章,L 载入上次保存的图章,K 打开图章库。
  • P 或 F2 将截图保存为 .png。
  • Ctrl + C/V/X 复制、粘贴、剪切,Ctrl + Z 撤销,Ctrl + Y 重做。
  • 按住 Ctrl 拖动鼠标为矩形选区,按住 Shift 拖动为直线;中键或 Alt + 左键 取样元素。
  • W 循环重力模式,Y 循环空气模式,U 开关环境热量,N 开关牛顿引力。
  • F11 切换全屏。

此外还支持命令行参数,例如 scale:SIZE 调整窗口缩放、kiosk 全屏模式、open FILE 打开存档或图章、ptsave:SAVEID 打开在线存档、disable-network 禁用网络连接,以及 cafile: / capath: 指定证书路径等。

学习建议

这个项目适合作为「模拟类沙盒」的阅读样本:可以顺着元素定义与相互作用、气压与热量等物理量的更新、SDL 渲染与输入处理这几条线索阅读源码,再结合 Lua API 观察脚本层如何与模拟核心交互。由于构建细节集中在 Wiki,动手编译前建议先通读官方开发帮助,避免在依赖配置上走弯路。

开源许可证与版权说明

许可证标识:LGPL-3.0。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目