啃书文库 > 游戏 >
饥荒联机版中的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/
- 上一篇:饥荒联机版防风镜做法一览
- 下一篇:没有了
猜你喜欢
- 热点排行
- 热门推荐
- 热门tag