UE4聯網測試的快捷方法


工程中測試

創建bat文件,格式如下:

 

UE4Editor.exe路徑   工程文件名 [地圖名及參數]   -game   [其他自定義參數]

 

 

UE4Editor.exe路徑表示虛幻編輯器相應版本的UE4Editor.exe的絕對或者相對路徑,如果路徑名稱中有空格,需要用引號把路徑包裹住

工程文件名表示uproject文件的絕對或相對路徑,如果路徑名稱中有空格,需要用引號把路徑包裹住

[地圖名及參數] 可以指定啟動的地圖名稱,例如用一個完整路徑:/Game/Maps/LobbyMap,或者省略路徑,直接指定地圖名稱:LobbyMap。 地圖后面可以加?listen參數,表示以listenserver的方式打開該地圖

這里還可以添加ip地址,例如:...LobbyMap 127.0.0.1,這樣會讓該實例運行以后直接嘗試連接該ip地址

-game表示運行游戲,如果不加該參數,則會啟動編輯器

例如:

服務端:

"C:\Program Files\Epic Games\UE_4.18\Engine\Binaries\Win64\UE4Editor.exe" "D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program\UE4_Program.uproject" LobbyMap?listen -game -clientType server

客戶端:

"C:\Program Files\Epic Games\UE_4.18\Engine\Binaries\Win64\UE4Editor.exe" "D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program\UE4_Program.uproject" -game -clientType clientA

(這個客戶端命令沒有直接嘗試連接某個IP地址。可以在項目中利用Session去進行連接。)

 

Packaged后測試

Packaged以后的游戲會生成一個可執行的exe,直接點擊就可以運行,但是如果想向其中傳入一些參數,方法如下:

創建一個bat,內容格式:

游戲程序exe路徑  [地圖名和參數] [其他自定參數]

服務端:

WindowsNoEditor\UE4_Program2.exe LobbyMap?listen -clientType server

客戶端

WindowsNoEditor\UE4_Program2.exe -clientType clientA

 

批量測試

如果討厭bat文件的黑窗口,並且想依次運行多個bat,可以借助vbs腳本

范例如下:

set ws=WScript.CreateObject("WScript.Shell") 
ws.Run "RunServer.bat",0
WScript.Sleep 1000
ws.Run "RunClientA.bat",0
WScript.Sleep 1000
ws.Run "RunCLientB.bat",0

上述腳本的意思是先運行RunServer.bat,等待一秒,運行RunClientA.bat,等待一秒,運行RunClientB.bat

 

命令行Package

如果需要頻繁package游戲到固定路徑下進行測試,建議借助虛幻引擎的RunUAT.bat,其位置在 引擎目錄\Engine\Build\BatchFiles

相關wiki: https://wiki.unrealengine.com/How_to_package_your_game_with_commands

我的使用范例:

RunUAT BuildCookRun -project="D:\WorkingFolder\...\UE4_Program2.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -allmaps -stage -pak -archive -archivedirectory="D:\WorkingFolder\...\UE4_Program_Build2"

注意最后的輸出路徑結尾不能加反斜杠,不然會報錯。

這樣的話,只需要在RunUAT.bat的目錄下打開一個命令行,運行上述命令即可package。下次再package只需要按上鍵,再回車就可以了。

 或者有個更方便的辦法,就是把上述內容寫在一個bat里,需要用的時候直接雙擊就可以了。但是內容要稍微做點修改:

"C:\Program Files\Epic Games\UE_4.18\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -project="D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program2\UE4_Program2.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -allmaps -stage -pak -archive -archivedirectory="D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program_Build2"

 

命令行復制文件夾

網絡測試有時候需要兩個客戶端,用bat啟兩次會導致本地化存儲(例如save game)的沖突,這時候需要把打包好的程序復制兩份或者多份。這個需求也可以自動化,使用bat的xcopy命令進行。

范例:

xcopy /E /Y "D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program_Build2\WindowsNoEditor" "D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program_Build2\WindowsNoEditor2\"

上述bat文件的作用是把第一個目錄下的內容復制到第二個路徑下,/E 表示復制目錄和子目錄,包括空的   /Y表示如果存在同名文件直接覆蓋,不用提示

 這行命令可以寫在Package命令的下一行,等package完直接復制一份,更加省事。

但是要注意,如果要和上述例子連寫,需要在第一條調用bat的命令前面添加一個call ,否則就只執行第一條,第二條會被略過。范例:

call "C:\Program Files\Epic Games\UE_4.18\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -project="D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program2\UE4_Program2.uproject" -noP4 -platform=Win64 -clientconfig=Development -serverconfig=Development -cook -allmaps -stage -pak -archive -archivedirectory="D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program_Build2"
xcopy /E /Y "D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program_Build2\WindowsNoEditor" "D:\WorkingFolder\SceneVisualizationOfNPP\UE4_Program_Build2\WindowsNoEditor2\"
pause

如果不增加最前面的 call, 命令行就直接跳轉到 RunUAT.bat的環境中去了,不會在第一條執行完之后跳轉回來執行xcopy。

最后的pause可以去掉,這里加上只是為了防止執行完畢自動關閉窗口,以便更清楚的在命令行窗口中看到執行xcopy的過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM