제미니 답변:

 

고도 엔진(Godot Engine)의 서버(Server) 아키텍처는 엔진의 성능을 지탱하는 가장 핵심적인 기반입니다. 우리가 흔히 쓰는 '노드(Node)'는 사실 내부적으로 이 서버들에게 명령을 내리는 '사용자 인터페이스'에 불과합니다.

전체 서버들의 역할과 관계를 체계적으로 정리해 드립니다.


1. 핵심 인프라 서버 (Core Infrastructure)

이 서버들은 게임의 시각적, 물리적, 소리적 요소를 실질적으로 처리합니다.

  • RenderingServer: 모든 2D 및 3D 그래픽 출력을 담당합니다. 메쉬, 라이트, 머티리얼을 GPU로 보내 화면을 그립니다.
  • PhysicsServer2D / PhysicsServer3D: 물리 연산(충돌 감지, 중력, 마찰 등)을 담당합니다. 노드 없이 수천 개의 물리 객체를 시뮬레이션할 때 필수적입니다.
  • AudioServer: 소리의 믹싱, 재생, 효과(Bus) 관리를 담당합니다. 실시간 오디오 스트림 분석이나 이펙트 처리에 쓰입니다.

2. 인터페이스 및 환경 서버 (Interface & Environment)

사용자의 입력이나 운영체제(OS)와의 소통을 관리합니다.

  • DisplayServer: 게임 창(Window), 마우스 커서, 클립보드, 화면 해상도 등 OS 수준의 디스플레이 요소를 제어합니다. (Godot 4에서 OS 클래스의 기능 중 화면 관련 기능이 이리로 분리되었습니다.)
  • InputServer: 키보드, 마우스, 조이패드 등 모든 입력 장치의 신호를 수집하고 관리합니다.
  • XRServer: VR(가상 현실) 및 AR(증강 현실) 기기의 트래킹과 렌더링 동기화를 담당합니다.

3. 유틸리티 및 특수 기능 서버 (Utility & Specialized)

특정 고급 기능을 수행하기 위해 존재합니다.

  • NavigationServer2D / NavigationServer3D: 길 찾기(A* 알고리즘 등), 내비게이션 메쉬 관리, 장애물 회피(RVO)를 처리합니다.
  • TextServer: 폰트 렌더링, 다국어 텍스트 레이아웃, 복잡한 문자 체계(아랍어 등)를 처리합니다. UI 시스템의 근간이 됩니다.
  • CameraServer: 웹캠이나 외부 카메라 입력을 관리합니다.

🏗️ 고도 엔진의 계층 구조 (Architecture)

고도 엔진은 아래와 같은 수직적 구조를 가집니다. 위로 갈수록 사용하기 쉽고, 아래로 갈수록 제어력이 높고 빠릅니다.

  1. Scene Tree (Nodes): Sprite2D, MeshInstance3D 등. 사용자가 가장 많이 다루는 영역입니다.
  2. Servers: 노드로부터 요청을 받아 RID(Resource ID) 단위로 데이터를 처리합니다.
  3. OS / DisplayServer Layer: 실제 하드웨어 및 운영체제와 통신합니다.

💡 왜 'Server'라는 명칭을 쓸까?

고도 엔진에서 서버는 **"요청을 처리하는 독립적인 일꾼"**이라는 의미입니다.

  • 객체 지향이 아님: 서버는 클래스 인스턴스를 수천 개 만드는 대신, 단순한 ID(RID)로 데이터를 관리하여 메모리 오버헤드를 줄입니다.
  • 병렬성: 서버들은 메인 스레드와 별개의 스레드에서 돌아갈 수 있도록 설계되어, 멀티코어 프로세서를 효율적으로 활용합니다.

📝 한눈에 보는 요약표

서버 이름 주요 역할 노드 없이 쓰는 이유
Rendering 그래픽 출력 수만 개의 오브젝트를 고속 렌더링
Physics 충돌 및 물리 대규모 군집 시뮬레이션 최적화
Audio 소리 재생 및 믹싱 복잡한 실시간 오디오 효과 제어
Navigation 경로 탐색 수백 개의 유닛 실시간 길 찾기
Display 창 및 화면 관리 멀티 윈도우 및 OS 레벨 설정
Text 글자 처리 커스텀 텍스트 렌더링 엔진 구현

고도 엔진의 중급자로 넘어가기 위해서는 이 서버들을 직접 제어하는 법을 익히는 것이 큰 도움이 됩니다. 

+ Recent posts