网站首页
手机版

饥荒联机版自制MOD教程(饥荒联机版模组怎么弄)

更新时间:2024-08-16 00:14:38作者:佚名

饥荒联机版自制MOD教程(饥荒联机版模组怎么弄)

  饥荒联机版中的MOD作为游戏中的一大特色,深受玩家喜爱,但是那么多MOD里面没有自己喜欢的MOD怎么办,自己可以制作MOD吗,怎么制作》今天小编为大家带来了关于玩家如何自建MOD的教程,不妨仔细看看。

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  准备工作:

  编写MOD所需要的工具

  编辑Lua文件时,推荐使用 notepad++,或者Vi/Vim(少数像我这样的人才会用的编辑器 )。

  不过如果你是程序猿,也许更想使用专为Lua设计的IDE。

  当你需要编辑材质文件(本游戏中要求的材质文件格式是 .tex),推荐使用由 Handsome Matt 制作的TexTool(请在Klei论坛登陆后下载,你可以使用Steam登陆)

  当你需要编辑png文件时,请使用支持透明背景的图像编辑器;如果你有闲钱,不妨买个Photoshop;如果你穷得响叮当,就只有试试GIMP这款免费软件。

  最后推荐你从Steam下载一个Don't Starve Mod工具,操作步骤如下:

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  MOD基本文件结构

  这里我用由 Eyres1 制作的 Never Perish Icebox(永久保鲜羊大白勺冰箱)来作为例子:

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  如上图所示,一个必须具有两个文件:

  modmain.lua:游戏载入你制作的mod所需要的文件;

  modinfo.lua:储存mod的作者、版本等信息的文件。

  接下来我们打开这两个文件看看:

  modinfo.lua

  第一行描述了该mod的名称,

  --The name of the mod displayed in the 'mods' screen.

  name = "Never Perish Icebox"

  第二行是作者留下的对该mod的简介,

  --A description of the mod.

  description = "Food doesn't perish in the Icebox."

  第三行记录了制作者的名讳,

  --Who wrote this awesome mod?

  author = "Eyres Valkrie"

  第四行是作者设置的mod版本号(注意,mod版本号跟游戏版本号是两码事)

  --A version number so you can ask people if they are running an old version of your mod.

  version = "1"

  第五行是本mod对应的游戏API版本号(当你自己制作了一个mod以后,记得在每次游戏更新后检查自己mod是否依然能够正常运行,努力debug,并更改这一行的数值,然后上传到创意工坊)

  --This lets other players know if your mod is out of date.

  This typically needs to be updated every time there's a new game update.

  api_version = 10

  第六行说明本mod是否兼容 Don't Starve Together。

  -- Compatible with Don't Starve Together

  dst_compatible = true

  第七行是向玩家说明本mod是否和 Don't Starve 和 Reign of Giants 兼容(因为Don't Starve Together和Don't Starve两者有大量相同代码,所以经常有人把Don't Starve的mod和Don't Starve Together的mod交换使用)

  -- Compatible with both the base game and reign of giants

  dont_starve_compatible = true

  reign_of_giants_compatible = true

  这八行说明本mod是否需要重启生效

  --Some mods may crash or not work correctly until the game is restarted after the mod is enabled/disabled

  restart_required = false

  第九行说明本mod是否能够兼容其他mod

  -- Set this to true to prevent _ANY_ other mods from loading while this mod is enabled.

  standalone = false

  modmain.lua

  Never Perish Icebox这个mod的modmain.lua中只有一行代码,

  TUNING.PERISH_FRIDGE_MULT = 0;

  它的作用是修改 data\scripts\tuning.lua 中 TUNING 对象的成员 PERISH_FRIDGE_MULT,也就是修改游戏中 Icebox 的保鲜时间长度。

  由此可见,要提供mod元信息,你就应该给出 modinfo.lua;而为了真正实现你的 mod 的功能,你则应该在 modmain.lua 中编写代码。

  范例 · 如何制作一个新的人物mod

  首先从Klei论坛[forums.kleientertainment.com]或者创意工坊下载人物mod模版 Extended Sample Character。以此为基础,修改模版中人物信息和脚本,你就可以制作出自己独家定制的mod了~

  人物mod的文件结构

  如下图所示,一个人物mod通常除了包括前面提到的modinfo.lua和modmain.lua以外,还包括anim、bigportraits、exported、images和scripts目录,以及modicon.png、modicon.tex和modicon.xml文件。

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  官方人物

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  首先以官方人物Wilson为例,我们一起来研究一下选择角色界面:就文本方面,有如上图所示的三个方面,其一是Wilson的口号(Quote),其二是Wilson的头衔(Title),其三是Wilson的简介(Description),全部都来自文件

  Don't Starve Together\data\scripts\strings.lua

  自建人物

  现在将自建人物mod导入mod目录下,进入游戏建立本地服务器并激活mod,可以看出这些文本和贴图跟人物mod中文件之间的关系。

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  修改人物元信息

  以Windows系统为例,打开Notepad++,按下快捷键 Ctrl + Shift + F,进而在mod目录中搜索esctemplate和ESCTEMPLATE并分别替换为你设计的人物的名称,例如nymphoenix和NYMPHOENIX(注意大小写)

  如果你是在Linux系统上使用Vim编辑文件,又不知道怎么搜索并替换给定目录下所有文件中的符合某字符串

  find -type f -exec sed -e 's///' {} +

  然后用Notepad++打开 modmain.lua,修改其中人物简介、称号和台词等。

  编译已完成的mod

  如果你的mod涉及贴图,例如人物mod、武器mod等,那么你就需要把绘图得到的png图片(如果你的源文件不是png格式而是其他其他格式,请先使用Photoshop、GIMP或者你自己选择的支持透明度的图像处理软件将图片格式转为png格式),编译为tex贴图文件。

  首先你需要确认自己安装Don't Starve Mod Tools的目录位置:

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  打开其中高亮的mod_tools目录,你可以在其中找到下面需要用到的可执行文件scml.exe。

  然后你需要调出Windows系统内置控制台cmd(Linux:Ctrl+Alt+T):

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  这时候会出现如下的窗口:

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  你需要做的就是把下面命令中的 字样、 字样和 字样分别改为上述可执行文件scml.exe的路径,你制作的mod中贴图项目文件(*.scml)路径和你的mod目录的路径,然后复制粘贴到控制台中,按下回车键(Enter)运行即可。

  "<exec_path>" "<project_path>" "<mod_path>"

  (请保留上面命令中的双引号!)

  如果你有多个 .scml 文件,你猜猜要怎么做?

  清理并发布mod

  一屋不扫何以扫天下

  一般来说,玩家在下载mod的时候都不希望看见自己要下载的mod奇大无比。我相信这是每一个制作者的责任,即保证功能与性能的同时,保持mod的紧凑度,也就是说,一个mod目录不应该有无用文件存在。

  那么宝贝儿们就要问了,自己的mod目录要怎样清理呢?

  首先,你应该备份自己现有的mod目录,即用压缩/存档软件,如7zip,对mod目录进行压缩存档,并在文件名后附加版本号,方便自己查阅;

  之后删除exported目录;

  然后将mod目录里除了后缀名为 .lua 和 .tex 的文件全部删除,再删除空目录。

  文胜质则史,质胜文则野

  既然你都已经把mod制作出来了,不矜夸一番怎么可以?下面就教你如何将mod发布到Steam创意工坊~

  首先从Steam启动Don't Starve Mod Tools,选择上传工具,你会看见以下窗口,选择你需要上传mod对应的游戏,即Don't Starve或Don't Starve Together;

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  然后点击Add按钮,会弹出以下窗口,点击Browse按钮,选择要上传的mod目录路径,并选择要上传的mod的种类,再点击publish按钮发布;(其中,点击蓝色框出的Browse按钮,设定创意工坊mod预览图片)

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  接着你会看见,按照程序预设的指示操作,同意Steam创意工坊的条款就大功告成了。

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  Lua编程

  Lua(请不要念成“撸啊”),一款被设计成可用于包括游戏、网站和图形处理等多方面等各类应用的轻量级可嵌入的脚本语言,在很多游戏游戏中得到应用,例如:Don't Starve,Don't Starve Together,Crusader Kings II,Europa Universalis IV,Crypt of the NecroDancer,等等。

  要阅读本章的内容,你需要对计算机编程的概念有基本的了解。

  首先为那些已经学习过 #编译原理 的童鞋献上Lua的AST

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  标识符/Identifiers

  Lua中的标识符,可以是任何以字母或下划线开始,由字母([a-zA-Z])、数字([0-9])或下划线('_')构成的字符串。

  Lua对大小写敏感,也就是说 Lua 跟 LUA 是不同的两个标识符。

  关键字/Key words

  Lua提供了共计21个关键字,即:

  由于 Lua 是对大小写敏感的语言: 尽管 and 是保留字,但 And 和 AND 却是两个不同且合法的标识符。

  按照惯例,以下划线开头的标识符保留为 Lua 内部变量。

  其他符号:

  +   -  *   /   ^  =  ~  =  <

  =  >  =  <  >  =  =  (  )

   {  }  [  ]  ;  :  ,   .   ..   ...

  字符串

  字符串(Literal string)可以通过匹配单引号或者双引号进行界定,并且可以包括下列类C转义序列(escape sequence):

