For the complete documentation index, see llms.txt. This page is also available as Markdown.

고도 - 시작하기

직접 해보며 배우고 Edgegap에 첫 전용 서버를 배포하세요. 이 가이드가 끝날 때쯤에는 비용 없이 Edgegap에 전용 서버를 배포하게 됩니다.

✔️ 준비

시작하기 전에, 반드시 Edgegap에서 무료 계정을 생성하세요 (신용카드 정보는 필요하지 않습니다). 다음을 할 수 있습니다 그 후 팀원을 초대할 수 있습니다, 아직 Edgegap 계정이 없어도 됩니다.

개발 환경에서 몇 가지 필수 항목을 구성하세요:

Docker Desktop(또는 Docker CLI) 설치
Edgegap의 Godot 전용 서버 퀵스타트 플러그인 설치

이 플러그인은 Godot 4.3.x 이상 버전에서 테스트되었으며 지원합니다.

옵션 1) 에셋 스토어에서 설치:

  1. Godot 에디터에서 프로젝트를 여세요.

  2. 에셋 스토어 탭을 열고 "edgegap"을 검색하세요.

  3. "Game Server Hosting for Godot"을 선택하고 다운로드하세요.

플러그인을 업데이트하려면 Project / Project Settings / Plugins / Edit로 가서 Update를 선택하세요.

옵션 2) 소스에서 설치:

  1. 프로젝트의 addons 폴더.

git으로 설치한 플러그인을 업데이트하려면 플러그인 폴더에서 명령줄을 열고 다음을 실행하세요 git pull.

Project / Project Settings / Plugins에서 새 Edgegap Servers Quickstart 플러그인을 활성화하세요. 오른쪽 패널의 Inspector 옆에 "Edgegap"라는 새 탭이 나타납니다. 나중에 패널을 닫았다가 다시 열어야 하면 Project / Tools / Edgegap에서 해당 옵션을 찾을 수 있습니다.

⚙️ 1. 계정 연결

☑️ 로그인하고 Output에 Edgegap 플러그인과 관련된 새로운 오류가 없는지 확인하세요.

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

🔧 2. 게임 서버 빌드

Windows, Mac, 또는 Linux 컴퓨터를 사용하든, 서버를 Linux 런타임용으로 빌드해야 합니다, 왜냐하면 요즘 대부분의 클라우드 제공업체(Edgegap 포함)가 Linux에서 실행되기 때문입니다. 걱정하지 마세요, 이 플러그인을 사용하면 Linux 지식 없이도 이 작업을 수행할 수 있습니다.

☑️ 플러그인이 Linux 서버 템플릿을 올바르게 설정했는지 확인하려면 Export Templates를 검증하세요.

고급 사용자 - 선택적으로 사용자 지정 내보내기 템플릿. 주의! 이로 인해 빌드가 깨질 수 있습니다.

☑️ 프로젝트에 새 부트스트랩 스크립트를 추가하여 전용 서버로 자동 실행되도록 하세요. 메인 씬 아래에 새 노드를 만들고, Inspector / Script / Load에서 새 스크립트를 연결하세요.

이것은 프로젝트의 요구에 맞게 확장할 수 있는 최소 템플릿 스크립트입니다.

다음용 부트스트랩 스크립트의 사용자 지정 버전입니다 netfox forest brawl 샘플.

☑️ 설정이 만족스럽다면 다음을 누르세요 서버 빌드, 프로세스가 완료될 때까지 기다린 후 Output에 새로운 오류가 없는지 확인하세요. 이 단계를 완료하면 다음이 생성됩니다 프로젝트의 다음 폴더 아래에 새 빌드가 나타납니다 build.

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

🐋 3. 서버를 컨테이너화

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

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

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

☑️ 먼저 다음을 눌러 시작하세요 Docker 검증 버튼을 눌러 다음이 완료되었는지 확인하세요 Godot.

