# BEATDAY LITE - WebGL 安裝設定流程 ## STEP1: 專案下載 先確定先安裝好 [GIT](https://git-scm.com/downloads) 環境,建議要對 GIT 操作有基本概念,比較好上手操作。 另外因為長路徑問題,建議先開啟長路徑設定 ``` git config --global core.longpaths true ``` 以下有兩種 Clone 方式: ### 方法一: 自動方式 **補充:<font color=#ff800 size=3>如果創建 bat 檔有問題,也可以向窗口索取對應項目的 bat 檔案。</font>** 先建立 text 檔案 (新文字文件.txt),並將其副檔名改成 .bat,將以下內容複製並儲存 (**ex: BEATDAY_PROJ-NAME.bat**): ```bat @echo off REM 修改窗口指定的 proj= 專案名稱 (避免 Clone 路徑有問題),ex: proj=Monday set proj=PROJ_NAME set edlc=%proj%DLC set git=https://git.viveoriginals.com/vo/beatday-2.0-team/%proj% ECHO %git% REM 主體 BEATDAY Unity 專案 git clone %git%/beatday.git Beatday%proj% cd Beatday%proj%/Assets mkdir _DLCs cd _DLCs echo chdir %cd% REM 必要 DLC echo clone CoreDLC git clone %git%/coredlc.git CoreDLC REM 項目 DLC echo clone %edlc% git clone %git%/%edlc%.git %edlc% cd %~dp0 PAUSE ``` 再將該 bat 檔案放置於想 Clone 的路徑目錄中,雙擊批次檔,即可自動下載,中途可能會需要輸入帳號密碼 (窗口會提供)。 ### 方法二: 手動方式 根據窗口提供的資訊網址後,操作 GIT Clone 為以下: 1. 先 Clone 主專案 (BEATDAY LITE)。 2. 再 Clone DLCs <font color=#ff0000 size=3>(建議 DLC 結尾作為後墜為命名規則)</font>,歸屬於專案 \<**PROJ_NAME**\>/Assets/_DLCs/ 目錄下,主要與包含的 DLC 為以下: - CoreDLC - \<**PROJ_NAME**\>DLC ## STEP2: Unity 專案設定 1. 開啟 [Unity Hub](https://unity.com/cn/download),確定 Unity 環境 [2022.3.59f1](https://unity.com/releases/editor/whats-new/2022.3.59#installs),必需安裝以下: - WebGL Build Support - Windows Build Support (IL2CPP) ![image](https://hackmd.io/_uploads/HyO5lR4Hge.png) 2. Visual Studio 環境需安裝 \[**C++ 的遊戲開發**\] 項目 ![image](https://hackmd.io/_uploads/rJNR-0Nrgg.png) 3. 開啟專案 4. 切換 Platform 到 WebGL (如果還沒有環境,需要先安裝) ![image](https://hackmd.io/_uploads/HykR06ESxx.png) 6. 重開專案 <font color=#ff0000 size=3>(強烈建議)</font> ## STEP3: HybridCLR (程式熱更新環境) 1. 安裝: Menu > HybridCLR > Installer - 如果 Intalled Version 顯示 **Unknown** 或 **Version 不一致**,都必須按 Install 執行安裝 ![image](https://hackmd.io/_uploads/HyXOH-CIex.png) 4. 確認 Hotfix DLL 列表 - Menu > HybridCLR > Settings... (確定已有指定該專案 **\<NAME\>.Hotfix.DLC.Runtime** 程序集) ![image](https://hackmd.io/_uploads/rk5xUbR8lx.png) 6. Menu > HybridCLR > Generate > All 7. Menu > HybridCLR > OxGFrame With HybridCLR > Compile and Copy to HotfixCollector **Note: 請確認 Console 視窗都沒有 Error,如果有錯誤,請將錯誤訊息回報對接技術人員** ## STEP4: 打包資源包 BEATDAY 資源結構是由許多不同資源包裹 (Packages) 進行資源跟代碼熱更的,所有的表演資產都是放在各自專屬 DLC 的目錄內,以下則是使用 Bundle Map JSON 進行包裹 (Package) 對應打包。 ### 使用 Bundle Map JSON 進行打包 <font color=#ee82ee size=3>(推薦)</font> - Menu > OxGFrame > Extensions > BuildTool > Build Bundles by Bundle Map JSON 打包參數說明 <font color=#ff0000 size=3>(很重要!!!,跟打包效率有關)</font>: | 首次必須執行 | 平時開發打包 | | :-: | :-: | | ![image](https://hackmd.io/_uploads/rycRM-CLgl.png) | ![image](https://hackmd.io/_uploads/r1UcMbCIxg.png) | | ↑ 首次尚未執行 **Generate All** 前 ↓ | ↑ 首次已經執行 **Generate All** 後 ↓ | | 勾選 **Generate All**,完整執行打包一次 | 取消 **Generate All**,極速加快打包效率 | | <font color=#ff6600 size=3>※ 如果有錯誤一定要請求支援!!!</font> | <font color=#ff6600 size=3>※ 確保 Generate All 完成後,才能取消勾選</font> | 可以在專屬 DLC 目錄下找到預設幫忙配置好的 BuildBundle.json,依照以下圖示步驟 **(1)** 跟 **(2)** 進行 Bundle Map JSON 文件的加載。 ![image](https://hackmd.io/_uploads/Hy1T4WRLlg.png) JSON 內容載入後,即可按下以下圖示步驟 **(3)** 的按鈕進行打包。 ![image](https://hackmd.io/_uploads/SyVJ3x0Ull.png) ### Bundle 資源在哪裡 根據預設給的 JSON 配置,打包完的 Bundle 資源皆在 Assets/StreamingAssets/**Sandbox** 目錄下,主程序啟動時會自動讀取內置資源,後續不管是任何內容製作、代碼更新,只需要重新打包即可,更新方式為以下: 1. 再次打包資源後 (參考 [STEP4](#STEP4-打包資源包)),再將 Assets/StreamingAssets 複製並覆蓋到打包好 **WebGL** 主程序文件夾中的 StreamingAssets 目錄下。 2. 或是使用 syslink (mklink /D ...) 直接 link 專案的 StreamingAssets 目錄取代至主程序中的 StreamingAssets 內置資源目錄。 ## STEP5: 打包主程式 (頁面) 只需要編譯一次即可,除非後續有更新 BEATDAY 主專案的程序,或者載入新插件 (插件屬 AOT 工程),不然不需要重新打包 **WebGL** (AOT) - Menu > File > Build Settings > Build (Clean Build) ![image](https://hackmd.io/_uploads/ry78xbRIeg.png) ## STEP6: WebServer 需要一個網頁伺服器,才能開啟網頁服務,建議使用 [Simple Web Server](https://simplewebserver.org/zh-TW/),簡單好操作。 下載安裝後,點選 "New Server" ![image](https://hackmd.io/_uploads/H1Q6T_srxx.png) Folder Path 選則打包 WebGL 主程序出來的目錄文件夾,PORT 可以使用常用預設的 80,或選一個沒使用的 PORT 埠號,如果需要給同網域 (LAN) 的其他電腦測試,需要勾選 Accessible on local network,確定後 "Create Server" ![image](https://hackmd.io/_uploads/HkLNRdoHex.png) 測試時,用網頁瀏覽器 (建議使用 Chrome) 輸入 http://localhost 或者 http://127.0.0.1 ,如果 PORT 設定非 80,則需要 PORT 號,例如 -> http://localhost:8080 (冒號 **:** 後面的數字為 PORT 號即連接埠 ) ## STEP7: 開始編輯表演與測試 ### 場景檔案 場景檔在 Assets/_DLCs/\<**NAME**\>DLC/Bundles/CoreFrame/US/DemoUS.unity ![image](https://hackmd.io/_uploads/ryZ4G9oBxg.png) ↑ 請直接改這個檔案即可 ↓ **Timeline** (TimelineCom) 物件為控制元件,不可刪除,具體操作方式請參照文件 ![image](https://hackmd.io/_uploads/B19mXcsrle.png) ![image](https://hackmd.io/_uploads/B1xum9oHxg.png) ### 限制 1. 除了平台道具/皮膚等,不然請將所有資料都放在專屬專案 DLC 目錄下 (ex: \<**NAME**\>DLC) 2. 腳本 (Script) 一定要放在專屬 DLC 的 _DLCs/\<**NAME**\>DLC/Scripts 目錄中,確保腳本路徑組織性 ### 使用 Unity Editor 測試運行 開啟 Main 場景 (由主場景驅動進程),按下 Play 執行 ![image](https://hackmd.io/_uploads/rkRknrmUgx.png) ### 輸出 WebGL 網頁真機測試運行 - 想要使用真機調適,記得先編譯 **WebGL** 主程序參考 [STEP5](#STEP5-打包主程式-頁面)。 - 日常開發,不管是場景資源更新、還是新增更動代碼,只要直接執行 [STEP4](#STEP4-打包資源包) 打包流程 <font color=#9900cc size=3>(注意參數將會影響打包效率)</font>。 # 參考資料 1. [OxGFrame](https://oxgframe.ouhiyo.com/) 2. [HybridCLR](https://hybridclr.doc.code-philosophy.com/) 3. [YooAsset](https://www.yooasset.com/)