Vic3 mod 制作教程 第一章 基本語(yǔ)法教程(文本版)
最近沒(méi)有星宇搞v3教程了,等v3有什么好活了再來(lái)更新,現(xiàn)在就先把文本版的放一個(gè)
B站的這個(gè)專欄不支持markdown,突出一個(gè)折磨,所以會(huì)看起來(lái)就不好看
大家好啊, 今天給大家說(shuō)說(shuō)vic3的mod制作教程。
vic3的mod, 首先要學(xué)會(huì)的就是基本的語(yǔ)法, P社給出來(lái)的語(yǔ)法基本差不多, 但是新版引擎對(duì)Scope和Event Target有很強(qiáng)的約束
來(lái)看這個(gè)視頻的基本都是一群沒(méi)基礎(chǔ)的家伙, 所以很多東西我不得不掰碎了說(shuō)
什么?你說(shuō)你想寫(xiě)事件?這不可能, 能看視頻的都是一群沒(méi)基礎(chǔ)的家伙, 至少等多幾節(jié)課再說(shuō)寫(xiě)事件吧, 如果你真的這么想寫(xiě)事件, 那你就應(yīng)該去看wiki, 而不是去看浪費(fèi)時(shí)間的視頻
所以,讓我們從頭開(kāi)始學(xué)起吧
# 第一節(jié)?? ?認(rèn)識(shí)語(yǔ)法
所以我們來(lái)說(shuō)語(yǔ)法,P社代碼最基本的語(yǔ)法就是一個(gè)完整的不帶空格的單詞加上等于號(hào)然后后面加上另一個(gè)單詞或者由大括號(hào)圈起來(lái)的這樣的玩意
P社的代碼有兩套不一樣的可以用來(lái)mod的語(yǔ)法,一套用在事件等的編寫(xiě),本教程稱呼為文本代碼,如無(wú)特殊說(shuō)明本教程的所稱的代碼一般指文本代碼。
另一種是在Gui里寫(xiě)的,由各種定義和函數(shù)調(diào)用組成,可以稱呼為界面代碼,這個(gè)要留到界面和本地化的時(shí)候再說(shuō)
除了這兩種之外,還有一種就是游戲內(nèi)核的語(yǔ)言,可稱呼為內(nèi)部代碼,這種完全不能mod
請(qǐng)記住, 一個(gè)=前面必須是一個(gè)完整的單詞, 而不是用空格隔開(kāi)的兩個(gè)單詞, 這種錯(cuò)誤給我的地圖編輯器帶來(lái)了很多來(lái)自用戶的錯(cuò)誤
然后就是說(shuō)到Scope和Event Target, 用中文讀就是作用域和事件目標(biāo), 最為簡(jiǎn)單的Scope, 由給定的Scope加上:連接Scope的名稱, 比如c:USA, 而最為簡(jiǎn)單的Event Target則是由Scope加上.連接, 比如s:STATE_IOWA.region_state:USA, 也可以不帶前面的Scope, 這樣默認(rèn)的Scope就是ROOT, 這些我們會(huì)在Scope的專門(mén)介紹來(lái)說(shuō)
=后面的單詞可以是用雙引號(hào)括起來(lái)的字符,可以是數(shù)字,也可以是存起來(lái)的scope,如果是bool類型還可以是yes或者no,但是這取決于=左邊是什么類型
大括號(hào)里面的段落也是完整的不帶空格的單詞加上等于號(hào)加上另一個(gè)單詞或者由大括號(hào)圈起來(lái)的這樣的玩意,但是有一些特殊的情況會(huì)讓大括號(hào)里面的是一群用空格隔開(kāi)的單詞,這也需要通過(guò)=左邊的判斷
這些東西聽(tīng)起來(lái)模棱兩可,事實(shí)上也確實(shí)如此,很多=左邊的內(nèi)容就是p社給定的,如果亂改就會(huì)報(bào)錯(cuò),這些內(nèi)容涉及到下節(jié)的上下文和Scope,下次再說(shuō)。
總之基本上P社的語(yǔ)法就是各種的單詞加=后面加上大括號(hào)的形式,這也使得P社的結(jié)構(gòu)和一般的編程語(yǔ)言有一點(diǎn)不一樣,這些問(wèn)題將會(huì)在流程控制上細(xì)說(shuō)。
在真正編輯到的時(shí)候,我的建議就是使用Vscode+Cwtools,而且請(qǐng)?jiān)谟胿scode打開(kāi)P社代碼文件的時(shí)候注意編碼,最好是`utf-8 with bom`
# 第二節(jié)?? ?認(rèn)識(shí)名詞
有很多名詞為了方便直接引用, 全部用游戲原文本描述, 可以說(shuō)講解游戲機(jī)制的時(shí)候可以盡量使用中文,然而在mod的時(shí)候則需要直接引用,不然你連文件都找不到
| 原文 | 可供參考的翻譯 |
| ---- | ---- |
| modifier | 修正 |
|effect?? ?| 效果 |
| trigger | 觸發(fā)器 |
| province | 地塊 |
| state | 省份 |
| country | 國(guó)家 |
| building | 建筑 |
| character | 角色 |
很多名詞還經(jīng)常使用簡(jiǎn)稱,這些簡(jiǎn)稱在游戲文本代碼內(nèi)被大量使用,因此有簡(jiǎn)稱我盡量使用簡(jiǎn)稱,除非這是文件名
| 原文 | 簡(jiǎn)稱 | 可供參考的翻譯 |
| ---- | ---- | ---- |
| diplomatic_play | dp | 外交博弈 |
| diplomatic_action | da | 外交行動(dòng) |
| production_method?? ?| pm | 生產(chǎn)方式 |
| production_method_group | pmg | 生產(chǎn)方式組 |
| journal_entry | je | 日志 |
| coat_of_arm | coa?? ?| 紋章 |
還有一些名詞內(nèi)涵就十分抽象,完全沒(méi)辦法利索的翻譯成中文,這自然不能用中文描述
| 原文 | 大概是這個(gè)意思? |
| ---- | ---- |
| ROOT? | 最底層的Scope |
| PREV | 上一層Scope |
| THIS | 這一層Scope |
| pop | 本游戲的基本人群?jiǎn)挝?,幾乎沒(méi)有人會(huì)為了用中文而中文,把這個(gè)單詞翻譯成”人群“ |
另外還有一些更加復(fù)雜的專有名詞,幾乎難以理解成中文
| 原文 | 大概是這個(gè)意思? |
| ---- | ---- |
| script_value | 通過(guò)文本代碼實(shí)現(xiàn)的value包裝 |
| scripted_gui | 接口化的GUI |
| scripted_trigger | 函數(shù)化的trigger |
| scripted_effect | 函數(shù)化的effect |
| on_action | wiki上一律翻譯成了”行動(dòng)“,實(shí)際上是一組鉤子,鉤子的意思就當(dāng)什么時(shí)候觸發(fā)什么東西的接口 |
如果為了中文而中文還有很多神奇的后果,比如state翻譯成了國(guó)家,這會(huì)導(dǎo)致問(wèn)問(wèn)題的時(shí)候南轅北轍
所以無(wú)論在問(wèn)mod問(wèn)題還是在交流mod的時(shí)候,切忌為了中文而中文,請(qǐng)務(wù)必使用游戲里原有的文本
# 我們現(xiàn)在學(xué)會(huì)了最基本的語(yǔ)法和名詞
現(xiàn)在, 下課
哇襖