추가 빌드 방법

이러한 접근 방식은 일반적으로 더 느리고 언리얼 엔진에 대한 더 깊은 이해를 필요로 합니다.

더 고급 언리얼 엔진 및 Edgegap 사용자를 위한 대체 빌드 방법을 살펴보세요:

  1. 추가 빌드 방법 는 지속적 통합(Continuous Integration)에 적합한 빠르고 자동화된 방법입니다.

  2. ⚡ 플러그인으로 빌드하기 는 언리얼 엔진을 소스에서 빌드해야 하는 이전(legacy) 빌드 방법입니다.

⚡ 스크립트로 빌드하기

스크립트로 빌드하는 것은 빠르고 완전 자동화되었으며 지속적 통합에 적합한 쉬운 방법입니다.

준비

시작하기 전에 반드시 Edgegap에 무료 계정 생성 (신용카드 불필요).

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

Docker Desktop(또는 Docker CLI)를 설치하세요
GitHub에서 언리얼 엔진 리소스에 접근하기
GitHub 개인 액세스 토큰(클래식) 생성
  • 권한만 활성화 [read:packages] ,

  • 토큰 생성 - 이 값을 안전하게 보관하세요. 다시는 볼 수 없습니다.

1. 프로젝트 구성

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

☑️ 언리얼 엔진 버전 호환성 검사 비활성화 전용 서버 및 설정 IpNetDriver 기본 드라이버 또는 대체 드라이버로 복제 네트워킹용:

☑️ 언리얼 엔진 재시작 최신 변경사항을 다시 로드하려면.

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

☑️ 에 대한 모든 참조를 바꾸세요 단어 Editor 다음과 함께: 서버 서버 타깃 스크립트에서.

☑️ 표준 출력 서버 로그 활성화 서버 타깃 스크립트에 오버라이드를 추가하여:

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

선택 사항: Steam 통합

하기 위해 Steam 통합‚ 사용 IpNetDriver 을(를) 기본 네트 드라이버로 사용하고 다음을 확인하십시오 Linux용 64비트 steamclient.so 가 이미지의 경로에 복사되어 있습니다 /home/ubuntu/.steam/sdk64/ .

steamclient.so 다운로드

Dockerfile
...
RUN mkdir -p /home/ubuntu/.steam/sdk64
COPY ./steamclient.so /home/ubuntu/.steam/sdk64/steamclient.so
RUN chmod 755 /home/ubuntu/.steam/sdk64/steamclient.so
...

반드시 Steam 네트워킹 비활성화‚ 이는 패킷을 Steam 릴레이를 통해 전송하여 연결 문제나 지연 급증을 유발할 수 있습니다. 이것은 다른 Steamworks 기능을 사용하거나 게임을 Steam 스토어에 게시하는 것을 막지 않습니다.

Config/DefaultEngine.ini
[OnlineSubsystemSteam]
bUseSteamNetworking=false

2. 빌드 및 배포

🐋 3. 서버 컨테이너화

여러 개발자로 구성된 팀에서 작업한다는 것은 코드를 공유한다는 뜻입니다. 문제가 발생했을 때 가장 듣기 싫은 말은 “내 컴퓨터에서는 작동해”입니다. 게임 서버는 전 세계 수천 대의 서버 머신에서 실행되기 때문에 어느 머신에서든 안정적으로 실행되어야 합니다.

다음 시청을 권장합니다 "로컬에 절대 설치하지 마세요" (비디오). Docker와 함께 Dockerhub를 사용할 필요가 없습니다. Docker ≠ Dockerhub. Docker를 프로그래밍 엔진으로, Dockerhub를 앱 스토어로 생각하세요.

☑️ Docker가 설치되어 실행 중인지 확인하십시오.

☑️ 저희 Edgegap Build Utils 를 다운로드하세요 아카이브에는 다음이 포함되어 있습니다:

  • 플랫폼별 빌드 스크립트:

    • BuildAndUpload.ps1 윈도우용,

    • BuildAndUpload.sh macOS 및 리눅스용,

  • Dockerfile - 도커 이미지 빌드 레시피,

  • dockerignore - 제거할 비필수 파일 목록으로 빌드를 빠르게 만듭니다,

  • StartServer.sh - 런타임에서 언리얼 엔진 수명주기를 관리하는 유틸리티 스크립트입니다.

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

☑️ 다음 스크립트를 편집하세요 BuildAndUpload 플랫폼용 스크립트 다음 항목들을 구성하려면:

  • 리눅스 서버용으로 사전 빌드된 언리얼 엔진 이미지를 가져오기 위해 사용되는 깃허브 자격증명,

  • 프로젝트 세부정보 - 엔진 버전, 서버 구성, .uproject 파일 이름,

  • Edgegap 레지스트리 완성된 빌드를 업로드하는 데 사용되는 자격증명.

