언리얼 엔진

직접 해 보며 배우고 Edgegap에서 첫 전용 서버를 배포하세요. 이 가이드를 마치면 비용 없이 Edgegap으로 전용 서버를 배포하게 됩니다.

Docker Desktop으로 빌드하는 것이 시작하기에 가장 빠르고 쉽고 신뢰할 수 있는 방법입니다.

✔️ 준비

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

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

Docker Desktop(또는 Docker CLI)를 설치하세요
Edgegap 퀵스타트 Docker 확장 설치
  • Docker Desktop / Extensions / Browse에서 설치하거나 링크 사용.

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

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

서버 빌드에 자신 있나요? 건너뛰기 언리얼 엔진고급 기능.

⚙️ 1. 프로젝트 구성

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

이 방법은 Unreal 소스 코드를 다운로드하거나, Unreal Engine을 소스에서 빌드할 필요가 없습니다!

☑️ 다음으로 시작 Unreal Engine 버전 확인 - 프로젝트 파일의 값으로 미리 채워짐.

☑️ GitHub 사용자명 입력 및 PAT 출처 언리얼 엔진에서, GitHub의 종속성을 다운로드하기 위해.

GitHub 개인 액세스 토큰(클래식) 생성
  • 권한만 활성화 [read:packages] ,

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

☑️ 언리얼 엔진 버전 호환성 검사 비활성화 전용 서버 및 설정 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를 앱 스토어로 생각하세요.

☑️ 다음 옵션을 구성할 수 있습니다(또는 기본값 유지):

  • 이미지 이름 은(는) 선적 전에 서버 빌드를 라벨링하기 위해 선택하는 고유 식별자입니다.

    • 보통 게임 이름을 포함합니다. 예: “my-game-server”.

  • 이미지 태그 는 이미지의 특정 버전을 가리키는 식별자입니다.

    • “빌드 아티팩트”라는 용어를 이미지의 특정 버전을 지칭하는 데 사용할 때도 있습니다.

    • 태그 지정에는 타임스탬프가 좋은 선택입니다. 예: 2024.01.30-16.23.00-UTC (기본값).

☑️ 프로젝트 빌드 구성이 만족스러우면 실행하세요. 이 단계를 완료하면 로컬 Docker 클라이언트에 리눅스 게임 서버 실행 파일이 포함된 새 이미지가 추가됩니다.

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

🧪 3. 로컬에서 서버 테스트

서버 이미지를 업로드하고 배포하기(시간이 좀 걸릴 수 있음) 전에, 로컬(사용자 컴퓨터)에서 배포하고 게임 클라이언트를 연결해 서버 이미지가 제대로 작동하는지 확인해 보겠습니다.

☑️ 로컬로 실행할 이미지 태그를 선택하세요 (원격 이미지는 다운로드됨). 선택적으로, 추가 docker run 인수 를 제공하여 로컬 테스트를 사용자 정의할 수 있습니다:

  • -p 7777:7777/udp - 이는 로컬 컨테이너의 포트 매핑,

  • -e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777환경 변수 로, 실제 Edgegap 배포를 모사하여 게임 서버에 플레이어 연결을 수신할 내부 포트를 알려줍니다.

☑️ 구성이 만족스러우면 로컬 서버 시작을(를) 누르세요. 이 단계를 완료하면 새 컨테이너가 시작됨 이(가) 개발 머신에서 실행됩니다.

☑️ 이제 Unreal Engine Editor(PIE) 게임 클라이언트를 로컬 서버 컨테이너에 연결할 시간입니다. 틸드 ~ (~)로 Unreal PIE 콘솔을 열고 다음으로 연결하세요 open <ip>:<port>:

  • ip = localhost 또는 127.0.0.1 (대부분의 경우 동일),

  • port = Docker GUI에서 컨테이너의 무작위 외부 포트 값.

☑️ 로컬 서버 컨테이너에 연결하여 문제없이 플레이할 수 있는 것을 확인한 후에는 기기의 다른 프로그램을 위해 리소스를 확보하기 위해 컨테이너를 삭제할 수 있습니다 🗑️.

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

문제 해결 및 FAQ

