https://dev.epicgames.com/documentation/ko-kr/unreal-engine/command-line-arguments-in-unreal-engine

 

언리얼 엔진의 명령줄 실행인자 | 언리얼 엔진 5.4 문서 | Epic Developer Community

명령줄 실행인자란 엔진 실행 파일에 전달하여 시작 시 엔진 실행 방식을 커스터마이징할 수 있는 추가 실행인자입니다.

dev.epicgames.com

  • Additional Launch Parameters라고도 불린다.
  • 시작 시 Engine의 실행 방식 Customize 한다.
  • Project를 Test 및 Optimize하기에 유용한 툴
  • 이러한 Setting은 전반적인 조작부터 상세한 옵션까지 그 범위가 다양하다.
    • Unreal Editor가 Full Editor Mode가 아닌 GameMode로 실행 되도록 장제
    • 특정 맵이 게임 내에서 특정 해상도 및 Frame Rate로 실행되도록 선택

Command로 Command-line Argument 전달

  • 더보기
    <EXECUTABLE> [URL_PARAMETERS] [ARGUMENTS]
    • EXECUTABLE
      • 실행파일 이름
    • URL_PARAMETERS
      • URL 파라미터
    • ARGUMENTS
      • Command Flag 또는 Key-Value Pair
  • 더보기
    UnrealEditor.exe MyGame.uproject /Game/Maps/BonusMaps/BonusMap.umap?game=MyGameMode -game -fullscreen

Unreal Editor로 Command-line Argument 전달

  • Unreal Editor는 Command-line Argument로 Standalone Game Customize를 지원한다.
    • Editor에서 Command-line Argument는 Additional Launch Parameter라 불린다.
    • 이 옵션은 Play in Standalone Game 모드에서만 지원된다.
  • 또한 Multiplay Game Test 목적으로 Dedicated Server로만 Command-line Argument를 전달하는 작업도 지원한다.
  • Dedicated Server를 위한 Command-line Argument는 다음과 같다.
    • Server Map Name Override
      • Map Name을 URL Parameter로 전달
    • Additional Server Game Options
      • 추가 URL Parameter 전달
    • Additional Server Launch Parameters
      • URL Parameter 외의 추가 Command-line Flag, Key-Value Pair를 전달
  • Edit -> Editor Preference을 통해 커스터마이즈 가능

Game Launch Parameter

  • Edit -> Editor Preferences -> Level Editor -> Play로 이동해 Play in Standalone Game 이름의 Section 탐색
  • 이 Section의 Additional Launch Parameter를 위한 TextBox에 Command-line Argument를 입력한다.

Server Launch Parameter

  1. Edit -> Editor Preferences -> Level Editor -> Play 로 이동해 Multiplayer Options 이름의 Section 탐색
  2. Launch Separate Server 항목을 활성화하고, Run Under One Process 항목을 비활성화
    • 위 조건을 충족해야 Dedicated Server에 대한 Command-line Argument를 지정할 수 있다.
    • Run Under One Process가 비활성화 된 경우,
      각 Client가 Editor의 개별 Instance를 Spawn하기 때문에 Client의 실행 속도가 느려진다.
  3. Multiplayer Options Section에서 Server로 이동
    • 이 Section에서 3 종류의 Command-line Argument를 지정할 수 있다.
      • Server Map Name Override
      • Additional Server Game Options
      • Additional Server Launch Parameters

Shortcut으로 Command-line Argument 전달

  1. 실행 파일에 대한 Shrotcut 생성
  2. Shortcut을 우클릭하여 Properties 선택
  3. Properties의 Shortcut 이름의 Section에서 Target 이름의 Field  끝에 Command-line Arrgument 추가
  4. 이후 해당 Shortcut을 실행할 경우, 원본 실행 파일로 Command-line Argument가 전달된다.

Custom Command-line Argument 생성

  • Comamnd-line에 원하는 Flag나 Key-Value Pair를 전달하여 자신만의 Argument를 생성할 수 있다.
    • 이를 위해서는 Code 내 Command-line에서 해당 Argument를 읽어야만 한다.
    • Project Code가 Custom Command-line Argument를 읽지 않고 파싱하는 경우,
      해당 Argument는 무시된다.

