“开发教程”的版本间的差异

来自部落与弯刀Wiki

(创建页面,内容为“=== '''5.1 游戏循环概念''' === 游戏主循环逻辑图 如上图,游戏的核心循环是触发器+事件。 触发器是指达到某一种特定的条…”)
 
 
(未显示同一用户的7个中间版本)
第1行: 第1行:
=== '''5.1 游戏循环概念''' ===
+
==='''一、游戏循环概念'''===
 
+
[[文件:游戏主循环逻辑图.jpg|替代=|无|缩略图|554x554像素|游戏主循环逻辑图]]
 
 
游戏主循环逻辑图
 
  
  
第13行: 第11行:
  
 
在事件中,指令完全顺序执行。必须每一条指令执行完毕,才会执行下一条。事件的结尾处可以定义条件跳转关系,可以由不同的条件下,来跳转执行不同的事件。
 
在事件中,指令完全顺序执行。必须每一条指令执行完毕,才会执行下一条。事件的结尾处可以定义条件跳转关系,可以由不同的条件下,来跳转执行不同的事件。
 
+
[[文件:处理事件流程.jpg|替代=|无|缩略图|处理事件流程]]
 
+
<br />
处理事件流程
+
==='''二、项目配置'''===
 
 
 
 
=== '''5.2项目配置''' ===
 
 
'''项目标准配置文件Config/default.json'''
 
'''项目标准配置文件Config/default.json'''
  
第155行: 第150行:
 
具体写法见5.4资源管理。
 
具体写法见5.4资源管理。
  
=== '''5.3 配置表''' ===
+
==='''三、配置表'''===
  
==== '''5.3.1 配置表原理概述''' ====
+
===='''1、配置表原理概述'''====
  
  
第164行: 第159行:
  
 
配置表是一些独立的excel文件,通过HSFramework提供的工具打包成xml或可执行的二进制文件(values文件)。具体流程为:
 
配置表是一些独立的excel文件,通过HSFramework提供的工具打包成xml或可执行的二进制文件(values文件)。具体流程为:
 
+
[[文件:配置表打包流程.jpg|替代=|无|缩略图|554x554像素|配置表打包流程]]
 
 
 
 
配置表打包流程
 
  
  
第194行: 第186行:
 
<br />
 
<br />
  
==== '''5.3.2 数据类型''' ====
+
===='''2、数据类型'''====
 
数据类型设置具体excel的一行中,我们可以填入的数据格式。
 
数据类型设置具体excel的一行中,我们可以填入的数据格式。
  
第212行: 第204行:
 
如果在excel中填写出错,则打包时会报错。
 
如果在excel中填写出错,则打包时会报错。
  
==== '''5.3.3 变量和条件表达式''' ====
+
===='''3、变量和条件表达式'''====
 
'''特别注意:脚本编辑时注意所有特殊符号必须为半角!!!'''
 
'''特别注意:脚本编辑时注意所有特殊符号必须为半角!!!'''
  
第228行: 第220行:
 
条件表达式可以参考各个 XXX触发器.xls 中的相关配置。
 
条件表达式可以参考各个 XXX触发器.xls 中的相关配置。
  
==== '''5.3.4 事件指令语法''' ====
+
===='''4、事件指令语法'''====
 
'''特别注意:脚本编辑时注意所有特殊符号必须为半角!!!'''
 
'''特别注意:脚本编辑时注意所有特殊符号必须为半角!!!'''
  
第240行: 第232行:
 
具体指令请参考附录:全指令说明
 
具体指令请参考附录:全指令说明
  
==== '''5.3.5 其他配置表隐含语法''' ====
+
===='''5、其他配置表隐含语法'''====
 
一些配置表中会有自己的隐含语法,如果填写不对,在打包时不一定报错,但在运行游戏时会有相关错误。具体请参考我们的各种样例excel来进行填写。
 
一些配置表中会有自己的隐含语法,如果填写不对,在打包时不一定报错,但在运行游戏时会有相关错误。具体请参考我们的各种样例excel来进行填写。
 
<br />
 
<br />
  
==== '''5.3.6 MOD的配置表工作原理''' ====
+
===='''6、MOD的配置表工作原理'''====
 
