> For the complete documentation index, see [llms.txt](https://docs.edgegap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.edgegap.com/docs.edgegap.com-ko/unreal-engine/more-build-methods.md).

# 추가 빌드 방법

이러한 접근 방식은 일반적으로 더 느리고 Unreal Engine에 대한 더 깊은 이해가 필요합니다.

{% hint style="success" %}
를 참조하세요 [Unreal Engine](/docs.edgegap.com-ko/unreal-engine.md) Edgegap에서 Unreal Engine 게임 서버 호스팅을 처음 시작할 때.
{% endhint %}

더 고급 Unreal Engine 및 Edgegap 사용자를 위한 대체 빌드 방법을 살펴보세요:

1. [#build-with-scripts](#build-with-scripts "mention") 는 지속적 통합에 적합한 빠르고 자동화된 방법입니다.
2. [#build-from-plugin](#build-from-plugin "mention") 는 Unreal Engine을 소스에서 빌드해야 하는 기존 빌드 방법입니다.

## ⚡ 스크립트로 빌드

스크립트를 사용한 빌드는 지속적 통합에 적합한 빠르고 완전 자동화된 쉬운 방법입니다.

### 준비 <a href="#scripts-before-starting" id="scripts-before-starting"></a>

시작하기 전에 반드시 [Edgegap에 무료 계정을 생성하세요](https://app.edgegap.com/auth/register) (신용카드 불필요).

**개발 머신에서 몇 가지 필수 항목을 구성하세요:**

<details>

<summary><a href="https://www.docker.com/products/docker-desktop/">Docker Desktop(또는 Docker CLI) 설치</a></summary>

* [공식 소스에서 Docker Desktop을 설치하세요](https://www.docker.com/products/docker-desktop/) (계정이 필요하지 않습니다).
* 설치를 완료한 후 컴퓨터를 다시 시작하세요.

</details>

<details>

<summary><a href="https://www.unrealengine.com/en-US/ue-on-github">GitHub에서 언리얼 엔진 리소스에 접근하기</a></summary>

* [GitHub 계정에 가입하세요.](https://github.com/)
* 다음 위치로 이동하세요 [언리얼 엔진 연결된 계정 대시보드 페이지](https://www.epicgames.com/account/connections).
* GitHub 계정을 에픽 계정에 연결하세요.
  * 에픽 게임즈가 귀하의 GitHub 계정에 접근하도록 허용하세요.
  * GitHub에서 에픽 게임즈 조직에 가입하라는 이메일 초대를 수락하세요.

</details>

<details>

<summary><a href="https://github.com/settings/tokens/new">GitHub 개인 액세스 토큰(클래식) 생성</a></summary>

* 권한만 활성화 `[read:packages]` ,
* 토큰 생성 - **이 값을 안전하게 보관하세요. 다시는 볼 수 없습니다**.

</details>

### 1. 프로젝트 구성 <a href="#scripts-configure-game-builds" id="scripts-configure-game-builds"></a>

Windows, Mac 또는 Linux 기기를 사용하든 상관없이, 당신은 **서버를 Linux 런타임용으로 빌드해야 합니다**., 대부분의 클라우드 제공업체(Edgegap 포함)가 현재 Linux에서 실행되기 때문입니다. 걱정하지 마세요, Linux 지식은 필요하지 않습니다.

☑️ **Unreal Engine 버전 호환성 검사 비활성화** 전용 서버용 및 **설정 `IpNetDriver` 기본 드라이버 또는 대체 드라이버로** 복제 네트워킹용:

{% hint style="warning" %}
확인하세요 **입력하십시오 `DefaultServerTarget`  이 스니펫 끝에**!
{% endhint %}

<pre data-title="Config/DefaultEngine.ini"><code><a data-footnote-ref href="#user-content-fn-1">[ConsoleVariables]</a>
net.IgnoreNetworkChecksumMismatch=1
net.CurrentHandshakeVersion=2
net.MinHandshakeVersion=2
net.VerifyNetSessionID=0
net.VerifyNetClientID=0

<a data-footnote-ref href="#user-content-fn-2">[/Script/Engine.GameEngine]</a>
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

<a data-footnote-ref href="#user-content-fn-3">[/Script/OnlineSubsystemUtils.IpNetDriver]</a>
MaxClientRate=1000000000
MaxInternetClientRate=1000000000
InitialConnectTimeout=120.0
MaxNetTickRate=60
NetServerMaxTickRate=60

<a data-footnote-ref href="#user-content-fn-4">[/Script/BuildSettings.BuildSettings]</a>
DefaultServerTarget=LyraServer
</code></pre>

☑️ **Unreal Engine 재시작** 최신 변경 사항을 다시 불러오려면.

☑️ **전용 서버 타겟 스크립트 생성** 다음을 복사하여 `<PROJECT>Editor.Target.cs` 프로젝트 루트 폴더의 파일을 복사하고 복사본의 이름을 `<PROJECT>Server.Target.cs`.

☑️ **다음에 대한 참조를 바꾸세요** 단어 **`Editor`** **로** **`Server`** 서버 타겟 스크립트에서.

☑️ **서버 빌드 기본값 수정** 서버 타겟 스크립트를 편집하여:

<pre data-title="Source/<PROJECT>Server.Target.cs"><code>bOverrideBuildEnvironment = true;
<a data-footnote-ref href="#user-content-fn-5">bUseLoggingInShipping = true;</a>
<a data-footnote-ref href="#user-content-fn-6">bUseChecksInShipping = false;</a>
<a data-footnote-ref href="#user-content-fn-7">bBuildWithEditorOnlyData = false;</a>
<a data-footnote-ref href="#user-content-fn-8">bUsesSlate = false;</a>
<a data-footnote-ref href="#user-content-fn-9">bCompileCEF3 = false;</a>
</code></pre>

✅ 이제 다음 단계로 진행할 수 있습니다.

<details>

<summary>선택 사항: 스팀 통합</summary>

다음으로 **스팀 통합**사용하려면 `IpNetDriver` 를 기본 네트 드라이버로 설정하고 다음을 확인하세요 [리눅스용 64비트 steamclient.so](https://developer.valvesoftware.com/wiki/SteamCMD#Ubuntu) 파일이 이미지의 경로에 복사되어 있는지 `/home/ubuntu/.steam/sdk64/` .

{% hint style="success" %}
추가 `steamclient.so`  리눅스 라이브러리를 우리의 단일 클릭으로 [도커 확장 기능을 사용해](/docs.edgegap.com-ko/unreal-engine.md).
{% endhint %}

<a href="https://github.com/edgegap/edgegap-unreal-buildutils/raw/refs/heads/main/steamclient.so" class="button secondary" data-icon="square-down">steamclient.so 다운로드</a>

<pre class="language-docker" data-title="Dockerfile"><code class="lang-docker">...
<a data-footnote-ref href="#user-content-fn-10">RUN mkdir -p /home/ubuntu/.steam/sdk64</a>
<a data-footnote-ref href="#user-content-fn-11">COPY ./steamclient.so /home/ubuntu/.steam/sdk64/steamclient.so</a>
<a data-footnote-ref href="#user-content-fn-12">RUN chmod 755 /home/ubuntu/.steam/sdk64/steamclient.so</a>
...
</code></pre>

{% hint style="warning" %}
**스팀 릴레이를 통해 패킷을 전송하여 연결 문제나 지연 급증을 일으킬 수 있으므로 스팀 네트워킹을 비활성화했는지 확인하세요.** 이는 리더보드, 업적, 음성 기능 또는 스팀 스토어에 게임을 게시하는 등 다른 Steamworks 기능 사용을 막지 않습니다.
{% endhint %}

<pre data-title="Config/DefaultEngine.ini"><code>[OnlineSubsystemSteam]
bUseSteamNetworking=false
bAllowP2PPacketRelay=false
<a data-footnote-ref href="#user-content-fn-13">SteamDevAppId=480</a>
<a data-footnote-ref href="#user-content-fn-13">SteamAppId=480</a>
</code></pre>

</details>

### 2. 빌드 및 게시 <a href="#scripts-build-and-upload-to-edgegap" id="scripts-build-and-upload-to-edgegap"></a>

개발자 팀과 함께 작업하면 코드를 공유해야 합니다. 문제가 발생했을 때 듣고 싶은 마지막 말은 “내 환경에서는 잘 돼”일 것입니다. 게임 서버는 전 세계 수천 대의 서버 머신에서 안정적으로 실행되어야 합니다.

서버를 안정적으로 만들기 위해 Docker를 사용합니다 - 운영 체제 수준까지 서버 코드의 모든 종속성이 어디서 어떻게 서버가 시작되든 항상 정확히 동일하도록 보장하는 가상화 소프트웨어입니다.

{% hint style="info" %}
시청을 권장합니다 ["로컬에 설치하지 마세요" (비디오)](https://www.youtube.com/watch?v=J0NuOlA2xDc\&ab_channel=Coderized). **Docker를 사용할 때 Dockerhub를 사용할 필요는 없습니다**Docker ≠ Dockerhub. Docker를 프로그래밍 엔진으로 보고 Dockerhub를 앱 스토어로 생각하세요.
{% endhint %}

☑️ **Docker가 설치되어 실행 중인지 확인하세요.**

{% embed url="<https://github.com/edgegap/edgegap-unreal-buildutils>" %}

☑️ **저희 Edgegap Build Utils를 다운로드하세요** 다음을 포함하여:

* 플랫폼별 빌드 스크립트:
  * `BuildAndUpload.ps1`  Windows용,
  * `BuildAndUpload.sh`  macOS 및 Linux용,
* `Dockerfile`  - Docker 이미지 빌드를 위한 레시피,
* `dockerignore`  - 빌드를 제거하고 속도를 높이기 위한 비핵심 파일 목록,
* `StartServer.sh`  - 런타임에서 Unreal Engine 수명 주기를 관리하는 유틸리티 스크립트.

☑️ **다음을 이동하세요 `edgegap-unreal-buildutils` 폴더를 프로젝트 루트 디렉터리로.**

☑️ **다음을 편집하세요 `BuildAndUpload`  스크립트를 플랫폼에 맞게** 다음을 구성하기 위해:

* Linux 서버용 사전 빌드된 Unreal Engine 이미지를 가져오는 데 사용되는 GitHub 자격 증명,
* 프로젝트 세부 정보 - 엔진 버전, 서버 구성, .uproject 파일 이름,
* [Edgegap 레지스트리](https://app.edgegap.com/registry-management/repositories/list) 완료된 빌드를 업로드하는 데 사용되는 자격 증명.

☑️ **편집한 스크립트를 실행하세요** 빌드 및 업로드 프로세스를 시작합니다. 이 단계를 완료하면 새 **이미지가 다음에 추가됩니다** [저장소의 Edgegap Container Registry 대시보드 페이지](https://app.edgegap.com/registry-management/repositories/list).

☑️ 자동으로 다음으로 리디렉션됩니다 **새 항목을 생성하세요** [앱 및 버전](/docs.edgegap.com-ko/learn/orchestration/application-and-versions.md#app-versions) 에서 [대시보드](https://app.edgegap.com/application-management/applications/list)**.**

✅ 이제 다음 단계로 진행할 수 있습니다. 다음으로 건너뛰세요 [#test-your-server-locally](#test-your-server-locally "mention").

<details>

<summary>문제 해결 및 FAQ</summary>

`오류: Build 함수를 실행하지 못했습니다: Dockerfile은 비어 있을 수 없습니다`

* 일부 플러그인 소스가 누락되었을 수 있습니다 `Dockerfile` 및/또는 `StartServer.sh` , GitHub의 플러그인 소스 버전에서 이 파일들의 복사본을 로컬 플러그인으로 가져오세요.

***

`open //./pipe/dockerDesktopLinuxEngine: 시스템에서 지정된 파일을 찾을 수 없습니다.`

* 개발 머신에서 Docker가 실행 중인지 확인하세요.

***

`잘못된 참조 형식 EdgegapLog: 경고: OnContainerizeCallback: 컨테이너를 생성할 수 없습니다. 메시지: 실패`

* 애플리케이션 이름이 설정되어 있고 끝에 공백이 포함되어 있지 않은지 확인하세요.
* 편집을 마쳤을 때 Enter 키를 눌러 입력 값을 확인하세요.

***

[**프로젝트를 빌드할 때 대상 'ProjectName'에 대한 대상 규칙 파일을 찾을 수 없습니까?**](https://forums.unrealengine.com/t/how-may-i-resolve-an-error-couldnt-find-target-rules-file-for-target-projectname-when-building-a-project/411707)

* 다음에서 빌드 구성을 변경하세요 `XYZServerTarget.cs` 파일:

```
BuildConfig = EProjectPackagingBuildConfigurations::PPBC_Shipping;
```

***

`403 금지됨, 컨테이너를 푸시할 수 없습니다. 메시지: 실패`

* Docker 자격 증명이 올바르게 설정되어 있는지 확인하세요.
* Edgegap Container Registry를 사용하는 경우, 사용자 이름에 `app-version-pull` 이 포함되지 않도록 하세요. 이는 이미지를 가져오기만 허용하는 프로필입니다. 대신 프로필은 계정 이메일과 비슷해야 합니다.
* 계정의 [Container Registry](https://app.edgegap.com/registry-management/repositories/list)에 충분한 여유 공간이 있는지 확인하세요. 다음을 시도해 보는 것을 권장합니다. [#optimize-server-build-size](#optimize-server-build-size "mention"), 그리고 [오래된 이미지를 삭제하기 위해 API를 사용하는 것](https://docs.edgegap.com/api/#tag/Container-Registry/operation/image-tag-delete). 이미지는 삭제될 때까지 백업용으로 로컬 머신에 저장됩니다.

</details>

## ⚡ 플러그인으로 빌드 <a href="#build-from-plugin" id="build-from-plugin"></a>

저희 기존 플러그인에는 고급 유틸리티가 포함되어 있으며, Unreal Engine을 소스에서 빌드해야 합니다.

### 준비 <a href="#plugin-before-starting" id="plugin-before-starting"></a>

시작하기 전에 반드시 [Edgegap에 무료 계정을 생성하세요](https://app.edgegap.com/auth/register) (신용카드 불필요).

**개발 머신에서 몇 가지 필수 항목을 구성하세요:**

<details>

<summary><a href="https://www.docker.com/products/docker-desktop/">Docker Desktop(또는 Docker CLI) 설치</a></summary>

* [공식 소스에서 Docker Desktop을 설치하세요](https://www.docker.com/products/docker-desktop/) (계정이 필요하지 않습니다).
* 설치를 완료한 후 컴퓨터를 다시 시작하세요.

</details>

<details>

<summary><a href="https://www.unrealengine.com/en-US/ue-on-github">GitHub에서 언리얼 엔진 리소스에 접근하기</a></summary>

* [GitHub 계정에 가입하세요.](https://github.com/)
* 다음 위치로 이동하세요 [언리얼 엔진 연결된 계정 대시보드 페이지](https://www.epicgames.com/account/connections).
* GitHub 계정을 에픽 계정에 연결하세요.
  * 에픽 게임즈가 귀하의 GitHub 계정에 접근하도록 허용하세요.
  * GitHub에서 에픽 게임즈 조직에 가입하라는 이메일 초대를 수락하세요.

</details>

<details>

<summary>개발 환경 구성</summary>

* [Unreal Engine 소스 코드 다운로드](https://dev.epicgames.com/documentation/en-us/unreal-engine/downloading-unreal-engine-source-code#downloadingthesourcecode).
* [Visual Studio 설정](https://dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-visual-studio-development-environment-for-cplusplus-projects-in-unreal-engine).

</details>

<details>

<summary>공식 Edgegap Unreal Engine 플러그인 설치</summary>

다음 공식 플러그인 중 하나를 선택하세요:

* 다운로드 [개발자 도구](/docs.edgegap.com-ko/unreal-engine/developer-tools.md#integration-kit),
* 또는 다운로드 [개발자 도구](/docs.edgegap.com-ko/unreal-engine/developer-tools.md#legacy-plugin).

</details>

### 1. 프로젝트 구성 <a href="#scripts-configure-game-builds" id="scripts-configure-game-builds"></a>

Windows, Mac 또는 Linux 기기를 사용하든 상관없이, 당신은 **서버를 Linux 런타임용으로 빌드해야 합니다**., 대부분의 클라우드 제공업체(Edgegap 포함)가 현재 Linux에서 실행되기 때문입니다. 걱정하지 마세요, Linux 지식은 필요하지 않습니다.

☑️ [Unreal Engine 버전을 소스에서 빌드하세요](https://dev.epicgames.com/documentation/en-us/unreal-engine/building-unreal-engine-from-source) 개발 머신에서,

* 설치하세요 [특정 릴리스 브랜치(예: ](https://github.com/EpicGames/UnrealEngine/tree/5.5)[`5.5`](https://github.com/EpicGames/UnrealEngine/tree/5.5)[)](https://github.com/EpicGames/UnrealEngine/tree/5.5) 안정적인 기반 위에서 빌드하려면,
* **솔리드 스테이트 드라이브(SSD)를 사용하세요** 빌드 속도를 높이기 위해(\~12시간 이상에서 \~2시간 이상으로),
* 이는 처음 한 번만 필요하며, Unreal Engine 버전을 업그레이드할 때마다 필요합니다.

{% hint style="warning" %}
**git 클라이언트로 브랜치를 다운로드하세요!** GitHub UI를 사용하면 항상 불안정한 `릴리스` 브랜치가 다운로드됩니다.
{% endhint %}

☑️ [Unreal 크로스 컴파일 도구 체인 설치](https://dev.epicgames.com/documentation/en-us/unreal-engine/linux-development-requirements-for-unreal-engine) Linux용 게임 서버를 빌드하기 위해.

☑️ **개발 머신을 다시 시작하세요**, 그렇지 않으면 나중에 오류가 발생합니다!

☑️ **Unreal Engine 버전 호환성 검사 비활성화** 전용 서버용 및 **설정 `IpNetDriver` 기본 드라이버 또는 대체 드라이버로** 복제 네트워킹용:

{% hint style="warning" %}
확인하세요 **입력하십시오 `DefaultServerTarget`  이 스니펫 끝에**!
{% endhint %}

<pre data-title="Config/DefaultEngine.ini"><code><a data-footnote-ref href="#user-content-fn-1">[ConsoleVariables]</a>
net.IgnoreNetworkChecksumMismatch=1
net.CurrentHandshakeVersion=2
net.MinHandshakeVersion=2
net.VerifyNetSessionID=0
net.VerifyNetClientID=0

<a data-footnote-ref href="#user-content-fn-2">[/Script/Engine.GameEngine]</a>
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

<a data-footnote-ref href="#user-content-fn-3">[/Script/OnlineSubsystemUtils.IpNetDriver]</a>
MaxClientRate=1000000000
MaxInternetClientRate=1000000000
InitialConnectTimeout=120.0
MaxNetTickRate=60
NetServerMaxTickRate=60

<a data-footnote-ref href="#user-content-fn-4">[/Script/BuildSettings.BuildSettings]</a>
DefaultServerTarget=LyraServer
</code></pre>

☑️ **Unreal Engine 재시작** 최신 변경 사항을 다시 불러오려면.

☑️ **전용 서버 타겟 스크립트 생성** 다음을 복사하여 `<PROJECT>Editor.Target.cs` 프로젝트 루트 폴더의 파일을 복사하고 복사본의 이름을 `<PROJECT>Server.Target.cs`.

☑️ **다음에 대한 참조를 바꾸세요** 단어 **`Editor`** **로** **`Server`** 서버 타겟 스크립트에서.

☑️ **서버 빌드 기본값 수정** 서버 타겟 스크립트를 편집하여:

<pre data-title="Source/<PROJECT>Server.Target.cs"><code>bOverrideBuildEnvironment = true;
<a data-footnote-ref href="#user-content-fn-5">bUseLoggingInShipping = true;</a>
<a data-footnote-ref href="#user-content-fn-6">bUseChecksInShipping = false;</a>
<a data-footnote-ref href="#user-content-fn-7">bBuildWithEditorOnlyData = false;</a>
<a data-footnote-ref href="#user-content-fn-8">bUsesSlate = false;</a>
<a data-footnote-ref href="#user-content-fn-9">bCompileCEF3 = false;</a>
</code></pre>

✅ 이제 다음 단계로 진행할 수 있습니다.

<details>

<summary>선택 사항: 스팀 통합</summary>

다음으로 **스팀 통합**사용하려면 `IpNetDriver` 를 기본 네트 드라이버로 설정하고 다음을 확인하세요 [리눅스용 64비트 steamclient.so](https://developer.valvesoftware.com/wiki/SteamCMD#Ubuntu) 파일이 이미지의 경로에 복사되어 있는지 `/home/ubuntu/.steam/sdk64/` .

{% hint style="success" %}
추가 `steamclient.so`  리눅스 라이브러리를 우리의 단일 클릭으로 [도커 확장 기능을 사용해](/docs.edgegap.com-ko/unreal-engine.md).
{% endhint %}

<a href="https://github.com/edgegap/edgegap-unreal-buildutils/raw/refs/heads/main/steamclient.so" class="button secondary" data-icon="square-down">steamclient.so 다운로드</a>

<pre class="language-docker" data-title="Dockerfile"><code class="lang-docker">...
<a data-footnote-ref href="#user-content-fn-10">RUN mkdir -p /home/ubuntu/.steam/sdk64</a>
<a data-footnote-ref href="#user-content-fn-11">COPY ./steamclient.so /home/ubuntu/.steam/sdk64/steamclient.so</a>
<a data-footnote-ref href="#user-content-fn-12">RUN chmod 755 /home/ubuntu/.steam/sdk64/steamclient.so</a>
...
</code></pre>

{% hint style="warning" %}
**스팀 릴레이를 통해 패킷을 전송하여 연결 문제나 지연 급증을 일으킬 수 있으므로 스팀 네트워킹을 비활성화했는지 확인하세요.** 이는 리더보드, 업적, 음성 기능 또는 스팀 스토어에 게임을 게시하는 등 다른 Steamworks 기능 사용을 막지 않습니다.
{% endhint %}

<pre data-title="Config/DefaultEngine.ini"><code>[OnlineSubsystemSteam]
bUseSteamNetworking=false
bAllowP2PPacketRelay=false
<a data-footnote-ref href="#user-content-fn-13">SteamDevAppId=480</a>
<a data-footnote-ref href="#user-content-fn-13">SteamAppId=480</a>
</code></pre>

</details>

### 2. 빌드 및 게시 <a href="#plugin-build-and-upload-to-edgegap" id="plugin-build-and-upload-to-edgegap"></a>

개발자 팀과 함께 작업하면 코드를 공유해야 합니다. 문제가 발생했을 때 듣고 싶은 마지막 말은 “내 환경에서는 잘 돼”일 것입니다. 게임 서버는 전 세계 수천 대의 서버 머신에서 안정적으로 실행되어야 합니다.

서버를 안정적으로 만들기 위해 Docker를 사용합니다 - 운영 체제 수준까지 서버 코드의 모든 종속성이 어디서 어떻게 서버가 시작되든 항상 정확히 동일하도록 보장하는 가상화 소프트웨어입니다.

{% hint style="info" %}
시청을 권장합니다 ["로컬에 설치하지 마세요" (비디오)](https://www.youtube.com/watch?v=J0NuOlA2xDc\&ab_channel=Coderized). **Docker를 사용할 때 Dockerhub를 사용할 필요는 없습니다**Docker ≠ Dockerhub. Docker를 프로그래밍 엔진으로 보고 Dockerhub를 앱 스토어로 생각하세요.
{% endhint %}

☑️ **Docker가 설치되어 실행 중인지 확인하세요.**

☑️ [저희 플러그인을 다시 빌드하세요](https://dev.epicgames.com/community/learning/tutorials/qz93/unreal-engine-building-plugins) 소스에서 빌드한 사용자 지정 Unreal Engine 버전에 맞게.

☑️ **컴파일된 플러그인을 복사하세요** 다음으로 `Plugins` 폴더 **Unreal 프로젝트의 루트에 있는** (엔진이 아닙니다).

☑️ **새 Unreal Engine을 실행하세요** Visual Studio에서 실행하고 **툴바 항목 Edit / Plugins를 여세요**.

☑️ **플러그인을 활성화하세요** 섹션에서 **INSTALLED / Other**.

☑️ **플러그인을 구성하세요** 툴바 항목을 열어 **Edit / Project Settings / Edgegap**:

{% hint style="warning" %}
입력 값을 편집한 후에는 항상 Enter 키를 눌러 **올바르게 저장되도록 하세요**.
{% endhint %}

* **API 토큰** 은 Edgegap에 서버를 업로드하는 데 필요하며, Get Token을 클릭하여 받을 수 있습니다.
* **애플리케이션 이름** Edgegap의 항목 이름은 프로젝트 이름과 같게 하거나 사용자 지정할 수 있으며, 소문자, 숫자 또는 대시 문자만 사용해야 합니다 `-` 그리고 밑줄 `_`.
* **이미지 경로** 는 Edgegap에서 게임 서버용 사용자 지정 아이콘을 선택적으로 제공합니다. 지금은 건너뛰세요.
* **버전 이름** 은 클라이언트/서버 호환성을 추적하고 문제가 있을 때 롤백하는 데 유용합니다.
  * 타임스탬프는 앱 버전 이름으로 훌륭한 선택입니다. 예: `2024.01.30-16.50.20-UTC` .
  * 여러 애플리케이션 버전이 동일한 이미지 태그를 가리킬 수 있습니다. 예: `v1.1.0` 및 `dev` .
  * 자세히 알아보기 [앱 및 버전](/docs.edgegap.com-ko/learn/orchestration/application-and-versions.md) 는 나중에.

{% hint style="warning" %}
**다음을 재사용하지 마세요 `최신` 버전** 시스템이 오래된(캐시된) 이미지를 배포하지 않도록 하기 위해.
{% endhint %}

☑️ 클릭하세요 **애플리케이션 생성.** 이 단계를 완료하면 다음이 생성됩니다 **새 애플리케이션이 표시됩니다** 에서 [Edgegap 대시보드](https://app.edgegap.com/application-management/applications/list).

☑️ 지금은 사용자 지정 컨테이너 레지스트리 설정을 건너뛰세요. 나중에 원하시면 타사 레지스트리를 사용할 수 있습니다.

☑️ 구성이 마음에 들면 **빌드 및 푸시**, 프로세스가 끝날 때까지 기다린 후 Unreal 콘솔에 새로운 오류가 없는지 확인하세요. 이 단계를 완료하면 다음이 생성됩니다 **프로젝트 루트에 새 폴더가 생성됩니다** - `Saved/LinuxServer`. 또한 **새 이미지가 이제 다음에 표시됩니다** [저장소 아래의 Edgegap Container Registry 대시보드 페이지](https://app.edgegap.com/registry-management/repositories/list), 그리고 새 [앱 및 버전](/docs.edgegap.com-ko/learn/orchestration/application-and-versions.md#app-versions) **다음에 표시됩니다** [애플리케이션 아래의 대시보드](https://app.edgegap.com/application-management/applications/list)**.**

☑️ 새 애플리케이션 버전에서 환경 변수 `TARGET_FILE_NAME`  을 다음과 일치하도록 설정하세요 `DefaultServerTarget`  이전 단계의 값 [#id-2.-configure-game-server-builds-1](#id-2.-configure-game-server-builds-1 "mention").

✅ 이제 다음 단계로 진행할 수 있습니다.

<details>

<summary>문제 해결 및 FAQ</summary>

`오류: Build 함수를 실행하지 못했습니다: Dockerfile은 비어 있을 수 없습니다`

* 일부 플러그인 소스가 누락되었을 수 있습니다 `Dockerfile` 및/또는 `StartServer.sh` , GitHub의 플러그인 소스 버전에서 이 파일들의 복사본을 로컬 플러그인으로 가져오세요.

***

`open //./pipe/dockerDesktopLinuxEngine: 시스템에서 지정된 파일을 찾을 수 없습니다.`

* 개발 머신에서 Docker가 실행 중인지 확인하세요.

***

`잘못된 참조 형식 EdgegapLog: 경고: OnContainerizeCallback: 컨테이너를 생성할 수 없습니다. 메시지: 실패`

* 애플리케이션 이름이 설정되어 있고 끝에 공백이 포함되어 있지 않은지 확인하세요.
* 편집을 마쳤을 때 Enter 키를 눌러 입력 값을 확인하세요.

***

[**프로젝트를 빌드할 때 대상 'ProjectName'에 대한 대상 규칙 파일을 찾을 수 없습니까?**](https://forums.unrealengine.com/t/how-may-i-resolve-an-error-couldnt-find-target-rules-file-for-target-projectname-when-building-a-project/411707)

* 다음에서 빌드 구성을 변경하세요 `XYZServerTarget.cs` 파일:

```
BuildConfig = EProjectPackagingBuildConfigurations::PPBC_Shipping;
```

***

`403 금지됨, 컨테이너를 푸시할 수 없습니다. 메시지: 실패`

* Docker 자격 증명이 올바르게 설정되어 있는지 확인하세요.
* Edgegap Container Registry를 사용하는 경우, 사용자 이름에 `app-version-pull` 이 포함되지 않도록 하세요. 이는 이미지를 가져오기만 허용하는 프로필입니다. 대신 프로필은 계정 이메일과 비슷해야 합니다.
* 계정의 [Container Registry](https://app.edgegap.com/registry-management/repositories/list)에 충분한 여유 공간이 있는지 확인하세요. 다음을 시도해 보는 것을 권장합니다. [#optimize-server-build-size](#optimize-server-build-size "mention"), 그리고 [오래된 이미지를 삭제하기 위해 API를 사용하는 것](https://docs.edgegap.com/api/#tag/Container-Registry/operation/image-tag-delete). 이미지는 삭제될 때까지 백업용으로 로컬 머신에 저장됩니다.

</details>

## 👉 다음 단계

다음으로 계속 [/pages/668d9a45536aae414ecc0912e502137bf709764c#id-5.-deploy-to-cloud](https://docs.edgegap.com/docs.edgegap.com-ko/unreal-engine/pages/668d9a45536aae414ecc0912e502137bf709764c#id-5.-deploy-to-cloud "mention") 저희의 [대시보드 배포](https://app.edgegap.com/deployment-management/deployments/list) 기능을 사용하고 배포 중지, 주입된 변수와 매개변수화, 서버 검색 가능성에 대해 더 알아보세요.

[^1]: 호환성 검사 비활성화

[^2]: IpNetDriver 사용

[^3]: 클라이언트/서버 틱 속도 및 타임아웃 설정

[^4]: 서버 빌드를 기본 대상(target)으로 설정

[^5]: 로그 활성화

[^6]: 검사 사용 안 함

[^7]: 에디터 콘텐츠 패키징하지 않음

[^8]: Slate UI(에디터) 패키징하지 않음

[^9]: CEF3(에디터) 컴파일하지 않음

[^10]: 상위 디렉터리 생성

[^11]: steamclient.so 파일 복사

[^12]: steam 클라이언트 실행 허용

[^13]: 스팀 퍼블리셔 포털에서 찾기
