創造科技

1.簡介
2.檔案結構
3.研究
 3.1 總論
 3.2 研究欄位
4.建造
 4.1 總論
 4.2 建造欄位
5.實作
 5.1 創造研究項目
 5.2 創造建造項目
6.聲明

1.簡介
這份文件解釋如何去使用建造和研究的腳本(script).這兩個腳本裡面描述了建造,研究,和昇級的一切項目
2.檔案結構

每個種族都有自己的腳本集(script set).在萬艦二安裝目錄下的:
Data\Scripts\Building and Research\
資料夾中,每個種族的目錄中都有兩個檔案,build.lua和research.lua

3.研究

3.1 總論
研究檔案其實是一個大表格,裡面每個該種族能夠研究的項目都各自有著自己的次表格.每個研究項目都有幾個核心欄位,也有一些選擇性的項目,用來指定升級的資訊.升級系統是研究系統的一部分,指定了要升級哪些船以及升級的種類

3.2 研究欄位
Name (必需) 研究項目的名稱.檢查研究項目以及建造項目的相依性時會使用這個名字.
RequiredResearch (必需) 研究此項科技所需要的前置科技.你可以用布林運算(Boolean operation)來產生複雜的相依關係.運算符號有:「&」(and),「|」(or),「!」(negation).你也可以使用括號.
RequiredSubSystems (必需) 研究此項科技時所需要有的子系統.在這裡使用的名稱是子系統的typeString而不是子系統的本身的名字,所以應該要使用「AdvancedFighterProduction」,而不是「Hgn_AdvancedFighterProduction」.可以利用布林運算來產生複雜的相依關係.
Cost (必需) 研究項目所需要的RU
Time (必需) 當只有一個研究子系統時研究這項科技所需要的時間,單位為秒.如果有不只一個研究設施的話研究速度會加快.
DisplayedName (必需) 在使用介面上所顯示的名稱
DisplayPriority (必需) 在使用介面上會依照這個數字來排列研究項目.數字較小的會顯示在比較上面
Description (必需) 研究項目的敘述,會顯示在使用介面上
UpgradeType 此項研究所帶來的升級類別,其值可以是Modifier(修正量)或Ability(能力)
TargetType 因為這項研究而受惠的單位類型.其值為AllShips(玩家艦隊中的所有單位),Family(某個指定的attack family,例如護衛艦),或是Ship(某種特定的船艦,例如離子砲艦)
TargetName 指定研究所影響的目標.這個參數對於Allship來說不需要,對於Family來說會是某個attack family的名稱.而對於Ship來說就會是某一個單位的名稱,例如Hgn_Scout(西加拉的偵察機)
UpgradeName 研究後會變更的數值或是能力.細節請看HW2_MultipliersAndAbilitiesHowTo.doc(譯註:RDN釋出的文件裡面並沒有這一份)
UpgradeValue 對於Modifer來說,這個值乘上要改變的數值就是新數值.對於Ability來說0表示取消掉某項能力,1表示啟動某項能力
(譯註:在釋出版本的遊戲中的research.lua中,UpgradeType = Ability的研究項目都沒有UpgradeValue的參數)

4.建造

4.1 總論
研究檔案其實是一個大表格,裡面每個該種族能夠研究的項目都各自有著自己的次表格.造價和建造時間並不包含在裡面,這兩樣資訊記載在每個單位各自的.ship(船隻單位)或是.subs(子系統)文件中

4.2 建造欄位
Type Ship(船隻單位)或是SubSystem(子系統)
ThingToBuild 所要建造的項目的名稱.例如Hgn_Scout(西加拉偵察機)或是Hgn_AdvancedFighterProduction(某個子系統,正式遊戲中沒這個東西)
RequiredResearch 建造此單位所需要的前置科技.你可以用布林運算(Boolean operation)來產生複雜的相依關係.運算符號有:「&」(and),「|」(or),「!」(negation).你也可以使用括號.
RequiredShipSubSystems 建造此單位所需要有的子系統.在這裡使用的名稱是子系統的typeString而不是子系統的本身的名字,所以應該要使用「AdvancedFighterProduction」,而不是「Hgn_AdvancedFighterProduction」.可以利用布林運算來產生複雜的相依關係.
DisplayedName 在使用介面上所顯示的名稱
DisplayPriority 在使用介面上會依照這個數字來排列建造項目.數字較小的會顯示在比較上面
Description 建造項目的敘述,會顯示在使用介面上

5.實作

5.1 創造研究項目
創造新的科技是很有趣的!這個例子告訴你如何增加新的研究項目到Vaygr的科技樹中.

