欢迎访问啃书文库 - 生活百科小常识,生活小窍门,日常健康知识,百科知识大全

啃书文库 - 生活百科小常识,生活小窍门,日常健康知识,百科知识大全

啃书文库 > 游戏 >

饥荒联机版自制MOD课程

www.q5999.com 2024-08-16 12:02 游戏

饥荒联机版中的MOD作为游戏中的一大特点,深受玩家喜欢,但那样多MOD里面没自己喜欢的MOD如何解决,自己可以制作MOD吗,如何制作》今天记者为大伙带来了关于玩家怎么样自建MOD的课程,可以仔细看看。

筹备工作:

撰写MOD所需要的工具

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

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

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

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

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

MOD基本文件结构

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

如上图所示,一个需要具备两个文件:

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 doesnt 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 theres a new game update.

api_version = 10

第六行说明本mod是不是兼容 Dont Starve Together。

-- Compatible with Dont Starve Together

dst_compatible = true

第七行是向玩家说明本mod是不是和 Dont Starve 和 Reign of Giants 兼容(由于Dont Starve Together和Dont Starve两者有很多相同代码,所以常常有人把Dont Starve的mod和Dont 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文件。

官方人物

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

Dont Starve Together\data\scripts\strings.lua

自建人物

目前将自建人物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贴图文件。

第一你需要确认自己安装Dont Starve Mod Tools的目录地方:

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

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

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

你需要做的就是把下面命令中的 字样、 字样和 字样分别改为上述可实行文件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启动Dont Starve Mod Tools,选择上传工具,你会看见以下窗口,选择你需要上传mod对应的游戏,即Dont Starve或Dont Starve Together;

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

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

Lua编程

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

要阅读本章的内容,你需要对计算机编程的定义有基本的认知。

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

标识符/Identifiers

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

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

关键词/Key words

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

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

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

其他符号:

+ -* / ^=~=

====()

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

字符串

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

另外,换行还可以用转义符\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/

Dont 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/

Matts 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/

Tags:

猜你喜欢

热点排行
热门推荐
热门tag
学派 傅欢 冷新生 单槽 地图龟 洗衣粉 任仲夷 祛痱 压断 开果器 时间管理 长弯 白带 干上火 枝压 严弟楠 注意事项 迟志强 可乐瓶 污水 晚春的意思 倪恩雅 文臣 许愿 冯立 车身 打结 跟腱 用途 结冰点 冯文乐 雪莲花 盐焗鸡 认主 社会保障局 眼膜 复习法 二氧化碳 改建 东旭 细菌微生物 中山市 突发健康问题 棒花鱼体型 肾气 出境游 刺梅 三文鱼怎么吃 技工 色氨酸 安慰 阳台 元宝枫 Maria Takagi 进食 仲月 烫发 梨止 余不配 皮革服装