乐趣区

关于程序员:饥荒mod饥荒系列教程地图制作方法

申明

本文所述皆为实际过程中产生的教训,根本笼罩了从零开始构建 mod 的相干办法以及思路,文中所介绍的所有内容皆出自作者了解,有可取之处也有肯定局限性,请读者以实际所得论断为准。

文章从如何解决一个问题的角度记录 mod 制作过程中可能遇到的问题以及解决方案,因而 文章适宜任意一个同学,当然有编程根底食用更佳,对于没有编程根底的同学,倡议联合菜鸟教程 -lua 一起食用。

写作工夫:2022/10/22

游戏版本(生成版本 ID):Don’t Starve Togather-9775009

编程接口版本(API)](https://baike.baidu.com/item/ 应用程序编程接口 /3350958)):10

tips:

游戏版本查看形式:

抛砖引玉

置信上一篇文章在坐的各位都懂了,那此时若要请各位同学按本人的想法本人造一个地图进去这正当么?显然不合理。为什么?这就好比给我一堆铁矿而后要让我造一个挖掘机去把张三家的房子推平了。

为了推张三的房子还必须去一波蓝翔,但想本人造一个地图只须要关注计算机技工。先观赏一下成绩:

单刀直入

将饥荒的地图视为一张画布,在上边描述本人脑海里的风光的前提就是这张画布是空的,是一张白纸,这样被饥荒耽搁的画家门才有机会大展拳脚。那么如何清理就是须要思考的问题。这里提供两种清理画布的形式,一种是创立法,另一种是笼罩法。限于篇幅,本文中次要给出创立法的形容。波及的残缺代码及资源可在公众号 ”计算机技工“ 后盾回复【z_dst_1_1】取得。

创立法

我愿称这种办法为“无中生有”。这种办法其实就是重建一个 level,怎么创立呢?那就用到了到 这篇文章 中常识,文中具体阐明了创立一个新的 level 所需的资源以及创立没种资源的办法,这片文章中不再反复,咱们须要把重点放在细节解决上,具体包含:代码组织、零碎依赖两个方面。

  • 代码组织

    通常状况下为了代码易于保护和治理,会将代码依据模块进行划分,比方创立地图时须要的资源有 room、task、taskset 等,而这些资源都是能够随便增加和批改的,因而将没种资源独自命名为一个文件夹,每种具体的资源又依据资源名创立资源文件,比方这样:

    而每个具体的资源文件中的所有内容其实就是调用接口创立相干的资源,说白了就是 copy & paste 且不须要增加任何货色(斗宗强人能够批改),对于老手来说,倡议除了对象的名称之外不要批改任何货色,能够取得更快的成就感。当然不按这种构造来划分代码也是能够的,即便所有代码全放在一个文件里也没问题,毕竟本人看着爽才是真的爽。

  • 零碎依赖

    当把资源文件都开发 (copy) 实现后,就须要让各种资源都能相互看到,这波及到一个关键性的文件:modworldgenmain.lua。这个文件是官网提供的 mod 加载入口,文件名肯定不能写错,在这个文件中增加资源的申请会将 mod 中自定义的资源加载到全局,这样无论是游戏自身的逻辑还是 mod 中的逻辑想要拜访 mod 中自定义的资源就都莫得问题了,申请相似这种:

    modimport("scripts/map/layouts/z_default_start")
    modimport("scripts/map/layouts/z_start_layout")
    modimport("scripts/map/location/z_location")
    modimport("scripts/map/rooms/z_room_1")
    modimport("scripts/map/tasks/z_task_1")
    modimport("scripts/map/tasksets/z_taskset_1")
    modimport("scripts/map/levels/z_level")

    因为自定义的 mod 中也会应用到零碎的资源,比方 WORLD_TILES 对象,因而还须要在 modworldgenmain.lua 中导入相干的系统资源:

    require("constants")
    require("map/rooms")
    require("map/tasks")
    require("map/level")
    require("map/network")

    留神:require 的门路是相对路径,该门路是绝对于 Don’t Starve Together\data\scripts 的。

    通常为了批改零碎中已有的对象(减少一个属性或者批改某个属性的值或者删除属性),须要在 modworldgenmain.lua 中退出这样代码:

    GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end})

    当然一个残缺的 mod 还须要一个形容文件:modinfo.lua,这个文件没啥好说的,倡议公众号 ”计算机技工“ 后盾回复【z_dst_1_1】获取残缺的 mod 文件看一下。

就这么简略,创立法创立了应用创立法创立了一个属于你本人的 map。那么,这就完结了么?

加载 mod& 抉择预设

对于老手同学来说,如何将本人开发的 mod 运行起来仿佛也是一个脑阔疼的问题。或者局部有根底的同学晓得须要将 mod 根目录 拷贝到 Don’t Starve Together\mods 目录下即可,然而进入游戏勾选 mod 并自豪感爆棚的进入游戏想要验收一下胜利的果实的时候,却发现生成的地图还是零碎自带的:

这个时候先别骂我写的辣鸡教程毁青春,倡议在勾选 mod 后进入森林界面抉择预设之后再生成世界:

留神:mod 根目录指的是 modworldgenmain.lua 所在的目录

本篇内容到此结束。没错是真的完结,你问我怎么跟成绩图不统一?别急,下篇文章就见分晓~

See you next time! Happy Playing!!!

退出移动版