Flag

  • 더보기
    UnrealEditor.exe MyGame.uproject -game
    • 위 예시에서 -game가 Flag이다.
    • -game은 대상을 Game Mode로 실행하고 싶다는 의미이다.

Flag Parsing

  • 더보기
    UnrealEditor.exe MyGame.uproject -myflag

     

    bool bMyFlag = false;
    if (FParse::Param(FCommandLine::Get(), TEXT("myflag")))
    {
    	bMyFlag = true;
    }

Key-Value Pair

  • 더보기
    UnrealEditor.exe MyGame.uproject -game -windowed -ResX=1080 -ResY=1920
    • Key-Value Pair는 특정 값을 지정하는 Setting Switch이다.
      • Switch에는 현재 상태 뿐 아니라 setting도 동반되어야 한다.

Key-Value Pari Parsing

  • 더보기
    UnrealEditor.exe MyGame.uproject -mykey=42

     

    int32 myKeyValue;
    if (FParse::Value(FCommandLine::Get(), TEXT("mykey="), myKeyValue))
    {
    	// 프로그램이 이 'if' 명령문을 입력하는 경우 mykey가 명령줄에 존재했던 것입니다
    	// myKeyValue는 이제 명령줄을 통해 전달된 값을 포함합니다
    }
  • Engine/Source/Runtime/Core/Public/Misc/CommandLine.h에서
    Command-line과 상호작용 할 수 있는 함수들에 대한 더 자세한 정보를 확인할 수 있다.

Command-line Argument Reference

URL Parameter

  • URL Parameter는 Game이 시작될 때 특정 Map을 로드하도록 강제한다.
  • 비록 선택사항이지만, 제공될 경우에는 실행 파일 이름을 따르거나 존재하는 모든 Flag를 따른다.

Map Name

  • Map Directory 내에 위치한다면 어떤 Map Name이든 표현 가능
  • 선택적으로 .umap 확장자를 포함할 수 있음
  • Map Directory 경로 내에 없는 Map을  다음 두가지 조건을 만족해야 한다.
    • 절대 경로를 사용 혹은 Map Driectory 기준의 상대 경로 사용.
    • Map 뒤에 반드시 .umpa 파일 확장자 요구

Server IP Address

  • Server IP Address를 URL Parameter로 사용해 Game Client를 Dedicated Server에 연결 할 수 있다.

Additional Parameter

  • Map Name 혹은 Server IP Address에 덧붙이는 방식으로 Additional Parameter 지정 가능
  • 각 옵션은 ?로 시작하고 =로 값이 설정된다.
  • 옵션 앞에 -를 붙이면 캐시된 URL Option에서 해당 Option이 제거된다.

Example

  • Map Directory에 위치한 Map으로 게임 열기
  • Map Directory 외부에 위치한 Map으로 게임 열기
    • 더보기
      MyGame.exe /Game/Maps/BonusMaps/BonusMap.umap
  • Map Directory 외부에 위치한 맵으로 Unreal Editor에서 Game 열기
    • 더보기
      UnrealEditor.exe MyGame.uproject /Game/Maps/BonusMaps/BonusMap.umap?game=MyGameMode -game
  • Game Client를 Dedicated Server에 연결
    • 더보기
      UnrealEditor.exe MyGame.uproject /Game/Maps/BonusMaps/BonusMap.umap -server -port=7777 -log
      UnrealEditor.exe MyGame.uproject 127.0.0.1:7777 -game -log

Flag and Key-Value Reference

Read Command-line Argument from File

  • 다음 상황에서 매우 유용함
    • 매우 많은 수의 Command-line Argument를 사용하는 경우
    • 동일한 Argument들을 자주 재사용하는 경우
    • Windows Command line 길이 제한에 걸리는 경우
  • 더보기
    <EXECUTABLE> -CmdLineFile=ABSOLUTE\PATH\TO\FILE.txt

유용한 Command-line Argument

  • Common
  • Rendering 및 GPU
  • CPU 및 Memory
  • Debugging

'UE5 > Architecture' 카테고리의 다른 글

[Architecture] Version Control of Asset and Package  (0) 2024.05.07
[Architecture] Config File  (0) 2024.05.06
[Architecture] Task System  (0) 2024.05.06
[Architecture] Programming Subsystem  (0) 2024.05.06
[Architecture] String  (0) 2024.05.06

+ Recent posts