클라이언트를 서버에 연결할 수 없음 - 요청 시간이 초과되었습니다. , 요청 시간 초과 , ConnectionFailed , 또는 포트 확인 실패

  • 먼저 컨테이너가 실행 중인지, 로그에 런타임 오류가 없는지 확인하세요.

  • 다음에서 포트 값이 docker run 명령과 일치하는지 확인하세요.

  • 게임 클라이언트가 외부 포트 로 연결하는지 컨테이너 상세 페이지에서 확인하세요. 보안상의 이유로 이 값은 항상 무작위로 지정됩니다.

  • 대상 파일의 이름을 변경하고 단계에 설명된 대로 게임 빌드를 구성했는지 확인하세요 언리얼 엔진.


컨테이너는 켜졌지만 그 후 몇 분 동안 연결할 수 없습니다.

  • 컨테이너가 켜지면 게임 엔진 초기화가 시작됩니다. 이 과정은 몇 초에서 몇 분까지 걸릴 수 있으며, 이 기간 동안 서버는 플레이어 연결을 허용하지 않습니다.

  • 이 시간을 줄이기 위해 서버 초기화를 최적화하는 것을 고려하세요.

  • 게임 클라이언트는 제한된 시간 동안(초기화 시간에 따라) 1초 간격으로 재시도를 수행하고, 이후에는 매치메이킹으로 되돌아가야 합니다.

  • 진행 중인 게임에 플레이어가 합류할 수 있도록 로딩 장면을 추가하여, 서버가 초기화(그리고 Unreal Engine의 경우 트래블)를 클라이언트와 동시에 수행하면서 양쪽 상태를 동기화하도록 고려하세요.


경고: 바인드 주소에 대한 소켓을 생성할 수 없습니다

  • Fab 에셋 스토어를 통해 Epic의 Steam Subsystem 플러그인을 설치하세요.

  • GitHub에서 다운로드한 SteamCore Integration Kit(SIK) 소스 버전과 Edgegap Integration Kit(EGIK)를 함께 사용할 때, Epic Games 플러그인 배포 정책으로 인해 Epic의 Steam Subsystem 플러그인은 포함되지 않습니다.


연결되었지만 화면이 완전히 어둡습니다.

  • 올바른 Game Default Map 이(가) 다음에 설정되어 있는지 확인하세요 Edit / Project Settings / Maps & Modes.

☁️ 4. Edgegap에 게시

서버를 온라인에 배포할 시간입니다! 이제 이미지가 플레이어를 성공적으로 호스팅할 수 있으므로 이를 Edgegap에 업로드하고 전 세계 어디서나 실행할 수 있습니다. 이 가이드에서는 Edgegap의 컨테이너 레지스트리 (이미지 저장소).

☑️ 애플리케이션 이름 선택 하여 Edgegap에서 유사한 이미지를 라벨링하고 그룹화하세요.

☑️ 게시할 이미지 태그를 선택하고이미지 업로드를 클릭하세요. 이 단계를 완료하면 서버 이미지가 Edgegap 레지스트리에 업로드되고 새로운 애플리케이션 버전이 생성됨 이(가) 웹 브라우저에 표시됩니다. 프롬프트가 표시되면 반드시 포트 매핑 를 생성하고, 기본값으로.

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

문제 해결 및 FAQ

거부됨: 756.6 MiB의 스토리지 리소스를 추가하면 현재 사용량 4.3 GiB로 업데이트될 때 구성된 상한 4.7 GiB를 초과합니다 , 참조 "layer-sha256:--------"에 대한 커밋 실패: https://registry.edgegap.com/로의 PUT 요청에서 예상치 못한 상태가 반환되었습니다

  • 이미지 스토리지 공간이 다음에서 부족한 것 같습니다 컨테이너 레지스트리입니다. 사용하지 않는 빌드 아티팩트(있는 경우)를 제거하거나 서버 빌드 크기를 최적화하는 것을 고려하세요. 사용자 지정 Dockerfile 또는 .dockerignore를 사용하는 경우 필요하지 않은 파일을 이미지에 복사하고 있을 수 있습니다.


애플리케이션 한도 2개에 도달했습니다 , 도커 태그/버전을 업데이트할 수 없습니다: 애플리케이션 버전 한도 2개에 도달했습니다

  • 무료 요금제 한도에 도달했습니다. 계정 업그레이드를 고려해 주세요. 또는 기존 리소스를 통해 제거할 수 있습니다 대시보드.


플러그인/확장에 새 애플리케이션 버전이 나열되어 있지 않습니다.

  • 마지막 단계에서 앱 버전 생성 양식을 작성했는지 확인하세요.

