Skip to content

Yangsy56302/BabaMakeParabox

Repository files navigation

Baba Make Parabox

BabaMakeParabox

Baba Make Parabox(简称 BMP)是Yangsy56302以推箱子游戏Baba Is You(by Arvi Hempuli)的机制为基础进行二次创作,缝合了另一个推箱子游戏Patrick's Parabox(by Patrick Traynor)的主要机制而做出的推箱子游戏,目前处于开发阶段。

本游戏的源代码使用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/) 等内容。

备用下载地址包括需要特殊手段访问的Gitlab, 以及需要注册账号才能下载的Gitee

安装

  • 推荐方式
    1. 在您准备安装的位置(如C:\Program Files\)新建文件夹;
    2. 将压缩包BabaMakeParabox-main.zip内的文件和文件夹解压到第 1 步新建的文件夹内;
    3. 在第 2 步解压的文件中找到baba-is-you-original-sprites.zipBaba Is You 本体的纹理),解压到与第 2 步相同的文件夹内;
    4. 找到文件夹sprites_old,并将其重命名为sprites
    5. 找到文件夹sprites_new,并将里面的所有文件转移到在第 4 步被重命名的文件夹(sprites,重命名前称为sprites_old)里面。
  • 备用方式
    1. 完成推荐方式的所有步骤;
    2. 通过以下任意一种方式安装Python
      • 官方安装方式
        1. 进入Python 官方网站
        2. 找到位于Logo右下方的Downloads,悬停展开;
        3. 在展开后的部分找到Download for Windows下方的按钮,点击以下载;
        4. 打开下载完成的安装程序,勾选最下方的Add python.exe to PATH,然后点击醒目的Install Now以安装Python;
        5. 等待安装完成,然后重启电脑。
      • (待补)
    3. 运行inst-win.bat,然后耐心等待几分钟,直到文件夹内出现bmp.exesubmp.exe

运行

双击运行play-win.bat,这将会间接运行bmp.exe,然后启动程序。 直接运行bmp.exe也是可行的,但程序故障后会直接关闭终端窗口,所以不推荐。 如果您的Windows系统安装了Python,或者您使用了备用方式来安装游戏,那么还可以尝试运行run-win.bat来启动游戏。

游戏目前仍然处于开发阶段,Baba Make Parabox 暂未制作大型关卡包。 早期版本遗留的测试用关卡包文件仍能使用 (其中包括一个由彩虹箱RainbowBox所制作的玩法测试关卡包)。v4.1起,该版本之前创建的所有的关卡包文件都将无法读取,直到游戏内置的关卡包更新系统兼容这些格式。

迫切于体验新版本更新内容的玩家可以自行制作关卡包

游戏仅在命令行窗口存在且未选中内部文本时正常运行。

游戏未响应时,请先在命令行内 取消选中文字 , 确保游戏 并未询问输入 , 然后耐心 等待十秒左右 直至游戏继续运行。

如果游戏仍然处于未响应状态或在一段时间后崩溃,则可以确认该现象是一个游戏漏洞。

游戏内容

控制

  • (W / S / A / D) / 方向键:移动
  • SPACE / RETURN:等待
  • Z:撤销
  • R:重新开始关卡
    • CTRL + ...:重新开始关卡包
  • ESC:保存当前关卡进度,并回到上层关卡
  • O / P:载入 / 保存临时存档
    • CTRL + ...:可指定此临时存档的名字 *
    • ALT + ...:指定使用关卡包文件
  • TAB:显示各种信息
  • F1: 显示FPS
  • 鼠标左键:进入空间
  • 鼠标右键:回到上层空间
  • 鼠标滚轮:循环选择空间
  • 关闭游戏窗口:停止游玩,指定文件名以保存 *
  • 关闭终端:强制退出程序

编辑器

该章节暂不提供有关如何设计谜题等问题的信息。