各个excel中都包含自己的ID,如果有重复的ID,则后加载的MOD会覆盖之前的。这样也就为MOD修改游戏有了可能,例如标准游戏中《C初始设定表.xls》中定义了  
 
各个excel中都包含自己的ID,如果有重复的ID,则后加载的MOD会覆盖之前的。这样也就为MOD修改游戏有了可能,例如标准游戏中《C初始设定表.xls》中定义了  
  
第253行: 第245行:
 
则可以在MOD中添加一个初始设定表,重写“init_pos”这个KEY,就可以实现修改游戏初始出生位置的功能。
 
则可以在MOD中添加一个初始设定表,重写“init_pos”这个KEY,就可以实现修改游戏初始出生位置的功能。
  
=== '''5.4 资源管理''' ===
+
==='''四、资源管理'''===
  
==== '''5.4.1 MOD资源管理概述''' ====
+
===='''1、MOD资源管理概述'''====
 
资源指游戏中使用到的图片、音乐、模型、动作、特效等等。
 
资源指游戏中使用到的图片、音乐、模型、动作、特效等等。
  
第272行: 第264行:
 
现有部落与弯刀的资源集合请参考全资源对照表。
 
现有部落与弯刀的资源集合请参考全资源对照表。
  
==== '''5.4.2 通过标准文件系统导入RES资源''' ====
+
===='''2、通过标准文件系统导入RES资源'''====
 
默认RES下所有的文件都将在生成MOD时拷贝到发布目录,在简易MOD工程和专业级MOD工程下,都会生效。
 
默认RES下所有的文件都将在生成MOD时拷贝到发布目录,在简易MOD工程和专业级MOD工程下,都会生效。
  
==== '''5.4.3 在Unity下导入ABS资源''' ====
+
===='''3、在Unity下导入ABS资源'''====
 
默认ABS下每个目录都会被打包成一个单独的assetbundle包,
 
默认ABS下每个目录都会被打包成一个单独的assetbundle包,
  
 
只有在专业级MOD工程,在unity下启动打包MOD才可以生效。
 
只有在专业级MOD工程,在unity下启动打包MOD才可以生效。
  
=== '''5.5 地图编辑器''' ===
+
=== '''五、音频管理''' ===
 
待编写
 
待编写
  