🚀 5. 클라우드에 배포

이 안내서의 마지막 단계입니다. 이 단계를 완료하면 전 세계 어디에서나 플레이어가 접속할 수 있는 Edgegap 클라우드에 서버가 배포됩니다.

☑️ 애플리케이션과 버전을 선택하세요 이전 단계에서 배포합니다.

☑️ 준비가 되면, 을(를) 누르세요 클라우드에 배포, 도달할 때까지 기다리세요 배포를 누르세요. 이 단계를 완료하면 새 배포가 시작됨 귀하의 Edgegap 계정에.

☑️ 콘솔 출력에 새로운 오류가 없는지 확인하세요. 또한 귀하의 배포 오류가 표시되지 않는지 및 귀하의 배포 자원(가상 CPU 또는 메모리)이 100% 사용 중으로 표시되지 않는지 확인하세요. 그렇지 않으면 새 플레이어 연결이 거부되거나 서버가 재시작 루프에 빠질 수 있습니다. 문제 해결 단계는 아래를 참조하세요.

☑️ 이제 최종 테스트를 수행하고 Unreal Engine Editor를 클라우드 배포에 연결하겠습니다. 다음을 가져오세요 배포의 호스트 를 서버 IP 대신 사용하고 배포의 외부 포트, 게임 클라이언트에서 Unreal 콘솔을 열고(틸드 ~) 다음을 입력하세요 open {host}:{port} .

Edgegap 클라우드에 배포되는 리소스의 외부 포트는 잠재적 공격자(해커)를 지연시키고 피해를 일으키기 전에 탐지할 수 있도록 무작위로 선택됩니다.

☑️ 배포에 문제 없이 연결할 수 있는지 확인하고 테스트가 완료되면, 배포 중지 다음 빌드를 위해 계정의 용량을 확보하려면.

🙌 Edgegap에서의 첫 배포를 축하합니다! 더 알아보고 싶다면 계속 읽어보세요.

문제 해결 및 FAQ

클라이언트를 서버에 연결할 수 없음 - 요청 시간이 초과되었습니다. , 요청 시간 초과 , ConnectionFailed , 또는 포트 확인 실패

  • 먼저 배포가 Ready 상태인지, 배포 로그에 런타임 예외나 오류가 없는지 확인하세요. 배포가 중지되었다면, 다음에서 로그를 확인하세요 대시보드.

  • 서버 빌드의 네트코드 설정의 포트 설정이 다음의 내부 포트와 일치하는지 확인하세요 앱 버전에서. 플러그인 빌드의 경우 포트는 자동으로 설정됩니다. 다음을 편집하여 포트 매핑을 변경할 수 있습니다 앱 버전 재빌드 없이. 네트코드 통합에서 프로토콜을 찾으세요.

  • 게임 클라이언트가 외부 포트 배포 상세 페이지에 표시되는 외부 포트이며, 보안상의 이유로 이 값은 항상 무작위로 지정됩니다.

  • 대상 파일의 이름을 변경하고 단계에 설명된 대로 게임 빌드를 구성했는지 확인하세요 언리얼 엔진.

  • 중국에 거주하며 Smart Fleets를 사용 중이신가요? 연결이 만리방화벽에 의해 차단될 수 있습니다. 중국에 위치한 서버를 플릿에 추가하거나 VPN을 사용하여 연결하는 것을 고려하세요.


배포가 준비되었지만 그 후 몇 분 동안 연결할 수 없습니다.

  • 배포가 Ready 상태가 되면 게임 엔진 초기화가 시작됩니다. 이 과정은 몇 초에서 몇 분까지 걸릴 수 있으며, 이 기간 동안 서버는 플레이어 연결을 허용하지 않습니다.

  • 이 시간을 줄이기 위해 서버 초기화를 최적화하는 것을 고려하세요.

  • 게임 클라이언트는 제한된 시간 동안(초기화 시간에 따라) 1초 간격으로 재시도를 수행하고, 이후에는 매치메이킹으로 되돌아가야 합니다.

  • 진행 중인 게임에 플레이어가 합류할 수 있도록 로딩 장면을 추가하여, 서버가 초기화(그리고 Unreal Engine의 경우 트래블)를 클라이언트와 동시에 수행하면서 양쪽 상태를 동기화하도록 고려하세요.