Docker Desktop(또는 Docker CLI) 설치

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

  • 이미지 이름 이는 배포 전에 서버 빌드를 표시하는, 원하는 고유 식별자입니다.

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

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

    • “빌드 아티팩트”라는 용어는 때때로 이미지의 특정 버전을 가리키는 데 사용됩니다.

    • 타임스탬프는 태그에 좋은 기본 옵션입니다. 예: 2026.07.30-16.25.00-UTC .

  • Dockerfile 경로 이미지 생성 레시피를 사용자 지정하는 데 사용할 수 있습니다.

    • 지금은 기본 설정을 유지하는 것을 권장합니다. 나중에 다음 섹션에서 자세히 읽을 수 있습니다 Godot.

  • 선택적 Docker 빌드 매개변수 Docker에 더 세부적인 지시를 내리는 데 사용할 수 있습니다.

소스에서 다시 빌드 자동으로 빌드하고 컨테이너화하여 다음 빌드 속도를 높이기 위해.

☑️ 설정이 만족스럽다면 다음을 누르세요 Docker로 컨테이너화, 프로세스가 완료될 때까지 기다린 후 Output에 새로운 오류가 없는지 확인하세요. 이 단계를 완료하면 다음이 생성됩니다 로컬 머신에 새 이미지가 나타납니다. Docker Desktop의 Local(기본값) 아래 Images 탭에서 확인하거나, docker CLI에서 다음을 실행하여 확인할 수 있습니다 docker images .

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

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

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

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

  • 서버 이미지 태그 이전 단계에서.

    • 플러그인으로 마지막에 빌드한 태그가 기본값입니다.

    • ☁️ 이미지 이름 앞에 표시되면 이 이미지가 업로드되었음을 나타냅니다.

  • 선택적 Docker 실행 매개변수 여러 포트를 노출하거나 macOS 머신에서 이미지를 실행할 때 사용할 수 있습니다.

    • 필요한 경우 컨테이너에 여러 포트를 게시할 수 있으며, 다음 매개변수를 추가하기만 하면 됩니다 -p {internal port}/{protocol} 각각에 대해, 예를 들면 -p 8080/tcp -p 7777/udp 서버 포트를 게시하고 매핑하기 위해 8080 TCP 연결을 위한 임의의 외부 포트와 서버 포트로 7777 동시에 UDP 연결을 위한 임의의 외부 포트로 부트스트랩 스크립트에서 서버 포트 설정을 찾으세요.

    • ARM 아키텍처 머신(macOS M1, M2, M3 등)을 사용 중이라면 선택적 Docker 빌드 매개변수에 이 선택적 매개변수가 포함된 것을 볼 수 있습니다: --platform=linux/amd64 .

☑️ 설정이 만족스럽다면 다음을 누르세요 로컬 컨테이너 배포, 프로세스가 완료될 때까지 기다린 후 Output에 새로운 오류가 없는지 확인하세요. 이 단계를 완료하면 다음이 생성됩니다 새 컨테이너가 시작됩니다 개발 머신에서.

자세한 내용은 Docker Desktop / Containers 또는 Docker CLI 명령을 참조하세요 docker ps .

☑️ 이제 다음 단계입니다 Godot 에디터 게임 클라이언트를 로컬 Docker 컨테이너에 연결하여 서버 이미지가 제대로 동작하는지 확인하세요. 클라이언트 연결 정보를 찾아 다음을 입력하세요:

  • localhost 또는 0.0.0.0 (대부분의 경우 동일함)을 서버 IP 대신 사용하고,

  • Docker Desktop / Containers에서 찾을 수 있는 임의의 외부 포트 값을 사용하세요.

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

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

☁️ 5. Edgegap에 업로드

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

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

  • 애플리케이션 이름 Edgegap에서 이미지 이름과 일치시킬 수도 있고 사용자 지정할 수도 있습니다.

    • 지금은 이미지 이름을 복사하도록 선택했습니다.

  • 애플리케이션 버전 Edgegap에서 태그와 일치시킬 수도 있고 사용자 지정할 수도 있습니다.

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

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

    • 다음에 대해 자세히 알아보기 앱 및 버전 나중에.

  • 서버 이미지 단계에서 Godot.

☑️ 설정이 만족스럽다면 다음을 누르세요 이미지를 업로드하고 앱 버전 만들기, 프로세스가 완료될 때까지 기다린 후 Output에 새로운 오류가 없는지 확인하세요.

