下载客户端

方块自定义关卡指南

2026-04-01 04:00:25
发布在GOODBYE WORLD
转载

导读

这是一份《GOODBYE WORLD》的自定义关卡制作指南,详细介绍了游戏目录的打开方式,制作自定义关卡所需的文件位置、修改方法,涵盖关卡地图、对话气泡、背景的设置,还说明了制作时的注意事项与避坑要点,帮助玩家轻松制作自定义关卡。

《GOODBYE WORLD》自定义关卡制作指南 简介 大家好! 我真的很喜欢这款游戏,希望你们也一样。我特别喜欢它的故事情节,而且发现游戏玩法和剧情的融合非常流畅。我很惊讶这款游戏没有得到更多的讨论。 关卡设计做得非常出色,有些关卡难度适中,需要你从容思考。我总是想玩更多内容,即便在奖励章节,我本以为会有额外的关卡,但实际上只是故事模式中的相同关卡。尽管如此,我还是非常享受它们。 话虽如此,我查看了游戏文件,发现它们并不难修改。对于那些只想制作关卡的玩家,我会尽量避免使用过于专业的术语。我会尽我所能涵盖我所知道的一切。 为简洁起见,当我提到游戏目录时,指的是《再见世界》的安装位置,通常位于C: Program Files (x86)SteamLibrary steamapps common。如果你将Steam游戏安装在此处,游戏目录会在【GOODBYE WORLD】文件夹中。 本指南中,我会省略诸如“进入此文件夹,再进入下一个文件夹”之类的额外说明,而是直接以路径形式说明文件所在的文件夹(如上文所示,C: Program Files (x86) SteamLibrary steamapps common就是common文件夹的路径,相信你能理解)。 你也可以通过左键点击游戏->【管理】->【浏览本地文件】来打开游戏目录。