{    
3
Name = "MissileCorvette",
4
RequiredResearch = "",
RequiredShipSubSystems = "Research & CorvetteProduction",
5
Cost = 750,
Time = 40,
6
DisplayedName = "Missile Corvette Technology",
7
DisplayPriority = 2,
8
Description = "Researching this technology will allow you to build Missile Corvettes",
9
TargetName = "vgr_missilecorvette",
10
Icon = Icon_Tech,
11
ShortDisplayedName = "Missile Corvette"
}    
  1. 開啟Homeworld2/Data/Scripts/Vaygr/Research.lua
  2. 決定你要加入什麼科技.以這裡來說讓我們增加一項建造Vaygr飛彈攻擊艇的必要條件.
  3. 給這個科技一個名字,讓我們叫他「MissileCorvette」.這個名字可以在research.lua和build.lua中交替使用
  4. 給這個科技一些前置需求.如果你希望這項科技不需要前置研究就能取得,將其留空.在我們的例子中,玩家需要Research和CorvetteProduction(研究和攻擊艇生產)模組.
    • 利用下面的符號來創造更複雜的相依關係,也可以使用括號.例如
      | = or
      & = and
      ! = not
  5. 給這個科技成本以及時間.例子中的MissileCorvette科技需要花費750 RU以及40秒來研究
  6. DisplayedName會顯示在說明文字的標題列
  7. DisplayPriority用來決定項目在使用介面上的順序,數字較小的會顯示在比較上面.如果有兩個科技的DisplayPriority相同並且同時都能夠被研究,則只有其中一個會顯示出來.
  8. Description的文字是說明視窗的內容
    • 可以利用\Homeworld2\data\Locale\English\buildresearch.dat,然後加入你想參考的對應文字,並且在前面加一個「$」,來達成介面的 localize (指改成不同的語言,或是使用不同的慣用語法)
      • 例如你想參照到buildresearch.dat中的line 7035的話,打入「Description = $7035」
    • 有許多方式可以用來將說明視窗文字作排版.下面是幾個例子:
      • <b>Description:</b>會在說明文字中顯示成「Description」(粗體字)
      • /n可以用來斷行,幫助你做文字分段
  9. TargetName是在UI上顯示的科技名稱
  10. 圖示(icon)用來告訴使用者這項科技的作用
    • 你可以藉由加入新的圖案以及位在research.lua最上方的參照來增加新的圖示.Icon_Tech參考到其他檔案的方法是:
      • Icon_Tech = "data:ui/newui/research/icons/tech.mres"
  11. 最後一項你必須增加的是ShortDisplayedName(科技的簡名).這一欄會顯示在研究管理視窗中,長度不能超過14個字元.

5.2 創造建造項目

{    
3
Type = Ship
4
ThingToBuild = "Vgr_LaserCorvette",
5
RequiredResearch = "CorvetteLaser",
6
RequiredShipSubSystems = "CorvetteProduction",
7
DisplayPriority = 105,
8
DisplayedName = "$7140",
9
Description = "$7141",
}    
  1. 開啟Homeworld2/Data/Scripts/Vaygr/Build.lua
  2. 決定你要讓玩家能夠建造什麼東西.以這裡來說讓我們想像我們要增加雷射攻擊艇到遊戲中.
  3. 首先你要描述這個單位的類型,可以是Ship或者Subsystem.以這裡來說是一艘船(Ship)
  4. 接下來要填入把你想建造的東西.這個名字應該要和利用shiptuning.xls所輸出的船隻檔案名字相同
  5. 給他一些前置科技.本例中雷射攻擊艇需要corvettelaser科技,這個已經在research.lua中定義.
  6. 接下來加入建造船隻需要的子系統.攻擊艇需要CorvetteProduction
    • CorvetteProduction是在subsytemtuning.xls所能找到的typestring.可以好幾個子系統共用相同的typestring
  7. DisplayPriority用來決定項目在使用介面上的順序,數字較小的會顯示在比較上面.
  8. 以上面的例子來說有 localize 的文字,可以在下列位置找到:
    • Homeworld2\data\Locale\English\buildresearch.dat
      • 「DisplayedName = $7140 」會在建造管理視窗中顯示「Laser Corvette」
  9. 以上面的例子來說有 localize 的文字,可以在下列位置找到:
    • Homeworld2\data\Locale\English\buildresearch.dat
      • 「DisplayedName = $7141 」會在說明視窗中顯示
        Description: Anti-Capital Ship Corvette Squadron.
        Strong vs: Frigates, Capital Ships
        Weak vs: Corvettes, Capital Ships

        Prerequisites: Corvette Facility, Research Module and Corvette Laser
        Research

6.聲明
本文件主要是翻譯自Relic Developers Network所釋出的"HW2_BuildandResearchScripting.pdf".
翻譯者為西加拉宇宙載具改裝中心的CQD.原始文件版權為Relic所有.