☑️ 다음으로 이동하게 됩니다 대시보드, 여기서 선택적 설정을 구성할 수 있습니다. 이 단계를 완료하면 다음이 생성됩니다 새 애플리케이션 버전이 생성됩니다, 그리고 빌드 아티팩트에 태그가 지정되어 Edgegap의 컨테이너 레지스트리에 업로드됩니다.

  • 애플리케이션 버전 Edgegap에서 태그와 일치시킬 수도 있고 사용자 지정할 수도 있습니다.

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

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

    • 다음에 대해 자세히 알아보기 앱 및 버전 나중에.

☑️ 이제 새 애플리케이션 버전에 대한 포트를 정의하라는 메시지가 표시됩니다. 다음 단계와 동일한 서버 포트 값을 설정하세요 Godot (기본값은 7777).

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

🚀 6. 클라우드에 배포

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

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

☑️ 준비가 되면, 누르세요 클라우드에 배포, 도달할 때까지 기다리세요 배포. 이 단계를 완료하면 결과적으로 새 배포가 시작됩니다 귀하의 Edgegap 계정에서.

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

☑️ 이제 최종 테스트를 수행하고 Godot 에디터 게임 클라이언트를 클라우드 배포에 연결합니다. 다음 정보를 가져오세요 배포의 호스트 를 서버 IP 대신 사용하고 배포의 외부 포트, 이를 클라이언트 연결 정보에 구성하고 플레이하세요.

Edgegap 클라우드에서 배포의 외부 포트는 임의로 선택되어 잠재적 공격자(해커)가 피해를 일으키기 전에 속도가 느려지고 탐지되도록 합니다.

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

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

👉 다음 단계

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

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

도움이 필요하시면 디스코드를 통해 문의해 주세요. 실시간 게임 지원은 저희의 티켓 시스템.

배포 중지

경기가 끝나면(또는 플레이어가 떠나면) 비용 절감을 위해 배포를 중지할 수 있습니다. 비어 있거나 일부만 채워진 상태로 운영하면 비용이 불필요하게 증가할 수 있습니다!

주입된 변수

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

세션 자동화

다음 중 하나를 사용해 세션 관리 및 필요에 따른 확장을 위한 인기 게임 흐름을 자동화하세요:

매치메이킹:

  • 짧은 라운드

  • 온디맨드 매치

  • 실력 등급 및/또는 사용자 지정 규칙

서버 브라우저:

  • 지속형 또는 라운드

  • 소셜 지역 허브

  • 자동 할당 및/또는 사용자 지정 검색

사용자 지정 백엔드:

사용량 최적화

서버 사용량 최적화를 시작하기 위한 몇 가지 팁:

틱 레이트가 높을수록 업데이트가 더 많아지고, 더 많은 CPU 사용량과 데이터 송신이 필요합니다.

  • Godot의 기본값은 초당 60틱이며, 빠른 속도의 슈팅 게임이나 지연 시간에 매우 민감한 게임에 잘 맞습니다. 다른 장르에서는 30Hz 또는 15Hz로도 충분할 수 있습니다.

  • 틱 레이트가 높을 때의 숨은 비용은 데이터를 (언)패킹하고 서버 권한 속성 및 절차를 다시 계산하는 데 더 많은 CPU 사이클(초당)이 든다는 점입니다. 한 경기당 플레이어가 많거나(10명 이상), 콜라이더가 있는 노드가 많거나, 물리 시뮬레이션이 복잡하거나, 봇 적/아군이 많다면 신중해야 합니다.

  • netcode 설정에서 서로 다른 틱 레이트로 게임 반응성을 테스트하세요. ENET의 경우 Project Settings / Physics / Common / Physics Ticks Per Second를 참고하세요.

올바른 네트워킹 프로토콜을 어떻게 선택할까요? 먼저 동작하게 하고, 그다음 더 좋게 만드세요.

  • Godot에 내장된 ENET의 기본 UDP 프로토콜은 가장 다양한 기기와 사용 사례에서 성능과 호환성을 제공하는 훌륭한 기본 선택입니다.

  • 일부 게임은 TCP, WS, WebRTC 또는 다른 프로토콜을 실험해보고 싶을 수 있습니다. 이는 모바일 기기와 콘솔, 특히 공용 네트워크(셀룰러, 회사, PC방, 호텔 와이파이 등...)에서 연결 안정성을 개선할 수 있지만, 분명 추가 개발 노력이 필요합니다. 이것이 타깃 사용자에게 꼭 필요한지 스스로에게 물어보세요.

  • 중요한 업데이트가 우선적으로 전달되도록 여러 프로토콜을 병행하면 일부 장르(예: MMO)에서 플레이어 경험을 개선할 수 있지만, 추가 개발 노력이 많이 들고 프로젝트의 복잡성을 크게 높일 수 있습니다.

  • 싸움을 신중하게 고르세요. 게임 개발에는 도전 과제가 넘쳐납니다.

