Skip to content
NDark edited this page May 30, 2017 · 24 revisions

{{toc}}

設計與內容

說明

  1. 本頁面說明本專案的各項設計與現存的內容
  2. 如果有沒撰寫的內容請直接看 功能清單

流程

  1. 警告頁面
    不可跳過,定時間離開,進入廣告頁面。
  2. 廣告頁面
    可跳過,定時間離開,進入標題頁面。
  3. 標題頁面
    必須按鈕方可跳過。進入選擇模式頁面。
  4. 選擇模式頁面
    選擇故事或是挑戰模式,可返回標題頁面。
  5. 選擇船艦頁面
    目前僅有挑戰模式才會選擇船艦,可返回選擇模式頁面,或是進入挑戰模式選擇關卡。
  6. 故事模式選擇關卡
    目前有九個關卡,可以返回選擇模式頁面,選擇關卡後按下進入任務的按鈕後進入特別感謝頁面。
  7. 挑戰模式選擇關卡
    目前有一個關卡,可以返回選擇船艦頁面,選擇關卡後按下進入任務的按鈕後進入特別感謝頁面。
  8. 特別感謝
    如果在選擇關卡有指定特別感謝字串,就會顯示目標,可跳過。
    如果在選擇關卡沒有指定特別感謝字串,那麼不會顯示任何物件,直接進入戰鬥場景。
  9. 戰鬥場景
    依照選擇關卡指定的關卡字串,決定讀入關卡。
    戰鬥中途可以開啟戰場選單,回到對應的選擇關卡。
    戰鬥勝利或失敗,會結束戰鬥場景進入資訊頁面。
  10. 資訊頁面
    戰後一連串的資訊頁面,結束後回到選擇場景或是警告頁面。
    1. 資源清單
      請參考頁面 資源取得網站清單

資訊頁面群的跳躍

請參考 InitializeInformationSequence.cs

  1. 戰後會有資訊頁面的流程,主要目的是給予玩家其他資訊(招募人員,資源路徑清單,或是工作人員,小提示等等)
  2. 原本的作法是戰後的按鈕直接導向各頁面,然後再由各頁面串接,最後連到回到起始(選擇關卡,或開頭)。
  3. 也就是把場景轉換的順序寫在場景(Scene)中。較為不彈性(如果要修改必須開Unity一個個場景做調整)
  4. 目前的作法是遊戲勝負已分就到資訊起始場景Scene_InformationHead,此場景是空的場景。
  5. 資訊起始場景用來讀入參數檔,並且設定場景參數到GlobalSingleton中。
  6. 之後(包含資訊起始場景)的所有資訊頁面都是去檢察此設定,然後切入下一個場景。
  7. 目前相關的運作
    1. ClickOnMessageCard_BackToSelectScene.cs 取得最終跳躍場景名稱
    2. LevelGenerator.cs 設定最終跳躍場景名稱
    3. VictoryEventManager.cs 設定最終跳躍場景名稱

系統概論

戰鬥場景概論

  1. 戰鬥場景大致上由LevelGenerator發動,負責將關卡讀入。
  2. 然後依照GlobalSingleton上面掛載的各項管理器讓戰場運動起來。
  3. 主角船目前是物件名稱為MainCharacter的物件。其prefab相較於其他的船艦有稍稍不同,UnitDataGUI的圖片也不同。

素材

資料夾概論

  1. 小林丸指揮官的素材如Assets資料夾分為
    1. Animation 動畫
    2. Audio 音訊
    3. Resource 動態資源
    4. Texture 貼圖
    5. Material 材質
    6. Scene 場景
    7. Script 功能,請參閱功能清單
  2. 其中除了動態資源,場景與功能之外,都是各場景需要用到的資源。
  3. 而動態場景則是戰鬥場景運行中會動態讀入的資源其中分為
    1. Common 一般跟語系無關得資源
      1. Audio 音訊
      2. Prefabs 樣板
      3. Textures 貼圖
      4. Data 資料
    2. English 英語系資源
    3. TraditionalChinese 繁體中文資源

資料的外部化

  1. 小林丸指揮官的資料(Data)支援兩種讀取方式
    1. 內部:放在Resource下的資料夾,讓Unity建立專案時一併打包。(玩家看不到)
    2. 外部:放在本機端執行執行檔旁,執行時動態讀取。(開放給玩家)
  2. 相關資料請參考
    1. 功能清單 中的 LoadDataToXML
    2. 請參考 發布注意事項

