目录

自己创建一个饥荒迷宫地图

准备和说明

正版饥荒游戏(自备)、本文所有用到的程序(打包下载

思路:先生成一个迷宫图,然后将迷宫图编译成地图矩阵,用Tiled制作地图上要生成的对象,将地图矩阵和生成对象的配置导入到DIY地图mod,进入游戏开启DIY地图mod,创建生成一个新图。

1.Python生成迷宫图

我利用的是PythonMazeSearch这个迷宫生成器来随机生成迷宫图

先安装python,可以使用 python-3.7.0-amd64.exe 文件安装,要勾选 Add Python 3.7 to PATH 再点install now

https://img.pulnd.com/post/nst-map-diy/aFUicD.png

python安装完成后,以管理员身份打开cmd,输入命令 pip install pygame 安装Pygame

https://img.pulnd.com/post/nst-map-diy/aFUFje.png

如果安装失败可以使用 pygame-1.9.6-cp37-cp37m-win_amd64.whl 文件安装,方法如下:

以管理员身份打开cmd,运行 pip install wheel

利用 cd 命令切换目录到 pygame-1.9.6-cp37-cp37m-win_amd64.whl 目录

运行 pip install pygame-1.9.6-cp37-cp37m-win_amd64.whl

打开Python的IDLE 输入 import pygame 成功返回pygame版本号不报错即为安装成功

双击打开GameSearch.py 鼠标单击按钮选择迷宫生成算法,再单击任意键盘可以按顺序执行操作:生成迷宫,生成起点和终点,找到路径并清除地图

https://img.pulnd.com/post/nst-map-diy/aFUeAI.png

我们可以截图保存需要的迷宫图,默认大小应该是765x765像素,比如:

2.Python图片编译矩阵

以管理员身份打开cmd,输入命令 pip install pillow 安装pillow

https://img.pulnd.com/post/nst-map-diy/aFUph6.png

将你保存的迷宫图重命名为 map.png 放到图片文件夹里,运行 DSimage.py 会生成一个 output.lua 文件,这个就是饥荒的地图矩阵,内容差不多是这样:

1
2
3
4
5
6
7
data = { 
	0, 0, 0, 0, 0,
	0, 0, 0, 0, 0,
	0, 0, 0, 0, 0,
	0, 0, 0, 0, 0,
	0, 0, 0, 0, 0,
}

里面的数字编号对应一个地皮,可以自己替换,如下:

0号表示的是海,打圈的编号也都不是路地,建议不要用打圈的编号直接用0号

https://img.pulnd.com/post/nst-map-diy/aERrJf.png

3.使用Tiled制作静态布局

先安装Mod Tools

打开steam–库–工具–Don’t Starve Mod Tools–下载安装–启动–Launch Tiled–开始

https://img.pulnd.com/post/nst-map-diy/aFUP1O.png

https://img.pulnd.com/post/nst-map-diy/aFUC9K.png

https://img.pulnd.com/post/nst-map-diy/aFUVHA.png

打开后的界面

https://img.pulnd.com/post/nst-map-diy/aFUStx.png

创建一个新文件,地图大小为51x51,块大小为64x64像素

https://img.pulnd.com/post/nst-map-diy/aEWQXQ.png

然后地图–添加外部图块–找到 ground.tsx 文件打开(..\Steam\steamapps\common\Don’t Starve Mod Tools\mod_tools\Tiled\dont_starve\ground.tsx)

右下角会显示可用的地皮,点击图章刷工具(快捷键B),再选择你要的地皮,点击到你想要放的位置即可,如果你需要全部填满可以使用填充工具(快捷键F),因为我们上面已经通过Python图片编译出了地皮矩阵所以我们这边就不填地皮了,当然如果你自己填也是ok的,配置文件里也会生成对应的矩阵,我这边主要是需要物品对象的配置

https://img.pulnd.com/post/nst-map-diy/aEOYq0.png

这个地皮顺序对应上面编号显示的那个实图

https://img.pulnd.com/post/nst-map-diy/aERDFP.png

选择图层–添加对象层–选择矩形工具(快捷键R)–点击到你想要放的位置–右键矩形框–对象属性–填入物品代码–确定

https://img.pulnd.com/post/nst-map-diy/aV9LGV.gif

右上角的窗口里,可以看到对象层

地图里必须要有传送门和出生点,并且不能在海上(坐标要在陆地地皮范围内),否则游戏无法进入。

传送门: multiplayer_portal

出生点: spawnpoint_master

其他的物品代码可以自己搜索,太多了,我就不贴出来了

按照你的需要添加好所有对象后,我们就可以导出文件配置了,点文件–导出为–保存为 .lua 文件即可

https://img.pulnd.com/post/nst-map-diy/am1acT.png

4.配置安装DIY地图mod

打开 diy地图mod\scripts\map\static_layouts\ my_default_start.lua 这个文件

修改成与你要创建的地图对应的边界值,比如我创建的是51x51

https://img.pulnd.com/post/nst-map-diy/amDCmn.png

将上面第2步里生成的 output.lua 文件里的data部分替换掉my_default_start.lua 这个文件里的data部分

https://img.pulnd.com/post/nst-map-diy/am1U3V.png

将上面第3步里生成的 .lua 文件里的objects部分替换掉my_default_start.lua 这个文件里的objects部分

https://img.pulnd.com/post/nst-map-diy/am1N90.png

保存文件

将整个diy地图mod文件夹复制到 ..\Steam\steamapps\common\Don't Starve Together\mods\ 文件夹下,打开饥荒游戏在mod选项里的本地mod里开启diy地图mod,新开个档就可以啦,记得把洞穴移除掉~

成品展示

https://img.pulnd.com/post/nst-map-diy/aFUEBd.jpg

https://img.pulnd.com/post/nst-map-diy/amwkFO.gif

参考文章

[1]. PythonMazeSearch

[2]. 19-10-01【教程】如何制作一张地图

[3]. 【教程】使用Tiled制作静态布局(Static Layouts)

[4]. 【地图画教程】PS处理图片技巧

[5]. 【饥荒】Python图片编译矩阵

[6]. 【饥荒】地图编辑教程