☑️ 편집한 스크립트를 실행하세요 빌드 및 업로드 프로세스를 시작하려면. 이 단계를 완료하면 새 이미지가 귀하의 Edgegap 컨테이너 레지스트리 대시보드의 저장소 페이지에 추가됩니다.

☑️ 자동으로 리디렉션됩니다 새로 만들기 앱 및 버전 에서 대시보드.

✅ 이제 다음 단계로 진행하거나 추가 빌드 방법.

문제 해결 및 FAQ

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

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


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

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


유효하지 않은 참조 형식 EdgegapLog: 경고: OnContainerizeCallback: 컨테이너를 생성할 수 없음, 메시지: 실패

  • 애플리케이션 이름이 설정되어 있고 끝에 공백이 포함되어 있지 않은지 확인하세요.

  • 편집을 완료한 후 입력 값을 확인하려면 Enter 키를 누르세요.


프로젝트를 빌드할 때 대상 'ProjectName'에 대한 대상 규칙 파일을 찾을 수 없었나요?

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

BuildConfig = EProjectPackagingBuildConfigurations::PPBC_Shipping;

403 금지됨, 컨테이너를 푸시할 수 없음, 메시지: 실패

  • 도커 자격 증명이 올바르게 설정되어 있는지 확인하세요.

  • Edgegap Container Registry를 사용하는 경우 사용자 이름에 다음이 포함되어 있지 않은지 확인하세요 app-version-pull , 이는 이미지 풀만 허용하는 프로필입니다. 대신 프로필은 계정 이메일과 유사해야 합니다.

  • 계정의 저장 공간에 충분한 여유 공간이 있는지 확인하세요 컨테이너 레지스트리. 다음을 시도해 볼 것을 권장합니다 추가 빌드 방법, 및 다음을 사용: 오래된 이미지를 삭제하기 위한 당사의 API. 이미지는 백업을 위해 삭제될 때까지 로컬 머신에 저장됩니다.

⚡ 플러그인으로 빌드하기

저희의 이전 플러그인은 고급 유틸리티를 포함하고 있으며 언리얼 엔진을 소스에서 빌드해야 합니다.

준비

시작하기 전에 반드시 Edgegap에 무료 계정 생성 (신용카드 불필요).

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

Docker Desktop(또는 Docker CLI)를 설치하세요
GitHub에서 언리얼 엔진 리소스에 접근하기
개발 환경 구성
공식 Edgegap 언리얼 엔진 플러그인 설치

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

1. 프로젝트 구성

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

☑️ 개발 머신에서 소스에서 귀하의 언리얼 엔진 버전을 빌드하십시오 귀하의 개발 머신에서,

  • 설치 특정 릴리스 브랜치(예: 5.5) 안정된 기반에서 빌드하려면,

  • 솔리드 스테이트 드라이브(SSD)를 사용하세요 빌드 속도를 높이기 위해 (약 12시간 이상에서 약 2시간 이상으로 단축),

  • 이는 처음 빌드하거나 언리얼 엔진 버전을 업그레이드할 때마다만 필요합니다.

☑️ 언리얼 크로스 컴파일 툴체인 설치 리눅스용 게임 서버를 빌드하기 위해.

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

☑️ 언리얼 엔진 버전 호환성 검사 비활성화 전용 서버 및 설정 IpNetDriver 기본 드라이버 또는 대체 드라이버로 복제 네트워킹용:

☑️ 언리얼 엔진 재시작 최신 변경사항을 다시 로드하려면.

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

☑️ 에 대한 모든 참조를 바꾸세요 단어 Editor 다음과 함께: 서버 서버 타깃 스크립트에서.

☑️ 표준 출력 서버 로그 활성화 서버 타깃 스크립트에 오버라이드를 추가하여:

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

선택 사항: Steam 통합

하기 위해 Steam 통합‚ 사용 IpNetDriver 을(를) 기본 네트 드라이버로 사용하고 다음을 확인하십시오 Linux용 64비트 steamclient.so 가 이미지의 경로에 복사되어 있습니다 /home/ubuntu/.steam/sdk64/ .

steamclient.so 다운로드

Dockerfile
...
RUN mkdir -p /home/ubuntu/.steam/sdk64
COPY ./steamclient.so /home/ubuntu/.steam/sdk64/steamclient.so
RUN chmod 755 /home/ubuntu/.steam/sdk64/steamclient.so
...

반드시 Steam 네트워킹 비활성화‚ 이는 패킷을 Steam 릴레이를 통해 전송하여 연결 문제나 지연 급증을 유발할 수 있습니다. 이것은 다른 Steamworks 기능을 사용하거나 게임을 Steam 스토어에 게시하는 것을 막지 않습니다.

Config/DefaultEngine.ini
[OnlineSubsystemSteam]
bUseSteamNetworking=false

2. 빌드 및 배포

🐋 3. 서버 컨테이너화

