Baba Make Parabox(简称 BMP)是Yangsy56302以推箱子游戏Baba Is You(by Arvi Hempuli)的机制为基础进行二次创作,缝合了另一个推箱子游戏Patrick's Parabox(by Patrick Traynor)的主要机制而做出的推箱子游戏,目前处于开发阶段。
注意:除了可能导致游戏崩溃或关卡包数据损坏的严重漏洞修复以外,本游戏将不再更新。
注意:除了可能导致游戏崩溃或关卡包数据损坏的严重漏洞修复以外,本游戏将不再更新。
注意:除了可能导致游戏崩溃或关卡包数据损坏的严重漏洞修复以外,本游戏将不再更新。
重要的事情说三遍。即使Baba Make Parabox真的有后续,那也肯定不会在这里的。
(相对) 稳定版本请自行前往 3.926 分支。
本游戏的源代码使用GNU 通用公共许可证第三版作为开源协议。
本游戏使用Pygame作为游戏引擎; Pygame使用GNU宽通用公共许可证 2.1版作为开源协议。 本人不提供Pygame的源代码,而是提供使用未经修改的Pygame版本 经PyInstaller打包后形成的游戏程序; PyInstaller使用GNU通用公共许可证 第2版作为开源协议。
本人并未拥有游戏纹理的所有权。 如果您有关于游戏纹理的使用权等权利的更多信息,请尽快联系我。
该游戏的雏形诞生于2024.05.15,游戏文件夹创建时间为北京时间12:12:15。
请去查看changelog.md(段落标题就是链接)。
请跳转到Github, 点击页面右上方写着Code的绿色按钮, 在展开的下拉菜单里点击最靠下的的Download zip即可下载所需的压缩包。
您也可以点击此链接以直接下载。
压缩包(BabaMakeParabox-main.zip)内含有可执行程序(bmp.exe),源代码(BabaMakeParabox/),
Baba Make Parabox 添加的新纹理(sprites_new/), Baba Is You 的部分音效(sounds/) 等内容。
备用下载地址包括:
- 在您准备安装的位置(如
C:\Program Files\)新建文件夹; - 将压缩包
BabaMakeParabox-main.zip内的文件和文件夹解压到第 1 步新建的文件夹内; - 在第 2 步解压的文件中找到
baba-is-you-original-sprites.zip(Baba Is You 的纹理),解压到与第 2 步相同的文件夹内; - 找到文件夹
sprites_old,并将其重命名为sprites; - 找到文件夹
sprites_new,并将里面的所有文件转移到在第 4 步被重命名的文件夹(sprites,重命名前称为sprites_old)里面。
- 完成推荐安装方式的所有步骤;
- 通过以下任意一种方式安装Python:
- 官方安装方式
- 进入Python 官方网站;
- 找到位于Logo右下方的Downloads,悬停展开;
- 在展开后的部分找到Download for Windows下方的按钮,点击以下载;
- 打开下载完成的安装程序,勾选最下方的Add python.exe to PATH,然后点击醒目的Install Now以安装Python;
- 等待安装完成,然后重启电脑。
- (待补)
- 官方安装方式
- 运行
inst-win.bat,然后耐心等待几分钟,直到文件夹内出现bmp.exe和submp.exe。
双击运行play-win.bat,这将会间接运行bmp.exe,然后启动程序。
直接运行bmp.exe也是可行的,但程序崩溃时终端窗口会直接关闭,
很难看到错误信息,也就无法在汇报漏洞时完整地描述情况,所以不推荐。
如果您的Windows系统安装了Python,或者您使用了备用方式来安装游戏,
那么还可以尝试运行run-win.bat来启动游戏。
游戏仅在命令行窗口存在且未选中内部文本时正常运行。
游戏未响应时,请先在命令行内 取消选中文字 , 确保游戏 并未询问输入 , 然后耐心 等待十秒左右 直至游戏继续运行。
如果游戏仍然处于未响应状态或在一段时间后崩溃,则可以确认该现象是一个游戏漏洞。
Baba Make Parabox目前仍然处于开发阶段,游戏内容随时可能变更,因此暂未制作大型关卡包。
早期版本遗留的测试用关卡包文件仍能使用
(其中包括一个由彩虹箱RainbowBox所制作的玩法测试关卡包)。
从v4.1起,该版本之前创建的所有的关卡包文件都将无法读取,直到游戏内置的关卡包更新系统兼容这些格式。
迫切于体验新版本更新内容的玩家可以自行制作关卡包。
Baba Is You中用于组成游戏规则的物体。
文本默认可以被推动, 这也是Baba Is You的核心内容: 自行更改可用的游戏规则以达成目标。
在规则内代表某种物体。
例如,ROCK代表场景中的岩石(Rock)。
| 显示名 | ID | 备注 |
|---|---|---|
| ALL | text_all |
指代已出现的所有物体 |
| TEXT | text_text |
指代所有文本,包括但不限于自身 |
| SPACE | text_space |
指代空间 |
| CLONE | text_clone |
指代克隆空间 |
| Ø | text_parabox |
指代悖论空间 |
| ∞ | text_infinity |
指代无穷大悖论空间 |
| ε | text_epsilon |
指代无穷小悖论空间 |
| LEVEL | text_level |
指代关卡 |
| PATH | text_path |
指代路径 |
一种特殊的名词,用于指代某类具体的文本物体,当然也包括其他元文本。
Baba Make Parabox中元文本的外观与Baba Is You中普遍使用的外观(添加外轮廓线)不同,
而是在原本的文本基础上添加半透明数字,以代表额外的指代层数(也就是额外的text_数量)。
在规则内代表某种性质。
例如,PUSH代表可以被推动(Push)的性质。
某些情况下,名词也可以作为属性词使用。
| 显示名 | ID(省略前缀) | 备注 |
|---|---|---|
| ENTER | enter |
物体可以进入空间;空间允许物体进入 |
| LEAVE | leave |
物体可以离开空间;空间允许物体离开 |
| FLIP | flip |
横向翻转 |
| TEXT+ | text_plus |
元文本:物体转名词 |
| TEXT- | text_minus |
元文本:名词转物体 |
在规则内用于决定施加属性的方式(说实话这个不怎么直观)。
例如,动词IS会直接将后文中的性质施加给前文中的物体,
所以ROCK IS PUSH会将PUSH代表的性质施加给ROCK代表的物体,
最终才导致岩石能被推动。
可以限定名词的指代范围。
需要放在名词之前。
例如,SELDOM KEKE限定了KEKE的范围,
其中SELDOM是前缀,
KEKE是名词。
需要放在名词之后,且需要尾随属性词以进一步确定指代范围。
例如,BOX ON TILE限定了BOX的范围,
其中ON是中缀,
BOX是名词,
而TILE原本是名词,在此处则用作属性词确定范围。
用于并列绝大多数同类词,不支持动词。
例如,PLANET AND ROBOT IS YOU AND ME。
用于对词义取反,作用在名词与修饰词上时反转指代范围, 作用在属性词上时则取消物体的相同属性,不支持动词。
例如,IT IS NOT CRAB内的NOT否定CRAB。
可能并不是最新版。
TEXT IS PUSHCURSOR IS SELECTNOT META LEVEL IS STOPNOT META SPACE IS PUSHNOT META CLONE IS PUSHMETA CLONE IS NOT LEAVE
容纳物体的空间。废话……
同时可以以物体的形式“出现”在空间内,甚至可以“容纳”自身, 这也是Patrick's Parabox的核心内容:套娃。
克隆物体是空间物体的一种变体。
克隆只允许物体进入而不允许物体离开, 这样可以避免物体可以在退出多个空间时复制自身, 尽管使用多个普通的空间物体仍然可以做到这一点。
你知道的,咱们总得有种可以将不同的关卡放在同一位置的方法吧。
多个关卡可以“引用”同一个空间(类似于多个空间物体“引用”同一个空间)。
光标物体默认拥有SELECT属性,
不过除此之外就真的没什么特别的了——
那些特殊功能都是SELECT属性所导致的。
只有已解锁的路径物体和关卡物体才会允许带有SELECT特性的物体移动。
同时,路径物体的解锁条件可以在编辑器内自定义。
用于解锁路径物体。
将名词用做属性可以使被作用的物体变成用作属性的物体这句真绕。
- 将空间或关卡转变为常规物体时,会保留原本的指代信息。
- 将常规物体转变为空间或关卡时,新的物体不会指代任何空间或关卡。
- 例外:如果原本的物体由于某些原因还保留有相关信息,则该指代信息会被新的物体使用。
- 将空间转变为关卡时,会创建一个只引用原空间的新关卡,作为新的关卡物体所指代的关卡。
- 将关卡转变为空间时,原关卡所引用的全部空间都会成为新的空间物体。
- (
W/S/A/D) / 方向键:移动拥有YOU属性的物体 SPACE/RETURN:等待一轮Z:撤销操作R:重新开始该关卡CTRL+...:重新开始整个关卡包
ESC:保存当前关卡进度,并回到上层关卡O/P:载入 / 保存临时存档CTRL+...:可指定此临时存档的名字 *ALT+...:指定使用关卡包文件
TAB:显示各种信息F1: 显示FPSF12: 切换调试模式- 鼠标左键:进入空间
- 鼠标右键:回到上层空间
- 鼠标中键:显示所选物体的信息
- 鼠标滚轮:循环选择空间
- 关闭游戏窗口:停止游玩并保存该关卡包 *
- 关闭终端:强制退出程序
该章节暂不提供有关如何设计谜题等问题的信息。
- 鼠标左键:放置物体
SHIFT+...:即使该位置存在物体也额外放置CTRL+...:设置部分物体的额外信息 *ALT+...:进入空间SHIFT+...:进入关卡
- 鼠标右键:删除物体
ALT+...:回到上层空间SHIFT+...:回到上层关卡
- 鼠标中键:从光标位置选择物体类型
- 鼠标滚轮:循环选择物体类型
SHIFT+ 鼠标滚轮向上滚动:选择该物体的名词SHIFT+ 鼠标滚轮向下滚动:选择该名词指向的物体ALT+...:循环选择空间SHIFT+...:循环选择关卡
- (
W/S/A/D) / 方向键:选择物体朝向 0~9:从快捷栏选择物体类型SHIFT+...:设置快捷栏的物体类型
N:新建空间 *ALT+...:新建关卡 *
M:删除空间 *ALT+...:删除关卡 *
R:设置全局规则 *SHIFT+...:删除全局规则 *
T:设置所处空间的ID *ALT+...:设置所处关卡的ID *
CTRL+ (X/C/V):剪切 / 复制 / 粘贴 光标上的物体F1: 显示FPSF12: 切换调试模式- 关闭游戏窗口:停止关卡包编辑器并保存该关卡包 *
- 关闭终端:强制退出程序
注意:带有 * 的键位提示代表按下该键之后需要在终端内输入更多信息。 此时游戏窗口会停止响应,信息输入完成后会恢复。
放置的空间、克隆和关卡默认指向摄像头所在的空间和关卡。
- 就在下期
- 短期
- 还原
MORE,YOU2等相对容易实现的属性。 - 纯装饰属性,如
RED、BLUE等颜色。
- 还原
- 中期
- 将指代对象存储在名词物体的实时信息内,可用的名词物体存储在空间本体的实时信息内。
- 文本可以跨空间组成规则,生效范围取决于该名词所在的空间。
- 加入
SELF,用于指代某条规则内所出现的名词。SELF IS YOU,SELF ON BABA IS YOU没有实际效果。BABA AND KEKE NEAR SELF IS YOU等价于BABA NEAR BABA IS YOU和KEKE NEAR KEKE IS YOU。SELF NEXTTO SELF IS YOU等价于BABA NEXTTO BABA IS YOU,KEKE NEXTTO KEKE IS YOU,ME NEXTTO ME IS YOU……对于每个ALL所指代的名词各有一条规则。
- 更改
ENTER和LEAVE的工作方式。- 对于物体:
ENTER使该物体在与空间物体重合时,转移至对应空间的正中心;LEAVE使该物体立即离开其所在的空间,转移至外层空间内与原空间物体相同的位置。- 由于规则不会在上层空间生效,一般情况下可以保证该物体只会离开一层空间。
- 对于空间:
ENTER使该空间允许物体进入,LEAVE使该空间允许物体退出。
- 对于关卡:
ENTER使该关卡允许物体“进入”,LEAVE使该关卡允许物体“退出”。- 判断物体是否即将“进入”或“退出”的条件类似于“对于物体”所描述的条件。
- 物体“进入”时的位置取决于含有
YOU属性的物体,并且允许复制。 - 物体“退出”时的位置与“对于物体”所描述的位置相同。
- 对于物体:
- 重新加入平滑移动插值,并使物体出现或消失时通过改变其透明度进行提示。
v4.111部分实现。
- 长期
- GUI(图形用户界面):
- 使用可输入文本的游戏窗口取代命令行的显示。
- 实现
Too Complex,Infinite Loop与其检测方法。 - 实现
GROUP的逻辑。 - 实现
GAME的复杂语法。- 目前对
GAME应用修饰词会使其不指代任何物体。
- 目前对
- GUI(图形用户界面):
- 遥遥无期
- 官方关卡包……?
属性前带有多个NOT的规则只会否定一条恰好缺少一个NOT的规则。v4.104已废弃该设定。
FEELING每轮只检测一次,以试图避免检测停机问题和Infinite Loop。WORD属性对TEXT有效。
- 游戏过程中,即使镜头所在空间的方向更改,鼠标仍会使用默认方向。
- 移动系统的完成度很低,有时表现会与预期不同,主要出现在多个物体同时移动的情况下。
- 例如,多个常规空间物体同时存在时,物体进入该空间所复制出的新物体的数量。
Bilibili:https://space.bilibili.com/430612354
QQ:2485385799