Vic3 mod 制作教程 第一章 基本语法教程(文本版)
最近没有星宇搞v3教程了,等v3有什么好活了再来更新,现在就先把文本版的放一个
B站的这个专栏不支持markdown,突出一个折磨,所以会看起来就不好看
大家好啊, 今天给大家说说vic3的mod制作教程。
vic3的mod, 首先要学会的就是基本的语法, P社给出来的语法基本差不多, 但是新版引擎对Scope和Event Target有很强的约束
来看这个视频的基本都是一群没基础的家伙, 所以很多东西我不得不掰碎了说
什么?你说你想写事件?这不可能, 能看视频的都是一群没基础的家伙, 至少等多几节课再说写事件吧, 如果你真的这么想写事件, 那你就应该去看wiki, 而不是去看浪费时间的视频
所以,让我们从头开始学起吧
# 第一节 认识语法
所以我们来说语法,P社代码最基本的语法就是一个完整的不带空格的单词加上等于号然后后面加上另一个单词或者由大括号圈起来的这样的玩意
P社的代码有两套不一样的可以用来mod的语法,一套用在事件等的编写,本教程称呼为文本代码,如无特殊说明本教程的所称的代码一般指文本代码。
另一种是在Gui里写的,由各种定义和函数调用组成,可以称呼为界面代码,这个要留到界面和本地化的时候再说
除了这两种之外,还有一种就是游戏内核的语言,可称呼为内部代码,这种完全不能mod
请记住, 一个=前面必须是一个完整的单词, 而不是用空格隔开的两个单词, 这种错误给我的地图编辑器带来了很多来自用户的错误
然后就是说到Scope和Event Target, 用中文读就是作用域和事件目标, 最为简单的Scope, 由给定的Scope加上:连接Scope的名称, 比如c:USA, 而最为简单的Event Target则是由Scope加上.连接, 比如s:STATE_IOWA.region_state:USA, 也可以不带前面的Scope, 这样默认的Scope就是ROOT, 这些我们会在Scope的专门介绍来说
=后面的单词可以是用双引号括起来的字符,可以是数字,也可以是存起来的scope,如果是bool类型还可以是yes或者no,但是这取决于=左边是什么类型
大括号里面的段落也是完整的不带空格的单词加上等于号加上另一个单词或者由大括号圈起来的这样的玩意,但是有一些特殊的情况会让大括号里面的是一群用空格隔开的单词,这也需要通过=左边的判断
这些东西听起来模棱两可,事实上也确实如此,很多=左边的内容就是p社给定的,如果乱改就会报错,这些内容涉及到下节的上下文和Scope,下次再说。
总之基本上P社的语法就是各种的单词加=后面加上大括号的形式,这也使得P社的结构和一般的编程语言有一点不一样,这些问题将会在流程控制上细说。
在真正编辑到的时候,我的建议就是使用Vscode+Cwtools,而且请在用vscode打开P社代码文件的时候注意编码,最好是`utf-8 with bom`
# 第二节 认识名词
有很多名词为了方便直接引用, 全部用游戏原文本描述, 可以说讲解游戏机制的时候可以尽量使用中文,然而在mod的时候则需要直接引用,不然你连文件都找不到
| 原文 | 可供参考的翻译 |
| ---- | ---- |
| modifier | 修正 |
|effect | 效果 |
| trigger | 触发器 |
| province | 地块 |
| state | 省份 |
| country | 国家 |
| building | 建筑 |
| character | 角色 |
很多名词还经常使用简称,这些简称在游戏文本代码内被大量使用,因此有简称我尽量使用简称,除非这是文件名
| 原文 | 简称 | 可供参考的翻译 |
| ---- | ---- | ---- |
| diplomatic_play | dp | 外交博弈 |
| diplomatic_action | da | 外交行动 |
| production_method | pm | 生产方式 |
| production_method_group | pmg | 生产方式组 |
| journal_entry | je | 日志 |
| coat_of_arm | coa | 纹章 |
还有一些名词内涵就十分抽象,完全没办法利索的翻译成中文,这自然不能用中文描述
| 原文 | 大概是这个意思? |
| ---- | ---- |
| ROOT | 最底层的Scope |
| PREV | 上一层Scope |
| THIS | 这一层Scope |
| pop | 本游戏的基本人群单位,几乎没有人会为了用中文而中文,把这个单词翻译成”人群“ |
另外还有一些更加复杂的专有名词,几乎难以理解成中文
| 原文 | 大概是这个意思? |
| ---- | ---- |
| script_value | 通过文本代码实现的value包装 |
| scripted_gui | 接口化的GUI |
| scripted_trigger | 函数化的trigger |
| scripted_effect | 函数化的effect |
| on_action | wiki上一律翻译成了”行动“,实际上是一组钩子,钩子的意思就当什么时候触发什么东西的接口 |
如果为了中文而中文还有很多神奇的后果,比如state翻译成了国家,这会导致问问题的时候南辕北辙
所以无论在问mod问题还是在交流mod的时候,切忌为了中文而中文,请务必使用游戏里原有的文本
# 我们现在学会了最基本的语法和名词
现在, 下课
哇袄