饥荒联机版自制MOD教程 自己怎么制作MOD 准备工作

  另外,换行还可以用转义符'\newline'表示;字符可以以 '\d'、'\dd' 或 '\ddd'(其中字母 d 表示十进制数字,decimal digit)的形式,用其对应数值表示;Lua 字符串可以包含任何 8 位字符,包括 '\0'。

  Lua 字符串还可以用一对形如 [[ ... ]] 的双方括号界定,如此可以跨行定义字符串,并且可以嵌套。

  数字常数

  Lua 的数字常数与 C 语言类似,以下是一些示例:

  3   3.0   3.1416   314.16e-2   0.31416E1

  注释

  Lua 的注释以两个连续的连接符,即 -- 开头

  类型

  Lua 是一种动态类型语言。这就意味着变量没有类型,而只有值才具有类型。

  Lua 中有 8 种基本类型: nil, boolean, number, string, function, userdata, thread 和 table。其中number是双精度浮点数,string是 8 bit 字符串。

  赋值Assignment

  Lua,正如JavaScript一样,是一种类型松散(loose typing)的脚本语言;换言之,与C/C++和Java等强类型定义语言中要求声明(declare)变量时必须选择变量的类型不同,Lua赋值时只需要变量名和变量值:

  my_var = "hello"

  短路求值/Minimal evaluation

  由于Lua内核是基于C语言编写的,支持短路求值自然不足为奇。

  所谓短路求值,即在以下Lua代码

  if condition_A and condition_B and condition_C then

  中,首先计算 condition_A 的真值,若 condition_A 为假(false),则跳出;否则依次计算下一个布尔表达式的真值,直到出现假或者全部表达式都计算完毕为止。

  表/Table

  Lua的设计者在其语法中引入了表的概念,用以表示中的数组(Array)和图(Map)两种数据结构。

  1、创建一个表

  你可以创建一个以字符串为键(Key)的表,即:

  my_map = { apple = 5, banana = 10, melon = 9 }

  或者一个类似数组的表,即:

  my_array = { "Tom", "Jack", "Peter" }

  2、修改表中的数据

  如果你的表是以字符串为键的,那么你可以:

  my_map.apple = 15

  或者

  my_map["apple"] = 17

  如果你的表示以数字为键的,那么你可以:

  my_array[1] = "Tompson"

  请注意,Lua中以数字为键的表跟C/C++中数组不同,也就是 my_array[0] 的值是 nil。

  表的遍历

  以字符串为键的表通过以下语法进行遍历:

  for k, v in pairs(my_map) do

  而以数字为键的表则是:

  for i, v in ipairs(my_array) do

  控制结构

  选择

  if exp then

  block

  elseif exp then

  block

  else

  block

  end

  当型循环

  while exp do

  block

  end

  直到型循环

  repeat

  block

  until exp

  从循环中跳出

  在循环结构中使用 return 和 break 可以跳出。

  参考资料

  与Lua有关的:

  Lua 5.1 Reference:http://www.lua.org/manual/5.1/

  Lua 5.0 Reference:http://www.lua.org/ftp/refman-5.0.pdf

  Pre-compiled Lua libraries and executables:http://luabinaries.sourceforge.net/download.html

  与DST有关的:

  [Guide] Getting started with modding DST:http://forums.kleientertainment.com/topic/47353-guide-getting-started-with-modding-dst-and-some-general-tips-for-ds-as-well/

  Getting Started: Guides, Tutorials and Examples:http://forums.kleientertainment.com/topic/28021-getting-started-guides-tutorials-and-examples/

  Don't Starve Mods:http://dontstarve.wikia.com/wiki/Mods

  Unofficial API Reference:http://dontstarveapi.com/

  [Tutorial] Using Extended Sample Character Template - Tutorials & Guides - Klei Entertainment Forums:http://forums.kleientertainment.com/topic/46849-tutorial-using-extended-sample-character-template/

  Matt's Tools! - Modding Tools, Tutorials & Examples - Klei Entertainment:http://forums.kleientertainment.com/files/file/73-matts-tools/

  Better Crashes (RoG compatible) - Game Modifications - Klei Entertainment Forums:http://forums.kleientertainment.com/files/file/514-better-crashes-rog-compatible/