이미지 사용자 지정

빌드 크기 최적화, 불필요한 종속성 제거, 또는 더 복잡한 시작 프로세스가 필요해 이미지에 대해 더 많은 제어가 필요한 사용자를 위해 자체 Dockerfile 추가도 지원합니다. 다음 단계에서 사용자 지정 Dockerfile 경로를 선택적으로 제공할 수 있습니다 Godot. 이제 몇 가지 ‘직접 해보기’ 팁과 모범 사례를 공유하겠습니다.

항상 정상적으로 동작하는 서버 빌드를 사용하고 있는지 확인하세요.

  • 문제가 커스텀 Dockerfile과 관련된 것이라고 단정하기 전에, 서버 빌드가 정상적으로 시작될 수 있는지와 게임 엔진의 빌드 과정에서 예외나 오류가 발생하지 않았는지 확인하세요.

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

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

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

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

  • FROM {image} 는 기본 이미지입니다. 보통 장기 지원되는 Linux를 사용하지만, Linux 기반 기본 이미지라면 어떤 것이든 괜찮습니다. 보통 Docker Hub에 저장된 공개 이미지입니다. Dockerfile 참고는 여기입니다. Dockerfile 참고는 여기.

  • COPY {source} {destination} 호스트 머신의 Linux 서버 빌드를 이미지 안으로 복사하여 나중에 시작할 수 있게 합니다. Dockerfile 참고는 여기.

  • USER {user} 다음 뒤에 와야 합니다 useradd(우분투) 명령 또는 이에 상응하는 명령 뒤에 와야 하며, 모든 것을 root 로 실행하지 않는 것이 가장 좋습니다. Dockerfile 참고는 여기.

  • CMD {command} 가 마지막 줄이 되며, 대부분 다음을 호출합니다: StartServer.sh 또는 서버가 모든 설정 완료 후 올바르게 초기화되도록 하는 어떤 종류의 시작 스크립트입니다. Dockerfile 참고는 여기.

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

  • EXPOSE 7777/UDP 는 필요하지 않습니다! 이것은 실제로 컨테이너 외부에서 내부 서버 포트를 사용할 수 있게 만드는 것이 아니라, 개발자를 위한 힌트일 뿐이며 포트는

    • 다음과 함께 로컬에서 테스트할 때 공개되어야 합니다 docker run <image> -p 7777/udp ,

    • 또는 다음에 매핑되어야 합니다 Edgegap 포트 매핑.

매개변수 선언은 가능한 가장 늦은 시점까지 미루세요. 서버 빌드 시간이 길기 때문에 구성 가능성 > 조합 가능성입니다. 이 접근 방식을 Dockerfile 명령에 적용하면 빌드와 업로드를 더 빠르게 할 수 있습니다.

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

  • 나쁜 해결책: 매개변수 조합마다 별도의 이미지를 만드는 것입니다. 이 접근 방식으로 얻는 이점은 거의 없는데, 이미지를 다시 빌드하는 데 모든 시간을 쓰게 됩니다.

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

    1. 배포 매개변수 - 배포 직전에 제공됨 - 환경 변수로 전달되는 매치메이킹 선택자, 또는 배포 시점에 환경 변수를 전달하는 사용자 정의 세션 관리 시스템,

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

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

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

  • Edgegap 배포는 장시간 실행되는 프로세스를 위한 것이 아니며, 장시간 실행된 후 사전 통지 없이 종료될 수 있습니다. 이런 방식으로 실행되는 데이터베이스(분산형이라도)는 종료될 수 있으며, 돌이킬 수 없는 데이터 손실로 이어질 수 있습니다. 데이터베이스가 필요하다면 타사 DBaaS를 고려해 주세요.

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

마지막 업데이트

도움이 되었나요?