控制

  • 鼠标左键:放置物体
    • SHIFT + ...:即使该位置存在物体也额外放置
    • CTRL + ...:设置部分物体的额外信息 *
    • ALT + ...:进入空间
      • SHIFT + ...:进入关卡
  • 鼠标右键:删除物体
    • ALT + ...:回到上层空间
      • SHIFT + ...:回到上层关卡
  • 鼠标滚轮:循环选择物体类型
    • SHIFT + 鼠标滚轮向上滚动:选择该物体的名词
    • SHIFT + 鼠标滚轮向下滚动:选择该名词指向的物体
    • ALT + ...:循环选择空间
      • SHIFT + ...:循环选择关卡
  • (W / S / A / D) / 方向键:选择物体朝向
  • 0 ~ 9:从快捷栏选择物体类型
    • SHIFT + ...:设置快捷栏的物体类型
  • N:新建空间 *
    • ALT + ...:新建关卡 *
  • M:删除空间 *
    • ALT + ...:删除关卡 *
  • R:设置全局规则 *
    • SHIFT + ...:删除全局规则 *
  • T:设置所处空间的标识符 *
    • ALT + ...:设置所处关卡的标识符 *
  • CTRL + (X / C / V):剪切 / 复制 / 粘贴 光标上的物体
  • F1: 显示FPS
  • 关闭游戏窗口:退出编辑器,指定文件名以保存 *
  • 关闭终端:强制退出程序

注意:带有 * 的键位提示代表按下该键之后需要在终端内输入更多信息。 此时游戏窗口会停止响应,信息输入完成后会恢复。

放置的空间、克隆和关卡默认指向摄像头所在的空间和关卡。

杂项

计划实现

  • 就在下期
    • 优化关卡包存储格式。
    • 收藏品改为一般物体而非独立类型。
    • 优化关卡游玩流程,或许会参考 Maxwell's Puzzling Demon 的部分机制。
      • v4.1部分实现。
  • 短期
    • 文本可以跨空间组成规则。
      • 难以决定规则应该在哪些空间内生效,故废除。
    • MOREYOU2等相对容易实现的属性。
    • 纯装饰属性,如REDBLUE等颜色。
    • GUI(图形用户界面):
      • 在编辑器内显示更多信息,比如物体名称。
  • 中期
    • 实现GROUP的逻辑。
    • 更改ENTERLEAVE的工作方式。
      • 对于物体:
        • ENTER使该物体在与空间物体重合时,转移至对应空间的正中心;
        • LEAVE使该物体立即离开其所在的空间,转移至外层空间内与原空间物体相同的位置。
          • 由于规则不会在上层空间生效,一般情况下可以保证该物体只会离开一层空间。
      • 对于空间:
        • ENTER使该空间允许物体进入,LEAVE使该空间允许物体退出。
      • 对于关卡:
        • ENTER使该关卡允许物体“进入”,LEAVE使该关卡允许物体“退出”。
          • 判断物体是否即将“进入”或“退出”的条件类似于“对于物体”所描述的条件。
          • 物体“进入”时的位置取决于含有YOU属性的物体,并且允许复制。
          • 物体“退出”时的位置与“对于物体”所描述的位置相同。
  • 长期
    • 重新加入平滑移动插值。
      • 一个或许更简单的实现方式:记录所有物体在上一轮的显示位置,而不是物理位置。
        • 这样或许也可以实现使物体出现或消失时通过改变其透明度进行提示。
    • GUI(图形用户界面):
      • 使用可输入文本的游戏窗口取代命令行的显示。
    • GAME的复杂语法。
      • 目前对GAME应用修饰词会使其不指代任何物体。
    • Too Complex
    • Infinite Loop与其检测方法。
  • 遥遥无期
    • 官方关卡包……?

异常情况分类

游戏特性

  • 属性前带有多个NOT的规则只会否定一条恰好缺少一个NOT的规则。
    • 例如,BABA IS NOT YOU否定一条BABA IS YOUBABA IS NOT NOT YOU否定一条BABA IS NOT YOU,可能导致已有的BABA IS YOU不再被那条BABA IS NOT YOU否定。
  • FEELING每轮只检测一次,以试图避免检测停机问题和Infinite Loop
  • WORD属性对TEXT有效。

游戏漏洞

  • 游戏过程中,即使镜头所在空间的方向更改,鼠标仍会使用默认方向。
  • 移动系统的完成度很低,有时表现会与预期不同,主要出现在多个物体同时移动的情况下。
    • 例如,多个常规空间物体同时存在时,物体进入该空间所复制出的新物体的数量。

联系作者

哔哩哔哩:https://space.bilibili.com/430612354

QQ:2485385799

163邮箱:yangsy56302@163.com