[UE4] Visual Studio編譯選項

打開Visual Studio後,我們在專案的組態中可以發現有好幾種編譯組態可以選擇,見Figure 1.12.1、Figure 1.12.1。

image

Figure 1.12.1 從Epic Games Launcher下載的版本,預設有5種編譯組態可以選擇。

image

Figure 1.12.2 從Github上下載引擎版本自己編譯的話,則會發現多了非常多的編譯選項。

每一個編譯選項主要是由二個關鍵字所組成,第一部份是用來描述引擎跟我們遊戲專案要用什麼狀態來編譯,例如DebugGame、Development跟Shipping。第二部份則是要編譯目標,主要是對應到Source資料夾下的Target.cs。讓我們先看看以下幾個例子:

  • DebugGame:會使用${ProjectName}.Target.cs(TargetType.Game)中的相關設定資訊進行編譯,產生標準的standalone執行檔,在unreal的架構中預設是listen server,意即這個執行程序既是server也是client,別人若知道該listen server的ip,就可以使用open指令加入遊戲,例如:open 192.168.xx.xx:7777。
  • DebugGame Editor:會使用${ProjectName}Editor.Target.cs(TargetType.Editor)中的相關設定資訊進行編譯,產生帶有Unreal Editor的執行檔。
  • 選擇DebugGame Server:這個組態預設並不存在,當我們在Source下建立完${ProjectName}Server.Target.cs後就會出現,選擇後會使用${ProjectName}Server.Target.cs(TargetType.Server)中的相關設定資訊進行編譯,產生Dedicated Server執行檔。
  • DebugGame Client:這個組態預設並不存在,當我們在Source下建立完${ProjectName}Client.Target.cs(TargetType.Client)後就會出現,選擇後會使用${ProjectName}Client.Target.cs中的相關設定資訊進行編譯,移除所有server端的能力,產生純粹的客戶端執行檔。

藉由編譯方式跟編譯目標的組合,我們可以得到各種不同的建置組合以符合不同的使用情境。其中若是我們使用的是Github上引擎版本的話,還會多種Debug跟Test這二種建置方式,到底它們的用途是什麼?表格 1表格 2跟整理了所有的建置狀態跟建置目標:

表格 1 建置狀態,主要是用來決定產生的執行檔是不是要進行最佳化。

建置組態狀態  描述
Debug 這個建置組態,會將整個「引擎」跟「Game Code」用最方便除錯的方式進行編譯,其中會包含所有的Debug Symbol,程式碼不會進行任何的最佳化,因此非常適合進行完整的斷點除錯。只是,由於我們必須將整個UE4的原始碼從Github上拉下來自己編譯,因此非常的耗時。從Epic Games Launcher下載的版本不會出現這個建置組態。
DebugGame 這個建置組態,會對引擎部份的程式進行最佳化編譯,僅留下「Game Code」的部份是可以進行完整的除錯。由於大部份的情況我們都不需要去關心引擎底層的實作細節,因此是個不錯的折衷方案。
Development 一般開發時預設的編譯方式,雖然會對我們的「Game Code」進行最佳化編譯,但是會保留所有的console command跟profiling工具。
Shipping 對整個程式碼進行最佳化的調整,並將所有的console command跟profiling工具從建置中移除,發佈遊戲時通常會使用這個選項。
Test 基本上跟Shipping差不多,但保留了部份的console command、stats跟profiling工具,主要是遊戲發佈前的QA階段使用。從Epic Games Launcher下載的版本不會出現這個建置組態。

表格 2建置目標,主要是用來決定產生的執行檔用途。

建置組態目標   描述
[empty] 產生標準的standalone執行檔,但必須要先cook過該平台的content才能執行。
Editor 產生帶有editor的執行檔,通常開發階段都會使用這個選項。
Client 主要是給開發多人連線平台相關應用時使用,這個建置只會保留standalone執行檔所有client相關的能力。在Source下建立完${ProjectName}Client.Target.cs並把type設成TargetType.Client後就會出現這個建置選項。
Server 主要是給開發多人連線平台相關應用時使用,這個建置只會保留standalone執行檔所有server相關的能力。若想要產生Dedicated Server則必須使用這個建置方式。在Source下建立完${ProjectName}Server.Target.cs,並把type設成TargetType.Server後就會出現這個建置選項。

最後,我們還可以在Visual Studio中選擇要編譯的平台,見Figure 1.12.3。

 

image

Figure 1.12.3 我們還可以選擇編譯平台目標,其中IOS會使用remote build的機制連到我們設定好的mac機器位置。

Leave a Reply

Your email address will not be published. Required fields are marked *