경고: 바인드 주소에 대한 소켓을 생성할 수 없습니다

  • Fab 에셋 스토어를 통해 Epic의 Steam Subsystem 플러그인을 설치하세요.

  • GitHub에서 다운로드한 SteamCore Integration Kit(SIK) 소스 버전과 Edgegap Integration Kit(EGIK)를 함께 사용할 때, Epic Games 플러그인 배포 정책으로 인해 Epic의 Steam Subsystem 플러그인은 포함되지 않습니다.


연결되었지만 화면이 완전히 어둡습니다.


배포가 중지/재시작되어 더 이상 로그에 접근할 수 없습니다.

  • 서버 프로세스가 예외로 인해 크래시할 경우, 시스템이 서버를 자동으로 재시작하려고 시도합니다. 근본 원인을 파악하기 위해 로컬에서 서버를 테스트해 보세요.

  • 우리는 배포 기간 동안의 로그만 보관합니다. 배포 중지 후 로그를 확인하고 싶다면, 서드파티 로그 스토리지를 통합하세요.

  • 참고 배포 배포가 중지되는 모든 원인을 확인하세요.


배포가 X분 후 자동으로 중지되었습니다.

  • Free 티어 배포에는 60분 제한이 있으므로, 계정 업그레이드를 고려하세요.

  • 모든 배포는 서버 위생 정책, 인프라 유지 보수, 그리고 배포가 제대로 종료되지 않았을 때 예상치 못한 비용 증가를 방지하기 위해 실행 24시간 후 종료됩니다. 장기 실행 서버의 경우 다음 사용을 고려하세요 Smart Fleets.

  • 참고 배포 배포가 중지되는 모든 원인을 확인하세요.


플레이어가 내 배포를 떠나면 어떻게 되나요?

  • 기본적으로 서버는 플레이어 연결을 거부하지 않습니다. 플레이어 인증은 다양한 방법과 인증 공급자를 사용할 수 있으므로, 귀하의 개발팀에 달려 있습니다.

  • 게임 클라이언트는 예기치 않은 클라이언트 크래시 시 재연결을 시도할 수 있도록 연결 정보를 로컬에 저장할 수 있습니다.

  • 진행 중인 게임에 플레이어가 합류할 수 있도록 하려면 다음 사용을 고려하세요 심층 분석 또는 세션.


서버가 준비 완료 후 CPU 사용률이 100%로 표시됩니다.

  • 이는 문제가 아닐 수 있습니다. 게임 엔진은 서버 초기화 동안 CPU 집약적 작업을 수행하는 경향이 있습니다. 배포 시작 후 2~3분이 지나도 CPU 사용률이 떨어지지 않으면 서버를 최적화하거나 앱 버전 리소스를 늘려야 할 수 있습니다.

  • 틱 레이트를 줄이면 메시지 처리량이 줄어 CPU 사용률을 제어하는 데 도움이 됩니다.

  • Free 티어에서는 1.5 vCPU와 3GB 메모리(RAM)로 제한됩니다.

  • 새 앱 버전을 생성할 때 할당된 리소스를 늘릴 수 있습니다. 대시보드에서 앱 버전을 복제하고 서버나 이미지를 재빌드하지 않고도 필요한 값으로 조정할 수 있습니다.


배포가 반복해서 재시작되며 다음 오류를 표시합니다 OOM kill

  • 이는 할당된 메모리 양을 초과했기 때문에 발생합니다. 오브젝트 풀링, 압축, 장면에서 불필요한 오브젝트 제거 등으로 메모리 사용 최적화를 고려하세요.

  • Free 티어에서는 1.5 vCPU와 3GB 메모리(RAM)로 제한됩니다.

  • 새 앱 버전을 생성할 때 할당된 리소스를 늘릴 수 있습니다. 대시보드에서 앱 버전을 복제하고 서버나 이미지를 재빌드하지 않고도 필요한 값으로 조정할 수 있습니다.


가끔 서버의 메모리(RAM) 사용량이 급증하는데, 문제가 되나요?

  • 할당된 앱 버전 메모리 양 내에 머문다면 문제가 아닙니다.

  • 할당된 앱 버전 메모리 양을 초과하면 OOM kill (위 참조).