部件的製作

  1. 部件是獨立於單位的基本船身的存在
  2. 部件是透過UnitTable.xml來裝上各單位的基本船身之上
  3. 部件分為兩個部份
    1. 3D部分: 透過prefab來建立,定義部件在基本船身的3D空間位置,請見 單位概論 一節。其命名為
      Template_Unit_[部件種類]_[序號或類型]
    2. 3D部分的部件可有轉向之分,後方的防護罩轉向後方,武器也會依照轉向來定義攻擊範圍。
    3. 資料部份: 在UnitTable.xml中透過 [部件種類]_[序號或類型] 來找到3D部分的prefab。然後實體化後裝載在船型上。
  4. 雖然部件獨立於船型之外,所以任意船型都可以組合任意部件。然而部件的prefab必須與船型相對應,否則該部件在3D中會脫離船型的位置(在船外空間的位置)。
  5. 部件可以攜帶特效如引擎部件都攜帶Fluffy Smoke特效,讓各引擎在下線時都能放出煙霧。
  6. 定義部件的參數,在ComponentParamTable.xml中定義部件
    1. 在UnitDataGUI上的位置,及顯示名稱。
    2. 使用的特效prefab名稱,只有防護罩種類跟武器種類會需要定義特效prefab名稱,前者會產生被攻擊時的防護罩特效。後者會產生攻擊時運作的武器特效。
  7. 定義武器部件的參數,在WeaponParamTable.xml中特別定義武器的參數
    1. 攻擊角度
    2. 攻擊距離
    3. 準確度
    4. 發射時的音效名稱

關卡與場景

關卡導論

  1. 場景是Unity的場景,我們透過一個戰鬥場景來讀入不同的關卡。
  2. 因此各關卡的不同之處在於初始物件的配置,事件,及運作機制。
  3. 譬如說tutorial的關卡有tutorial的事件處理器。其他關卡不需要。

攝影機座標

  1. 請參考script : CameraInitialization 攝影機初始化
  2. 中心 0 100 0 朝向 -y軸 以一定高度看下去
  3. 高度會影響單位及場景的縮放大小
  4. 高度會影響看到的範圍
  5. 沒有旋轉

單位與部件

單位概論

  1. 小林丸指揮官的單位是由數個部份所構成。
    1. Prefab樣板,用來提供基本船身,請參閱資料夾Assets\Resources\Common\Prefabs\
    2. 資料樣板(UnitDataTemplate),用來提供單位的資料船身,如速度參數,各部件名稱與參數,最後會產生UnitData這個資料結構掛在單位上,請參閱Assets\Resources\Common\Data\UnitTable.xml
    3. 部件樣板(Component),用來定位部件在船隻身上的位置,由於目前沒有部件的模型,所以部件是看不見的3D方塊,請參閱資料夾Assets\Resources\Common\Prefabs\Template_Unit_*.prefab
    4. 部件介面(UnitDataGUI),透過各部件定義在部件參數檔的資料,來動態建立2D的部件介面,請參閱Assets\Resources\Common\Data\ComponentParamTable.xml
    5. 部件使用的特效樣板,部件在運作時會使用的特效物件樣板(如防護罩特效,武器特效),同樣定義在ComponentParamTable.xml中。
    6. 武器參數,定義武器部件的參數Assets\Resources\Common\Data\WeaponParamTable.xml。
    7. AI,AI船隻的運作,可以定義在資料樣板中,也可以是後再掛上。
    8. 泛型參數,放在關卡定義檔中,由UnitData保存之。
  2. 因此,各關卡指定船隻單位時就必須指定Prefab樣板,資料樣板,AI會用到的參數。就可以建立出可正常運作的單位。

單位的資料結構

請參考 功能清單 UnitData : 單位的資料結構

介面

主介面

  1. 節流閥:脈衝速度比例目前。GUI_PulseEngineRatio
    圖片寬高
    畫面上寬高
    畫面上距離原點是否有位移
    擺放位置
  2. 目前速度:暫時用數字表示向量。GUI_PulseEngineSpeed (暫時用不到)
  3. 目前朝向:暫時用數字表示向量。GUI_Direction (暫時用不到)

ControlPanel

ControlPanel的運作

場景介面

  1. 選擇框
    GUI_Selection01
    暫時只用一個選擇框,未來要使用複製或是固定長度再討論
  2. 血量條
  3. 傷害數字

特寫訊息

請參照 功能清單GUI 的 訊息系統 : MessageQueueManager

能源調配模組

請參照 功能清單GUI 的 GUI_EnergyManipulator 能源控制器

小地圖模組

請參照 功能清單GUI 的 DrawMiniMap.cs

運作與重要功能

  1. MainUpdate.cs

武器的創造

  1. 單位的參數檔
  2. 參數檔的讀取 UnitData , LevelGenerator
  3. 創造武器的3D物件 UnitWeaponSystem
    1. 取得所有武器的部件 清單
      ex. Weapon_Phaser01
      ex. Weapon_PhotonTorpedo01
    2. 依照武器的部件名稱
      1. 創造武器的3D掛在單位上的物件
        此處必須有樣板物件(因為3D很難形容) Template_Unit_
        命名為 :
        此物件會用來
        1. 檢查被擊中
        2. 發射特效的起點
      2. 創造武器的對應特效物件
        此處必須有樣板物件(因為每種武器的特效物件可能都不一樣) Template_Effect_
        命名為 :_Effect
        譬如說光炮就是長條狀的貼圖(暫用)
        光雷是一顆塊狀貼圖
        特效物件開始是關閉的
        是否要改成每次發射才創造,有待商榷與討論(效能及彈性考量)
      3. 特效物件該如何儲存?
        請見武器的集合陣列

WeaponDataSet 武器運作相關物件集

請見 功能清單 的 WeaponDataSet.cs 武器運作相關物件集

Clone this wiki locally