여러 개발자로 구성된 팀에서 작업한다는 것은 코드를 공유한다는 뜻입니다. 문제가 발생했을 때 가장 듣기 싫은 말은 “내 컴퓨터에서는 작동해”입니다. 게임 서버는 전 세계 수천 대의 서버 머신에서 실행되기 때문에 어느 머신에서든 안정적으로 실행되어야 합니다.

다음 시청을 권장합니다 "로컬에 절대 설치하지 마세요" (비디오). Docker와 함께 Dockerhub를 사용할 필요가 없습니다. Docker ≠ Dockerhub. Docker를 프로그래밍 엔진으로, Dockerhub를 앱 스토어로 생각하세요.

☑️ Docker가 설치되어 실행 중인지 확인하십시오.

☑️ 플러그인 재빌드 소스에서 빌드한 귀하의 맞춤형 언리얼 엔진 버전용으로.

☑️ 컴파일된 플러그인을 복사하세요 다음으로 Plugins 폴더로 언리얼 프로젝트의 루트 안에 (엔진이 아닌).

☑️ 새 언리얼 엔진을 실행하세요 비주얼 스튜디오에서 그리고 툴바 항목 Edit / Plugins 를 열고.

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

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

  • API 토큰 은 서버를 Edgegap에 업로드하는 데 필요합니다. 토큰을 얻으려면 Get Token을 클릭하세요.

  • 애플리케이션 이름 Edgegap의 이름은 프로젝트 이름과 일치시키거나 사용자 정의할 수 있습니다. 소문자, 숫자, 대시(-) 또는 밑줄(_) 문자만 사용하세요. - 그리고 언더스코어 _.

  • 이미지 경로 은 선택적으로 Edgegap에서 게임 서버의 사용자 지정 아이콘을 제공하며, 지금은 건너뛰어도 됩니다.

  • 버전 이름 은 클라이언트/서버 호환성을 추적하고 문제가 발생했을 때 롤백하는 데 유용합니다.

    • 타임스탬프는 앱 버전 이름으로 좋은 옵션입니다. 예: 2024.01.30-16.50.20-UTC .

    • 여러 애플리케이션 버전이 동일한 이미지 태그를 가리킬 수 있습니다. 예: v1.1.0 그리고 dev .

    • 나중에 자세히 알아보세요. 앱 및 버전 나중에.

☑️ 클릭하세요 애플리케이션 생성. 이 단계를 완료하면 새 애플리케이션이 나타납니다 에서 Edgegap 대시보드.

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

☑️ 구성에 만족하면 클릭하세요 Build and Push, 프로세스가 완료될 때까지 기다리고 언리얼 콘솔에 새로운 오류가 없는지 확인하세요. 이 단계를 완료하면 프로젝트 루트에 새 폴더가 생성됩니다 - Saved/LinuxServer. 또한, 새 이미지가 이제 귀하의 Edgegap 컨테이너 레지스트리 대시보드의 저장소 아래에 표시되며그리고 새 앱 및 버전 가 귀하의 대시보드의 애플리케이션 아래에 표시됩니다.

☑️ 새 애플리케이션 버전에서 환경 변수 TARGET_FILE_NAME 을(를) 설정하여 DefaultServerTarget 값이 단계의 값과 일치하도록 하세요 추가 빌드 방법.

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

문제 해결 및 FAQ

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

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


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

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


유효하지 않은 참조 형식 EdgegapLog: 경고: OnContainerizeCallback: 컨테이너를 생성할 수 없음, 메시지: 실패

  • 애플리케이션 이름이 설정되어 있고 끝에 공백이 포함되어 있지 않은지 확인하세요.

  • 편집을 완료한 후 입력 값을 확인하려면 Enter 키를 누르세요.


프로젝트를 빌드할 때 대상 'ProjectName'에 대한 대상 규칙 파일을 찾을 수 없었나요?

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

BuildConfig = EProjectPackagingBuildConfigurations::PPBC_Shipping;

403 금지됨, 컨테이너를 푸시할 수 없음, 메시지: 실패

  • 도커 자격 증명이 올바르게 설정되어 있는지 확인하세요.

  • Edgegap Container Registry를 사용하는 경우 사용자 이름에 다음이 포함되어 있지 않은지 확인하세요 app-version-pull , 이는 이미지 풀만 허용하는 프로필입니다. 대신 프로필은 계정 이메일과 유사해야 합니다.

  • 계정의 저장 공간에 충분한 여유 공간이 있는지 확인하세요 컨테이너 레지스트리. 다음을 시도해 볼 것을 권장합니다 추가 빌드 방법, 및 다음을 사용: 오래된 이미지를 삭제하기 위한 당사의 API. 이미지는 백업을 위해 삭제될 때까지 로컬 머신에 저장됩니다.

👉 다음 단계

계속하기 언리얼 엔진 저희의 대시보드 배포 기능으로 이동하여 배포 중지, 주입된 변수 및 매개화, 서버 검색 가능성에 대해 자세히 알아보세요.

Last updated

Was this helpful?