같은 머신에서 실행 중인 다른 서버 때문에 내 서버 성능이 영향을 받나요?

  • 아니요, 우리 플랫폼은 할당된 리소스가 다른 스튜디오나 공유 인프라의 다른 서버에 의해 사용되지 않도록 보장합니다. Edgegap에서는 시끄러운 이웃이 없습니다.

👉 다음 단계

클라이언트/서버 설정이 제대로 작동하면, 반드시 프로젝트의 복사본을 저장하세요 (git과 같은 버전 관리 소프트웨어를 사용) 문제가 발생했을 때 항상 이전 작업을 추적할 수 있도록.

서버 수명 주기 및 검색 가능성과 관련된 주제에 대해 더 알아보려면 계속 읽어보세요.

배포 중지

다양한 방법으로 배포를 중지하는 법 을(를) 알아보세요. 매치가 끝나고 플레이어가 떠난 후에 적용합니다. 배포 로그를 가져오려면 반드시 엔드포인트 저장소 를 연결하세요. 그렇지 않으면 로그는 삭제됩니다!

주입된 변수

배포 ID, 서버 IP 주소, 서버 위치 등 유용한 정보를 주입된 환경 변수를 통해 읽을 수 있습니다. 각 배포에는 자동으로 다음이 포함됩니다:

현재 인스턴스가 게임 클라이언트인지 서버인지 확인 Edgegap 변수가 설정되었는지 확인하여:

서버 프로파일링

Edgegap에서 서버 성능 문제를 이해하고 최적화하려면 다음을 살펴보세요 배포, 배포및 더 많은 배포 사용 가능한 도구.

또한 Edgegap과 함께 기존 Unreal Engine 프로파일링 도구를 사용할 수 있습니다:

매치메이킹

배포를 수동으로 시작하고 URL과 포트를 붙여넣는 방식은 라이브 게임에 적합하지 않습니다.

서버 빌드 최적화

클라이언트 전용 에셋을 서버 에셋과 분리하기 위해 에셋 청킹을 구성하세요.

클라이언트 전용이고 서버 실행에 필요하지 않은 에셋과 플러그인을 제외하세요.

콘텐츠 쿠킹 전략을 검토하세요.

  • 다음을 고려 Cooking on the Fly(COTF) 하여 클라이언트 에셋 쿠킹을 지연하고 서버 빌드를 가속하세요.

런타임 메모리 부하를 줄이기 위해 레벨 스트리밍을 구현하세요.

서버가 실행되는 데 절대적으로 필요한 것만 포함하세요.

예시 .dockerignore 추가 파일을 제거하기 위한 파일.

다음 사용을 고려하세요 멀티 스테이지 Docker 빌드(링크).

  • 큰 서버 종속성은 별도 이미지로 분리하여 멀티 스테이지 빌드에서 재사용하세요. Docker는 각 레이어를 캐시하고, 특별히 지시하지 않는 한 이전 버전을 재사용하여 이 부분 업로드를 건너뛰므로, 업로드 대기 시간과 대역폭을 절약합니다.

  • Dockerfile 명령 중 하나가 왜 오류를 던지는지 확실하지 않다면 로컬에서 디버깅해 보세요. 문제가 발생하기 바로 전 단계에 새 스테이지를 만들고(두 번째 FROM 명령 추가), --target 로 빌드 프로세스가 문제의 스테이지에서 멈추도록 지시한 다음, docker exec -it {container} /bin/bash 로 컨테이너 내부의 대화형 터미널에 들어가세요. 이후에는 베이스 이미지의 셸 명령을 사용하여 더 조사할 수 있습니다(예: top on ubuntu).

서버 이미지 사용자 지정

빌드 크기 최적화, 불필요한 종속성, 더 복잡한 시작 프로세스가 필요한 사용자들을 위해 자체 Dockerfile 추가도 지원합니다. 이제 직접 해보기 팁과 모범 사례 몇 가지를 공유합니다.

항상 작동하는 서버 빌드로 작업하고 있는지 확인하세요.

  • 문제가 사용자 지정 Dockerfile과 관련되어 있다고 가정하기 전에 Unity 서버 빌드를 시작할 수 있는지, Unity에서 빌드 과정 중 예외나 오류가 발생하지 않았는지 확인하세요.