游戏文件 我们只讨论关卡创建,因此本指南仅提及制作可游玩自定义关卡所需的必要文件。 关卡所需文件位于以下目录: 关卡/Level 目录 = 【GOODBYE WORLD】gb map 对话气泡文本 = 【GOODBYE WORLD】text <语言> text_data_gb_<语言>.ini 其中 <语言> 代表你选择/使用/书写的语言。如果使用英文文件,我们将使用文件:【GOODBYE WORLD】text eng text_data_gb_eng。关卡文件 所有关卡文件位于游戏目录下的【GOODBYE WORLD】gb map文件夹中,该目录下的每个字母对应一个世界: a = 世界1的关卡1-4 b = 世界2的关卡1-4 c = 世界3的关卡1-4 关卡文件内部 ini文件格式是多种计算机软件的配置文件。 接下来我们将以世界1的关卡1-4文件为例,路径为:【GOODBYE WORLD】gb map a 该目录下有4个文件: stage_1.ini = 第一关 stage_2.ini = 第二关 stage_3.ini = 第三关 stage_4.ini = 第四关,非常直观。 查看stage_1.ini,我们可以看到其中包含了所谓的【区块】。在关卡文件中,我们有不同的区块,这里会用到其中3个: [text] [section] [key] 删除对话气泡文本 若要删除任何对话气泡文本,你可以忽略[section]和[key]区块,但必须保留[text]区块,格式如下: [text] 0 = . [text]区块 [text]区块包含对话气泡出现的位置坐标以及距离地面高度的映射。 给定关卡示例: 0 = ..............H...............................................W@ 1 = ..............H...............................................H. 2 = ..............H...............................................H. 3 = ..............H...............................................D. 4 = ..............B...................H...B...H.WW.WW.H.......HWWWHW 5 =我们已确定文本位置: 0 = ........6....4......6.4.....4.........................5 其中“.”表示对话气泡的缩进距离,数字6、4、6、4、4、5表示它们在关卡中的位置(基于0-7行)。我们可以这样可视化,用“!”表示对话气泡的放置位置: [data] 3 = ...... 4 = .............!B.......!.....!.....H...B...H.WW.WW.H.......HWWWHW 5 = .............WWW..B...H..E..H..B..H.H.............H.H.!...B...H. 6 = .P......!...WWWWW...!.HWWWWWH.BBB.HWHWWWHWH.......H...H...B.K.H.很简单。如果你想在关卡中添加对话气泡,只需数出你想放置气泡位置的点的数量,然后确定在第几行。 如果我们添加文本位置: 0 = ..646.464. 在关卡中可视化这些新位置: 3 = ...... 4 = ...!..!.!... 5 = ............ 6 = .P!.!..!.... 7 = GGG... 我们可以在游戏中看到效果。由英文方括号“[”和“]”之间的单词表示。以下是关卡文件中出现的部分及其值的简要说明: [data] = 当前关卡地图。 [text] = 关卡中每个对话气泡出现的位置。 [section] = 在《再见世界》文本文件eng_text_data_gb_eng.ini中使用的文本。 [key] = 对话气泡对应的文本行。 [bg] = 背景类型及其他相关内容。 对话气泡文本文件 对话气泡的文本位于目录:GOODBYE WORLD text 中。在此目录中,我们有多个与每种语言相关的目录: cmn = 包含制作人员名单 cns = 中文翻译 cnt = 粤语翻译 eng = 英文翻译 jpn = 日文翻译 kor = 韩文翻译 对话框文本文件内部 在这些示例中,我们将使用文本文件的英文版本。 在文件内部,我们采用类似的格式,包含各个部分及其对应的值。文件名中带有gb的text_data_gb_eng.ini文件用于关卡/关卡场景。 text_0 = 菜单文本,在游戏中按Tab键可查看。 text_1-12 = 目前用于游戏中的关卡/关卡场景。 str_* = 每行的文本字符串。 避免游戏出错 有一些注意事项需要了解,以避免游戏出错。如果你最终操作失误也不用担心,只需恢复原始文件即可(记得备份!)。如果你忘记备份原始地图文件,可以通过Steam的“验证文件完整性”选项来恢复(你可以自行搜索相关方法)。 以下是我在测试中观察到的一些与游戏机制相关的内容,以及关卡创作所能突破的限制: 当前版本为1.2.0,仅支持3个世界,这意味着如果你在《再见世界》的gb地图中添加第四个世界“d”,这些地图将无法被游戏识别。 游戏仅读取stage1-4.ini文件。如果你添加“stage_5.ini”,该文件会被跳过。 你可以设置多个门和钥匙,但只要有任何一扇门被解锁,关卡就会结束。地图的长度可以随心设定,建议最短线条长度为10,创建时也可以任意加长。但要注意,每条线条(0-7)的长度必须一致。 如果地图线条(0-7)的长度不一致,游戏将会崩溃。 你可以设置多个对话气泡,但如果没有足够的文本可供显示,气泡内会显示“ERROR!”。 如果不设置任何对话气泡,[text]部分必须存在,且其值需设为0 = 。 添加对话气泡文本 本指南的“游戏文件”部分已说明,游戏中使用的文本/对话气泡文件位于GOODBYE WORLD text <语言> text_data_gb_<语言>.ini。关卡中使用的文件在文件名中包含“gb”。确保你正在编辑正确的文件! 在这些示例中,我们将使用英文翻译,其位于文件:GOODBYE WORLD text eng text_data_gb_eng.ini。 此文件包含以下部分和值: [text_*] = 特定关卡的文本部分。 str_* = 对话气泡中的文本。从str_0开始。 [text_]部分和str_值在stage_*.ini文件的[section]和[key]部分中被调用。如何使用和导入此文件中的各文本将在本指南的“添加对话气泡”部分中详细说明。 [text_*]部分 正如其技术名称所示,这些部分包含特定关卡中应使用的必要文本: [text_0] = 包含控制和菜单文本。在游戏中按下TAB键时可见。 [text_1] = 包含世界1-1.ini关卡使用的文本 [text_2] = 包含世界1-2.ini关卡使用的文本 [text_3] = 包含世界1-3.ini关卡使用的文本 [text_4] = 包含世界1-4.ini关卡使用的文本 [text_12] = 包含世界3-4.ini关卡使用的文本 [text_]部分由关卡文件stage_*.ini中的[section]部分调用。 str_*数值 如上文所述,[text_*]部分的文本值缩写为str_,在编程领域,任何文本都被称为字符串。 str_数值包含每个关卡的文本,以[text_1]为例: str_0 = 出发吧! str_1 = 发光的方块可以被破坏 str_2 = 你破坏的方块可以放置到其他地方 str_3 = 前方有敌人!注意…… str_4 = 如果你遇到困难,试着重新开始 str_5 = 打开门即可通关! [str_]值由stage_*.ini关卡文件中的[key]部分使用。 你会发现上述str_值中间有一个` n`。这被称为“换行符”,顾名思义,它会让其后的文本另起一行: 给定文本 str_3 = 前方有敌人! n注意…… 在游戏中会显示为以下格式 /=============== | 前方有敌人! | | 注意…… | ===============/ 若要添加新文本,你可以添加一个未被使用的新部分。在撰写本文时,[text_0]、[text_1]、[text_2]、[text_3]、[text_4]、[text_12]已被各个关卡使用: [text_5] str_0 = 你好! n欢迎! str_1 = 小心! str_2 = 前方有怪物!str_3 = 看看这美丽的天空! str_4 = 你就快通关啦! str_5 = 提示:使用【Z】键来破坏方块 我现在可以在我自定义的关卡中导入并使用【text_5】了。 重要提示! 需要注意的是,在编程领域,数组是从0开始计数的。这意味着如果你要在第一个对话气泡中添加任何新文本,它必须从0开始(str_0)。 添加对话气泡 在这里使用的示例中,我们将使用英文版本的文本/对话气泡文件,以及第一个世界和关卡【GOODBYE WORLD】gb map a stage_1。