=== '''5.6 技能编辑''' ===
+
==='''六、捏脸工具'''===
技能通过修改技能配置表以及重写 Assets/BuildSource/SkillData/*.txt 实现,具体规则请见《全指令说明-技能命令编辑说明》
 
 
 
=== '''5.7 3D模型和动作''' ===
 
待支持,需要专业级MOD工程
 
 
 
=== '''5.8 粒子特效''' ===
 
待支持,需要专业级MOD工程
 
 
 
=== '''5.9 捏脸工具''' ===
 
 
你可以使用部落与弯刀的捏脸素材对NPC的外貌进行修改,在MOD编辑器-捏脸工具中可以进行自有组合捏脸。
 
你可以使用部落与弯刀的捏脸素材对NPC的外貌进行修改,在MOD编辑器-捏脸工具中可以进行自有组合捏脸。
 +
[[文件:捏脸工具启动位置示意.png|无|缩略图|641x641px|捏脸工具启动位置示意]]
  
  
捏脸工具启动位置示意
+
捏脸的内部数据位于此:
 +
[[文件:捏脸工具导出示意.png|无|缩略图|641x641像素|捏脸工具导出示意]]
  
  
捏脸的内部数据位于此:
+
在此文本框编辑后,点击导入可以查看其他的捏脸。
  
 +
捏脸后复制此段代码,即可作为角色的外貌信息导出粘贴到对应的配置表中。
 +
==='''七、技能编辑'''===
 +
技能通过修改技能配置表以及重写 Assets/BuildSource/SkillData/*.txt 实现,具体规则请见《全指令说明-技能命令编辑说明》
  
 +
可以通过技能编辑器进行实时编辑和调试
  
捏脸工具导出示意
+
==='''八、3D模型和动作'''===
 +
待支持,需要专业级MOD工程
  
 +
==='''九、粒子特效'''===
 +
待支持,需要专业级MOD工程
  
在此文本框编辑后,点击导入可以查看其他的捏脸。
+
==='''十、地图编辑器'''===
 
+
待编写
捏脸后复制此段代码,即可作为角色的外貌信息导出粘贴到对应的配置表中。
 

2020年2月14日 (五) 15:36的最新版本

一、游戏循环概念

游戏主循环逻辑图


如上图,游戏的核心循环是触发器+事件。

触发器是指达到某一种特定的条件的集合,事件是指需要执行的某个指令集合。

在游戏过程中,玩家不断的进行行动,时间也随此流逝。在此之上不断的触发各种事件,然后执行一系列的游戏指令。由此构成了整个游戏主循环。


在事件中,指令完全顺序执行。必须每一条指令执行完毕,才会执行下一条。事件的结尾处可以定义条件跳转关系,可以由不同的条件下,来跳转执行不同的事件。

处理事件流程


二、项目配置

项目标准配置文件Config/default.json


填写格式为json,各项key分别为


其中有效范围如果是Story则仅限type=Story(剧本战役)模式的MOD使用。

参数 是否可为空 有效范围 描述
type Plugin/Story MOD类型,Plugin插件,Story剧本战役
name Plugin/Story MOD的显示名字
desc Plugin/Story MOD的介绍
tags Plugin/Story 标签,影响MOD在创意工坊的搜索分类,如果有多个,使用半角的”;”分割,填写英文字符

Scenarios 剧情

Maps 地图

Items 道具

Characters 角色

Skills 技能

Appearance 外观,如模型、角色皮肤等

BattleUnits 兵种和战斗单位

Rules 规则

Audios 音频

Cheating 作弊

start_scene Story 开始场景,默认为捏脸,可选

0:部落与弯刀CG场景

1:创建角色(为空则默认为该项)

2:沙盒场景,需要定义默认主角角色

 

仅Story模式有效

include_main_game Story 是否引用部落与弯刀主工程资源,仅Story模式使用。

0为不引用任何数据

1为引用部落与弯刀完整数据(默认)

2为仅引用基础数据(做独立story推荐)

homepage_background Story 主菜单背景替换,要求填写图片资源全路径。仅Story模式有效
audioControllerAdditional Plugin/Story 仅限专业级项目可用

音频中间件全路径(请参考具体例子,可为空)


配置表引用文件 valuebundle/default.xml


格式为xml,可以包含多个include元素

参数 是否可为空 描述
file 本MOD需要包含的配置表文件名,此文件位于本Mod工程的Excel目录下。需要包含扩展名。

配置表规则映射文件 valuebundle/INDEX.xml

格式为xml,可以包含多个convert元素

参数 是否可为空 描述
reg 对应映射规则reg文件,位于data/regV2下
from 本MOD需要包含的配置表文件名,此文件位于本Mod工程的Excel目录下。需要包含扩展名。

资源路径映射文件 Interface/overrides.txt

格式为普通文本文件,每行一个映射规则

具体写法见5.4资源管理。

三、配置表

1、配置表原理概述

《部落与弯刀》中,使用配置表来进行内容的填写。配置表中可以是各项数值设定、公式的配置,剧情和各种跳转逻辑的编写,或者资源引用路径的配置。


配置表是一些独立的excel文件,通过HSFramework提供的工具打包成xml或可执行的二进制文件(values文件)。具体流程为:

配置表打包流程


如上图,开发流程为:

1、MOD开发者修改配置表(excel)

(1) 注:reg为我们默认提供的excel语法约束文件,MOD开发者不需要修改

2、运行打包工具生成可执行文件(values)

3、启动游戏客户端对mod包进行调试


请特别注意:

1、修改配置表推荐使用wps工具;

2、配置表中各项数据有自己的语法和格式要求,一旦输入出错,很可能在上图的2(打包)或3(运行)环节出错。请注意报错信息;

3、Excel中请不要留无意义的空行空列,可能会导致未知错误;

4、不建议大量修改然后一次性测试,否则很难定位问题所在。建议少量修改后随即测试,方便第一时间排查解决问题;

5、由于玩家存档会依赖于配置表中的定义,所以不要对配置表中指定ID进行删除,这样导致的结果会是使用本MOD的玩家,既有存档可能会损坏(因为找不到这个被删除的ID了)。正确的做法是将老的数据标记为过期,新建一行作为新的ID来定义;

2、数据类型

数据类型设置具体excel的一行中,我们可以填入的数据格式。

这个格式在reg文件中定义(参考样例工程的data/regV2下的各个文件中type的定义)


常用的格式如下


int 整数

float 浮点数(小数)

string 字符串


如果在excel中填写出错,则打包时会报错。

3、变量和条件表达式

特别注意:脚本编辑时注意所有特殊符号必须为半角!!!


条件表达式组由多个形如" [%condition%][=]1"这样的条件表达式组成,以符号"|"(或) 或 符号”&”(与)进行连接,”&”(与)的优先级大于"|"(或)的优先级,当条件表达式左右值均为整数字符时,将返回其数值大小的比较结果,否则只能执行字符串比较切仅支持[=]和[<>]两种判定。

例如: [%result_code%][=]1| [%player_money%][>=]100 表示当结果为1或玩家身上有100金钱时执行

而 [%player:level%][>=]3& [%player_money%][>]100 表示玩家等级大于等于3并且身上的金钱大于100时执行


注:由于历史原因,目前游戏实际excel填写中,[%xxxx%]和[$xxxx$]没有区别,都可以使用。


条件表达式可以参考各个 XXX触发器.xls 中的相关配置。

4、事件指令语法

特别注意:脚本编辑时注意所有特殊符号必须为半角!!!


指令和参数使用*分割,参数之间一般使用#分割。由于对话指令大量被使用,我们在编写时允许省去对话指令的填写。


在默认调用事件时,会传入当前的一些环境变量。开发者可以使用诸如CUR_ROLE、[%tagrole%]等写法来使用变量。


具体指令请参考附录:全指令说明

5、其他配置表隐含语法

一些配置表中会有自己的隐含语法,如果填写不对,在打包时不一定报错,但在运行游戏时会有相关错误。具体请参考我们的各种样例excel来进行填写。

6、MOD的配置表工作原理

各个excel中都包含自己的ID,如果有重复的ID,则后加载的MOD会覆盖之前的。这样也就为MOD修改游戏有了可能,例如标准游戏中《C初始设定表.xls》中定义了


“init_pos”为红石城外峡谷出生点:980,-1246


则可以在MOD中添加一个初始设定表,重写“init_pos”这个KEY,就可以实现修改游戏初始出生位置的功能。

四、资源管理

1、MOD资源管理概述

资源指游戏中使用到的图片、音乐、模型、动作、特效等等。

《部落与弯刀》游戏使用全局统一的资源命名空间,每一个资源对应唯一的全路径。你可以在MOD中定义资源的“重写规则”,从而实现替换或者新增资源的功能。


你可以在Interface/overrides.txt定义这个重写规则


比如ABS\Audio\*>:\Buildsource\Audios\* 代表的是本MOD下的ABS\Audios目录下的所有内容,覆盖或添加到原BuildSource\Audios下所有内容(如果原来有相同文件则覆盖,否则新增)


你可以在这里定义重写ABS或RES下的具体规则,支持通配符(如*代表所有),也支持具体指定文件。


现有部落与弯刀的资源集合请参考全资源对照表。

2、通过标准文件系统导入RES资源

默认RES下所有的文件都将在生成MOD时拷贝到发布目录,在简易MOD工程和专业级MOD工程下,都会生效。

3、在Unity下导入ABS资源

默认ABS下每个目录都会被打包成一个单独的assetbundle包,

只有在专业级MOD工程,在unity下启动打包MOD才可以生效。

五、音频管理

待编写

六、捏脸工具

你可以使用部落与弯刀的捏脸素材对NPC的外貌进行修改,在MOD编辑器-捏脸工具中可以进行自有组合捏脸。

捏脸工具启动位置示意


捏脸的内部数据位于此:

捏脸工具导出示意


在此文本框编辑后,点击导入可以查看其他的捏脸。

捏脸后复制此段代码,即可作为角色的外貌信息导出粘贴到对应的配置表中。

七、技能编辑

技能通过修改技能配置表以及重写 Assets/BuildSource/SkillData/*.txt 实现,具体规则请见《全指令说明-技能命令编辑说明》

可以通过技能编辑器进行实时编辑和调试

八、3D模型和动作

待支持,需要专业级MOD工程

九、粒子特效

待支持,需要专业级MOD工程

十、地图编辑器

待编写