업로드하기 전에 항상 로컬에서 테스트하세요.

  • 로컬에서 이미지를 테스트하면 업로드가 완료될 때까지 기다리느라 많은 시간을 절약할 수 있습니다. 또한 Edgegap 리소스를 요구하지 않기 때문에 완전히 무료입니다 ✨.

  • 로컬에서 테스트할 때 내부 포트를 올바르게 설정했는지 확인하세요:

기본 사항을 숙지했는지 확인하세요. 모든 Dockerfile에는 몇 가지 필수 명령이 필요합니다:

  • FROM {image} 은(는) 베이스 이미지입니다. Unity 프로젝트의 경우 일반적으로 장기 지원되는 Linux를 사용하지만, 어떤 Linux 기반 베이스 이미지라도 괜찮습니다. 이들은 보통 dockerhub에 저장된 공개 이미지입니다. Dockerfile 참고 자료는 여기에 있습니다. Dockerfile 참고 자료는 여기에 있습니다.

  • COPY {source} {destination} 는(은) 호스트 머신의 Linux 서버 빌드를 이미지 내부로 복사하여 나중에 시작할 수 있도록 합니다. Dockerfile 참고 자료는 여기에 있습니다.

  • USER {user} 은(는) 다음에 와야 합니다 useradd (ubuntu) 명령 또는 동등한 명령, 모든 것을 root 로 실행하지 않는 것이 더 안전합니다. Dockerfile 참고 자료는 여기에 있습니다.

  • CMD {command} 는(은) 마지막 줄이 되며, 대부분 StartServer.sh 같은 시작 스크립트를 호출하여 모든 설정이 완료된 후 서버가 올바르게 초기화되도록 합니다. Dockerfile 참고 자료는 여기에 있습니다.

  • 절대 사용하지 마세요 VOLUME - 이 방법으로는 Edgegap에서 로컬 스토리지를 마운트할 수 없습니다. 대신 Endpoint Storage 기능과 S3 버킷 사용을 고려하세요. 참고: Endpoint Storage,

  • EXPOSE 7777/UDP 는(은) 필수 조건이 아닙니다! 이것은 내부 서버 포트를 컨테이너 외부에서 실제로 사용 가능하게 만들지 않으며, 개발자를 위한 힌트일 뿐입니다. 포트는

    • 로컬에서 테스트할 때 docker run <image> -p 7777/udp ,

    • 로 퍼블리시되거나 Edgegap 포트 매핑.

매개변수 선언은 가능한 한 늦은 시점까지 연기하세요. 서버 빌드 시간이 긴 경우 구성 가능성(configurability)이 조합 가능성(composability)보다 더 중요합니다. 이 접근법을 Dockerfile 명령에 적용하면 더 빠르게 빌드하고 업로드할 수 있습니다.

  • 시나리오: 배포 단계, 버전, 게임 모드, 맵, 서버당 플레이어 수, 백업 빈도 등과 같은 매개변수를 정의해야 합니다.

  • 나쁜 해결책: 매개변수의 모든 조합마다 별도의 이미지를 만드는 것. 이 접근법은 거의 이득이 없으면서 이미지를 재빌드하는 데 모든 시간을 낭비하게 됩니다.

  • 더 나은 해결책 - 구성 매개변수를 적시에 대체하세요:

    1. 배포 매개변수 - 배포 직전에 제공되는 값 - 환경 변수로 전달되는 매치메이킹 셀렉터 또는 배포 시점에 환경 변수를 전달하는 맞춤 세션 관리 시스템 등,

    2. 버전 매개변수 - 앱 버전의 모든 배포에 공유되는 값 - 배포 단계, 아티팩트 태그, 타사 비밀 및 엔드포인트 등; 그런 다음

    3. 단일 이미지 - 모든 구성 옵션을 포함하고 실행 시 로드합니다.

Edgegap 배포에서 데이터베이스를 실행하지 마세요.

  • Edgegap 배포는 장시간 실행되는 프로세스를 위해 설계되지 않았으며, 장시간 실행 후 사전 통지 없이 종료될 수 있습니다. 이러한 방식으로 실행되는 데이터베이스(분산형이라 하더라도)는 종료되어 되돌릴 수 없는 데이터 손실을 초래할 수 있습니다. 데이터베이스가 필요하다면 타사 DBaaS 사용을 고려하세요.

  • 다음 사용을 고려하세요 Managed Clusters 데이터베이스와 장기 실행 서비스를 호스팅하기 위해.

Last updated

Was this helpful?