Kobayashimarucommander developmentlog v0.1.0 - NDark/KobayashiMaruCommanderOS GitHub Wiki

開發日誌

KobayashiMaruCommander 小林丸指揮官 v0.1.0 開發日誌

  1. 設計草稿 20120914
  2. 完成背景圖的擺放與攝影機位置 20120915
  3. 完成船隻(主角)及攝影機追跡動作 20120916
    1. 製作主角的GameObject
    2. 製作攝影機跟隨主角的script
    3. 取得主角的貼圖及擺放正確的朝向(朝向x軸)
      很奇怪貼圖要朝向螢幕左方,貼圖才會朝向x軸.
    4. 製作主角的資料結構.客製化數值等到武器系統製作實再建立.
  4. 完成船隻的移動,以及控制 20120917
    1. 補充船隻資料中的速度參數
    2. 功能(script)依照時間更新船隻位置(移動)
    3. 後門功能,可以決定隨時間更新或是一次更新多少時間
      Debug_IfUpdateWithTimer
      Debug_UpdateCustomElapsedSec
    4. 後門功能,可以決定要更新哪些參數
      Debug_IfUpdatePositon
    5. 如何將所有需要移動的船隻註冊到更新器上
      船隻初始化時註冊物件名字(因此將來產生船隻時名稱須特別注意)
  5. 完成船隻的移動範圍 20120918
    1. 由BackgroundObject來計算長寬參數
    2. 如果船隻的位置有可能移動到限度外就不套用該次移動.
  6. 完成船隻的節流閥控制及參數 20120919
    1. 目前使用脈衝比例/目前脈衝造成的速度/船隻最高脈衝速度。
  7. 完成簡易的船隻資訊顯示 20120919
    1. 船隻的方向
    2. 目前脈衝造成的速度
    3. 目前使用脈衝比例
  8. 完成靶船的產生 20120920
    1. 關卡初始化時使用xml或excel的方式來產生樣本ship data資料
    2. 船艦產生時再使用資料複製的方式.
      1. 名稱須特別注意不能重複.
      2. 註冊到global singleton中
    3. 製作船隻樣板物件(prefab): UnitRock01
      使用貼圖 RockTxture01
      使用材質 RockMaterial01
  9. 關卡配置
    目的是為了未來開發方便,不要硬寫太多程式,也在此時思考 單關卡 多關卡 換關卡的問題.
    1. 關卡讀取的流程如下
      1. 由介面或是場景跳躍來決定LevelGenerator::levelIndex
      2. 呼叫關卡讀取(或是場景切換時初始化第一次呼叫關卡索引)
      3. 由LevelGenerator::levelIndex找到LevelGenerator::levelTable[ levelIndex ]的關卡路徑
      4. 再由關卡路徑讀入指定關卡
      5. 製作船隻樣板資料設計
    2. 關卡檔設計與關卡讀檔(script): LevelGenerator
      1. 讀入船隻樣版資料
        1. 船隻資料樣本的資料容器
          Dictionary< string , UnitTemplateData > levelUnitTemplateTable
      2. 讀入關卡清單 20120920
        1. 關卡檔清單(參數): 關卡檔路徑 設計關卡清單 20120920
          1. 使用xml檔案
          2. 清單關卡檔名
          3. 關卡索引(參數)
      3. 讀入指定關卡配置資料 20120921
        1. 設計關卡配置資料 20120921
          1. 關卡名稱
          2. 單位
            1. 單位名稱
            2. 單位樣板名稱
            3. 位置(以[縮放後]場景座標系為準)
            4. 旋轉(對三軸轉)
        2. 關卡配置的資料容器 20120922 (周六)
          1. 船隻配置 List levelUnitInitializationTable
          2. 增加一般單位的註冊script 未來要刪除的時候有用
          3. 目前先把主角單位與一般單位的註冊分開 因為主角的script也許是比較不同的
      4. 產生各船隻
        1. 依照船隻的名稱instance船隻 20120921
        2. 向關卡配置要該船的擺放位置 20120921
        3. 向船隻樣板資料取得傳入ship參數
  10. 完成目標的選定及目標框選的介面 20120922
    1. 目標框介面的製作
      GUI_Selection
      pixel inset 是在中央 (以此例 -32 -32)
      寬度與高度應該隨著船隻變大小目前船隻是10x10 看起來 64*64 先寫死
    2. 目標框的選定與取消方式
      1. 滑鼠點擊的判定 (主角控制)
      2. 由於OnMouseDown() / OnMouseUp() 只有在綁上collider的物件 的script才會觸發
        因此船隻(GameObject)就必須多綁上一個Collider
        或是
        在底層Plane的地方加裝一個判斷點選的控制. scrip ClickOnThisCollider
      3. click的界限值 (參數) : clickThreasholdInClick
    3. 目前目標框的資料容器 MainCharacterSelectionInfo in script GUIUpdate
      1. valid
      2. time 紀錄啟動時間
      3. 螢幕位置 : 依照船隻的位置計算螢幕位置(viewport pos)
      4. 目標名稱
      5. 是否要記 目標指標 ? 好處:找一次,壞處指標有可能壞掉. 暫時不記
    4. 依照資料容器顯示更新目前的所有目標框 (更新)
      假如有目標名稱就檢查後更新
      沒有就以目前位置更新
  11. 製作單位的血量參數 20120922
    1. 參數檔案中的資料,parse
  12. 完成目標選定後的戰略介面(決定攻擊元件)
    1. 介面
      1. 光炮 暫時只有一門 未來每個武器會在物件上綁上發射台物件.每個發射台物件對應一個武器系統.
      2. 光雷 暫時不能使用
      3. 使用光炮與光雷的切換
  13. 光炮 20120922
    1. 光炮的特效
      1. 特效物件
        PhaserBeamMaterial
        PhasorBeamTexture
    2. 發射光炮 script UnitWeaponSystem
      1. 控制 檢查按鈕的按下
      2. 依照按下的按鈕 找到 正確的武器名稱(Phaser)
      3. 依照武器名稱 向 ShipData 找到正確的武器部件(Phaser01)
      4. 向GUI系統找到主角選擇框的真確性
      5. 向武器部件 的 武器系統要求發射 傳入 武器與目標名稱
      6. 武器系統控制 光炮物件動畫(Phaser01Beam) 的產生與消滅
  14. 擊中特效 20120923
    1. 使用粒子特效
      一個武器配一個例子特效
      一個目標物件被一個武器特效擊中時配一個受傷特效
    2. 被擊中時被別人呼叫 script UnitDamageSystem
    3. 關閉 武器系統連帶關閉
    4. 關閉 當指定特效時間結束
  15. 損傷判定 20120923
    1. 瞬間開火的瞄準點會隨機計算來做偏移
    2. 並且依照隨機計算之後的偏移量來計算扣血,公式如下
      武器標準殺傷力(參數)
      武器精確度(0.9指的是最多會導致殺傷力為0.9)
      武器最大偏移值(以此例0.1)
      最大偏移座標差值(參數)
      隨機量(0~100,0表示無偏移100表示完全偏移)
      依照隨機量造成的殺傷力=武器標準殺傷力*(武器精確度+(最大隨機量-隨機量)/最大隨機量*最大偏移值)
      依照隨機量造成的位置偏移=最大偏移座標差值*(隨機量-一半的最大隨機量)/最大隨機量
    3. 扣到零會移除該物件
  16. 整理攻擊受傷的流程文件 請參考 攻擊與被擊中 20120926
  17. 死亡特效 20120927
    讓物件的消失是有特效的。
    物件會有狀態,取得物件後要先去檢查狀態,如果已經進入死亡中,則大部分的互動會結束,但是物件仍存在。
    死亡中會持續一段時間,直到死亡特效播放完畢,物件才會進入已死亡,並移除物件。
  18. 製作另一艘船 20120929
    1. 修改速度的更新(從主角改為泛型)
  19. 護盾特效 20120929
    當船隻被擊中時,開啟護盾的特效物件,隨著攻擊結束而關閉。
    暫時不做護盾的扣抵。
    1. 先暫時使用 UnitDamageSystem 裡面寫死另外的特效物件
    2. 哪些要有護盾哪些要有特效必須另外定義
  20. 血量條 20120929
    請參照 script GUI_Ship_Update
    不能裝在船隻的child上因為會被船隻的旋轉影響
  21. 攻擊數值 20120930
    1. 每次製造傷害時更新
    2. 在UnitDamageSystem中寫死一個UIText物件
    3. 慢慢往上飄
    4. 一段時間後消失
  22. 不能點到自己 20120930
  23. 將船隻的轉向統一對準z軸(forward) 20120930
    1. 船隻貼圖統一朝向下方
  24. 完成一個敵人會攻擊玩家 製作簡單的船隻AI 20120930
    1. 船隻樣本設定檔中判斷是否要開啟此部件
    2. Prefab中插入此部件
    3. 朝向玩家(MainCharacter)
  25. 實做碰到敵人玩家損血 20120930
    1. 製作攝影機震動特效
  26. 完成失敗判定 20120930
    1. 點選失敗判定圖會重新開始
  27. 攝影機震動效果只有在主角存活才會使用. 20120930
  28. 完成第一個基本關卡 20121001
    1. 多設計幾個物件
  29. 新增玩家的初始位置 20121002
    object: MainCharacterStartPosition
  30. 新增石頭的AI 20121002
    1. AI_RandomMove
      時間愈設5秒,但會隨機增減-0.5~0.5
      隨機方向 x , z 軸
      速度 1.0
  31. 新增背景音樂 20121002
  32. 死掉時不能控制船隻 20121002
  33. 在周圍做星雲的物件當作場景邊緣 20121003
    1. 直接使用大片的物件來遮蔽
    2. 未來製作場景必須注意到背景不等於場景的務問題
  34. 敵人的出現 讓敵人的出現是隨時間 20121003
    1. 移除掉預設的敵人
    2. 新增幾個dummy game object
    3. 隨機決定重生點
  35. 基本版遊戲教學 20121005
    1. 航向控制
      使用上下按鈕加減速
      使用左右按鈕轉向
    2. 戰術瞄準與發射
      使用滑鼠點選目標
      使用1鍵發射光炮
    3. 第一個敵人出現的訊息
      艦長,長程掃瞄器發現多艘克林貢船艦朝向我們而來,
      他們都沒有武器,但是航向卻設定為撞擊路線。
  36. 音效 : red alert 20121005
  37. 音效 : 光炮 20121005
  38. 調整事件的時間序 20121005
  39. 調整船艦參數 20121005
  40. 解決重置關卡的時間問題 20121006
⚠️ **GitHub.com Fallback** ⚠️