在【Section】部分,我们可以看到对话气泡的数量,以及它们在文本文件(《再见世界》文本 eng text_data_gb_eng.ini)中对应的编号。 对于【text】部分,内容如下: 0 = ........6....4......6.4.....4.........................5 而在【section】部分,内容如下: 0 = 1 1 = 1 2 = 1 3 = 1 4 = 1 5 = 1 第一关/关卡中有6个对话气泡,在【section】部分我们可以看到要使用哪个text_*。在这个例子中,所有内容都被分配到1,所以在文本文件text_data_gb_eng.ini中,我们使用【text_1】部分。 此外,在stage_1.ini文件中还有【key】部分: 0 = 0 1 = 1 2 = 2 3 = 3 4 = 4 5 = 5 这与text_data_gb_eng.ini中【text_1】部分下的str_*值相对应。综上所述,我们现在可以将对话气泡与文件中的文本关联起来: 0 = ........6....4......6.4.....4.........................5 气泡(6)= text_1 = str_0 = "我们走吧!" 气泡(4)= text_1 = str_1 = "发光的方块可以被破坏" 气泡(6)= text_1 = str_2 = "你破坏的方块可以放置在其他地方" 气泡(4)= text_1 = str_3 = "前方有敌人!小心……" 气泡(4)= text_1 = str_4 = "如果你卡住了,试着重新开始" 气泡(5)= text_1 = str_5 = "打开门以通过关卡!" 对话气泡的其他说明 你可能希望混合匹配来自其他关卡的不同文本,你可以通过设置[section]中的气泡以及[key]中的行来实现 [text] 0 = ........6....4......6.4 [部分] 0 = 1 1 = 2 2 = 1 3 = 2 [键] 0 = 0 1 = 2 2 = 5 3 = 0 在本示例中,我们设置了: 气泡(6)= 文本_1 = 字符串_0 = “出发吧!” 气泡(4)= 文本_2 = 字符串_2 = “沙块即使被破坏也无法放置!” 气泡(6)= 文本_1 = 字符串_5 = “打开门以通过关卡!” 气泡(4)= 文本_2 = 字符串_0 = “我喜欢大海。” 背景 在我们的关卡文件中,最后一个部分是[背景]部分。 这与关卡的背景有关。撰写本文时已知的所有数值如下: 类型 = 设置使用哪个背景。(1-4) 黑暗 = 设置手电筒视野。(0或1) 禁止向左 = 设置玩家是否可以向左移动。(0或1) 熔岩 = 设置地面是否为熔岩。(0或1) 缓慢 = 设置玩家的移动速度。(0 或 1) 重试 = 重新开始至标题画面(有条件) 类型值 类型将定义关卡/阶段使用的背景 类型 = 0:

无法识别内容,已删除。

无法识别内容,已删除。

无法识别内容,已删除。

无法识别内容,已删除。

黑暗值 黑暗值将决定玩家是否处于手电筒视野模式 黑暗值=0:

黑暗=1:

无向左值 无向左表示玩家是否可以向左移动 no_left = 0:

剩余次数 = 1

熔岩设置 设置关卡是否包含熔岩。 熔岩=0:

熔岩=1:

慢速值 慢速设置玩家移动速度 慢速=0:

速度 = 1:

重试值 重试是一个条件值,其基于玩家当前是否处于对话气泡状态。 根据我们关卡文件中显示的值: [文本] 0 = ...6.6.6 [段落] 0 = 1 1 = 1 2 = 1 [键值] 0 = 0 1 = 1 2 = 2 [背景] 重试 = 2 当重试值为2时,如果玩家当前位于第3个对话气泡(数组从0开始计数),则玩家将重启至标题画面。

虽然此处重试次数设为2,但只要该关卡中存在对话气泡,重试次数可以设为任何数值,且适用于关卡内任意数量的对话气泡。 映射 这可能正是你想了解的内容。 我们将以第一世界的第一关为例(GOODBYE WORLD gb map a stage_1.ini)。 地图以ASCII码形式呈现,非常容易自定义,可将其视为一个网格。 地图位于[data]部分下方,其中各行编号从0到7,共8行(数组从0开始): 0 = ..............H...............................................W@ 1 = ..............H...............................................H. 2 = ..............H...............................................H. 3 = ..............H关于行的讨论,我会谈到行长度,这与一行中字符的呈现方式有关: 行0,长度为5 0 = ..... 行4,长度为10 4 = .......... 行3,长度为10 3 = ..P....D.. 关于块位置的讨论,将涉及给定行上的#字符: 行0上的第5个块 v 0 = .......... 行2上的第2个块 v 2 = .......... 行4上的第7个块 v 4 = ......W...关于关卡布局/注意事项 在测试过程中,我发现了一些需要注意的事项: 你可能拥有多个钥匙和门,但只要玩家解锁任意一个门方块,关卡就会结束: 0 = ..........KKKKKKKW 1 = .........DDDDDDDDW 2 = ........KKKKKKKKKW 3 = .......DDDDDDDDDDW 4 = ......KKKKKKKKKKKW 5 = .....DDDDDDDDDDDDW 6 = .P.KKKKKKKKKKKKKDW 7 = GGGGGGGGGGGGGGGGGG 如果玩家在解锁门时站在门的右侧,玩家会传送到门的左侧以完成动画。如果门的左侧有方块,玩家会持续向左传送,直到完成动画。 玩家会传送 0 = ......D........... 1 = ......D........... 2 = ......D........... 3 = ......D........... 4 =5 = ......D........... 6 = ......D.P.K....... 7 = GGGGGGGGGGGGGGGGGG 玩家将传送到第6行的第6个方块,然后继续传送到第5个方块以完成动画流程 0 = ......D........... 1 = ......D........... 2 = ......D........... 3 = ......D........... 4 = ......D........... 5 = ......D........... 6 = .....WD.P.K....... 7 = GGGGGGGGGGGGGGGGGG 行为相同,但玩家会被传送到第6行的第一个方块 0 = ......D........... 1 = ......D........... 2 = ......D........... 3 = ......D........... 4 = ......D........... 5 = ......D........... 6 = WWWWWWD.P.K....... 7 = GGGGGGGGGGGGGGGGGG 你可以创建一个没有任何钥匙或门的关卡。 你可以创建一个没有玩家的关卡。然而,玩家将生成在第0行的第一个方块上 玩家将生成于此 v 0 = .................. 1 = .................. 2 = .................. 3 = .................. 4 = .................. 5 = .................. 6 = .................. 7 = GGGGGGGGGGGGGGGGGG 如果不存在地面方块且玩家掉落,玩家不会死亡 玩家不会死亡 0 = .................. 1 = .................. 2 = .................. 3 = .................. 4 = ........P......... 5 = .................. 6 = .................. 7 = .................. 如果第7行的地面方块被替换为尖刺方块,且玩家与其发生碰撞,将会导致软锁定,你将无法重新开始: 将导致软锁定 0 = .................. 1 = ..................2 = .................. 3 = .................. 4 = ........P......... 5 = .................. 6 = .................. 7 = NNNNNNNNNNNNNNNNNN 如果地图行(0-7)的长度不一致,游戏将会崩溃: 导致崩溃 0 = ................ 1 = .............. 2 = ........... 3 = ................ 4 = ......K...... 5 = ......W......... 6 = .P...WWW......D.. 7 = GGGGGGGGGGGGGGGG 可接受 0 = ................. 1 = ................. 2 = ................. 3 = ................. 4 = ......K.......... 5 = ......W.......... 6 = .P...WWW......D.. 7 = GGGGGGGGGGGGGGGGG 关卡可以想短就短,想长就长。不过,如果关卡长度短于游戏区域(即Game Boy屏幕),关卡可以加载,但当玩家尝试重试或在关卡中死亡时,游戏会崩溃。若行长度为6,且玩家踩在第6个方块上,游戏也会崩溃。最佳实践是将短关卡的宽度保持与游戏区域一致(行长度为10)。我测试过的最长关卡行长度为512: 短关卡,重试/死亡时崩溃 0 = .. 1 = .. 2 = .. 3 = .. 4 = .. 5 = .. 6 = P. 7 = GN 玩家踩在第6个方块时游戏崩溃 0 = ...... 1 = ...... 2 = ...... 3 = ...... 4 = ...... 5 = ...... 6 = .P.... 7 = GGGGGK 最佳实践 0 = .......... 1 = .......... 2 = .......... 3 = .......... 4 = .......... 5 = .....K.... 6 = .P..直接放置在方块正上方的敌人会是奥凯拉(青蛙人): 4 = ....... 5 = ...E... 6 = .P.W.E. 7 = GGGGGGG 处于空中或方块上方空格处的敌人会是蝙蝠: 4 = ...E... 5 = .....E. 6 = .P.W... 7 = GGGGGGG 单个沙块放置在空中时会悬浮。 0 = .......... 1 = .......... 2 = .......... 3 = .......... 4 = .......... 5 = ....SSSSS. 6 = .P........ 7 = GGGGGGGGGG 放置在可破坏方块顶部的沙子,在方块被破坏后会掉落: 0 = .......... 1 = .......... 2 = ....S..S.. 3 = ....S..S.. 4 = ....S..S.. 5 = ....S..S.. 6 = .P..B..S.. 7 = GGGGGGGGGG 如果字母不是全部大写,将会显示为隐形方块: 0 = .......... 1 = .......... 2 = .......... 3 =4 = .......... 5 = .....k.... 6 = .p..www.d. 7 = gggggggggg 任何你想要删除的方块都必须替换为“.”。 你可以添加多个“玩家”,但位置最靠关卡深处的那个将作为起点: 这里最右侧的“P”将是玩家的起始位置 v 6 = ...P...........P...........P..........P.........P.............. 7 = GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 地图数值索引 这包含关卡文件中所有已知的方块。 编者注:我不太确定H代表什么,在本指南中我将其称为“柱子”。 @ = 隐形方块(或任何小写字符):