为您推荐

饥荒联机版自制MOD教程(饥荒联机版模组怎么弄)

饥荒联机版中的MOD作为游戏中的一大特色,深受玩家喜爱,但是那么多MOD里面没有自己喜欢的MOD怎么办,自己可以制作MOD吗,怎么制作》今天小编为大家带来了关于玩家如何自建MOD的教程,不妨仔细看看。

2024-08-16 00:14

饥荒联机版不搜索房间直连服务器教程 搜索不到房间怎么办

饥荒联机版的服务器有时候非常不稳定,很多玩家在在线房间列表中什么都搜索不到,这个时候玩家希望能够直连服务器该多好,今天小编带来的文章就是向大家介绍关于如何直接连接服务器不通过搜索房间,还在为搜房问题而烦恼的玩家进来看看吧。

2024-08-16 00:14

饥荒联机版速刷龙蝇皮方法解析攻略(饥荒联机版龙蝇皮怎么刷)

饥荒联机版怎么快速刷龙蝇皮?其实方法很简单,只是大家没发现而已,下面就给大家分享饥荒联机版速刷龙蝇皮方法解析攻略,感兴趣的玩家们一起来看下吧。

2024-08-16 00:11

饥荒联机版四大建家福地解析(饥荒9个最好的建家地址)

《饥荒:联机版》在哪里选址建家对游戏是有重大影响的,一个好的选址能够让游戏更顺利的进行,今天小编给大家带来四大建家福地解析,感兴趣的朋友一起来看看吧!

2024-08-16 00:08

饥荒联机版夏季降温防火方法(饥荒联机版夏天如何降温)

饥荒联机版游戏中玩家们常常由于夏天太热而导致死亡,如何解决夏季高温的方法呢,小编今天给大家整理了夏季应付高温的几个方法,一起来看看吧!

2024-08-16 00:08

饥荒联机版巧抓火鸡方法 饥荒如何捉火鸡

饥荒联机版游戏中,常常会有火鸡跑到浆果农场里偷吃浆果,但往往因为其速度太快而无法捕捉,今天小编给大家带来抓火鸡的方法,一起来看看吧!

2024-08-15 21:16