B=可破坏方块(Breakable Block)

D=é—¨

E = 敌人:

G = 地面:类型 = 0:

无法识别内容,已删除。

无法识别内容,已删除。

无法识别内容,已删除。

H = 支柱:

K = 按键:

N=尖刺

P=玩家

S=沙子

W = 墙壁(Wall)

总结 制作地图时需要注意的一些事项。 地图存放位置:GOODBYE WORLD gb map 文本/对话气泡存放位置:GOODBYE WORLD text <语言> text_data_gb_<语言>.ini 数组从0开始,请确保你的[text]、[section]、[key]值与文本/对话气泡文件中的text_*部分和str_*行保持一致。 地图长度可以随意设定,建议最小行长度为10,创建时可根据需要设置长度。但要注意,每行(0-7)的长度必须相等。 非大写字母将显示为不可见方块。 任何你想要删除的方块,都必须用“.”替换。 祝你制作愉快! 希望这能为你带来一些重玩价值,因为这款游戏真的制作得非常出色。希望你喜欢这份指南 :) 尝试一下 记得备份原始地图! 你可以为该文件命名并将其放置在第一个世界目录【GOODBYE WORLD】gb map a中 文件名:stage_1.ini ; 复制以下所有内容并粘贴到你的stage_1.ini文件中 [data] 0 = W..E..W..E..W..E..W..E..W.E..W. 1 = WK.......................K...D. 2 = WSSSS..W..W..W..W..W..W..W...W. 3 = WSSS..W........................ 4 = WSS..WH........................ 5 = WS..WHH.NNNNNNNNNNNNNNNNNNNNNN. 6 = WP.WHHH.BBBBBBBBBBBBBBBBBBBBBBB 7 = GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG [text] 0 = .66...216.....................[section] 0 = 12 1 = 1 2 = 3 3 = 1 4 = 1 5 = 0 [key] 0 = 0 1 = 0 2 = 1 3 = 3 4 = 1 5 = 10 [bg] type = 3 这是一张测试地图,你可以查看所有可用方块,并随意更改各种[bg]数值! ; 所有已知方块均已呈现 [data] 0 = SSSSSSSSSSKKKKKKKKKK 1 = EEEEEEEEEEDDDDDDDDDD 2 = WWWWWWWWWWGGGGGGGGGG 3 = .................... 4 = P...............KD.. 5 = @@@@@@@@@@HHHHHHHHHH 6 = NNNNNNNNNNEEEEEEEEEE 7 = GGGGGGGGGG.......... ; 如果你不需要任何文本,则无需[section]或[key]部分 [text] 0 = 333333333......4....[背景设置] ; ; 除“类型”值和重试值外, ; 0表示禁用该功能 ; 设置为1则启用该功能 ; ; 类型(背景图片):0、1、2、3、4 类型 = 0 ; 暗色模式:0或1 暗色 = 0 ; 熔岩效果:0或1 熔岩 = 1 ; 慢速模式:0或1 慢速 = 0 ; 重试:对话气泡编号 ; 当玩家在第10个对话气泡后重试时,将重置到标题界面 ; 数组从0开始计数 重试 = 9 ; 禁止向左:0或1 禁止向左 = 0

评论

共0条评论
face
inputImg
相关阅读