반응형

퍼포스에서 UE3 코드 베이스 싱크를 마치고나면 퍼포스 디포 루트 폴더에 UnrealEngine3 라는 디렉토리가 생길 것입니다.

"UnrealEngine3" 폴더 안에는 다음 디렉토리가 있습니다:

  • Binaries - 이 파일에는 바이너리 오브젝트가 담깁니다. 엔진/게임의 컴파일된 버전, UE3 필수 DLL (DirectX, wx 런타임 등), 에디터 리소스 파일 (아이콘 이미지) 등입니다.
  • Development - 엔진의 모든 소스가 실제로 들어가는 곳으로, 이 폴더 안에는:
    • Build - 저희 CIS(연속 통합 서버) 상에서 여러가지 유형의 빌드를 발송하는 배치 파일을 저장하는 곳입니다. CIS 는 빌드를 검사하여 저희가 빌드 에러를 가급적 빠르게 잡아낼 수 있도록 해 줍니다.
    • Documentation - 문서 파일 저장용 폴더입니다. 저희의 자동 생성 윈도우 도움말 파일(UnrealEngine3.chm)이 여기 저장됩니다. 이 도움말 파일은 언리얼 소스를 빠르게 돌아보는 데 큰 도움이 되는 자료입니다.
    • External - 모든 에픽 외부 라이브러리 소스는 이 폴더에 저장됩니다. libPNG, wxWidgets, zlib, Cg 등입니다.
    • Intermediate - 모든 중간 빌드 파일은 여기 저장됩니다. .obj 파일, 미리컴파일된 헤더 등입니다.
    • Src - 소스 파일과 프로젝트 메이크파일용 폴더입니다. 주요 UnrealEngine3 솔루션은 이 폴더에 있습니다. 솔루션 안에는 각 프로젝트에 대한 폴더 역시 있습니다. 예제 프로젝트는 다음과 같이 나뉘어 있습니다:
      • Game 폴더
        • 프로젝트의 루트 폴더 안에는 프로젝트의 비주얼 스튜디오 프로젝트 파일이 있습니다.
        • Classes - .uc (UnrealScript) 파일을 담는 폴더입니다.
        • Inc - .h 파일을 담는 폴더입니다.
        • Src - .cpp 파일을 담는 폴더입니다.
    • Tools - 다양한 엔진 관련 툴에 대한 소스가 모두 저장된 폴더입니다. UDE 비주얼 스튜디오 매크로나 명령줄 툴같은 것들입니다.
  • Engine/Game 폴더 - Binaries 와 Development 폴더 다음에는 Engine 에 대한 폴더가, 그 이후 엔진을 사용하는 각 게임에 대한 폴더가 하나씩 있습니다.
    • Config - 해당 게임에 사용된 세팅을 저장하는 데 사용된 .ini 파일을 담습니다.
    • Content - 해당 게임용 콘텐츠 패키지를 담는 폴더입니다.
    • Localization - 해당 게임용 현지화 텍스트를 담는 폴더입니다.
    • Logs - 해당 게임 실행시 생성되는 로그 파일을 담는 폴더입니다.
    • Script - 해당 게임에 대한 컴파일된 UnrealScript 코드(.u 파일)를 담습니다.

프로젝트 구조


UE3 는 여러 프로젝트로 나뉘는데, 시스템을 분리하고 크로스-플랫폼 호환성을 쉽게 유지할 수 있도록 하기 위해서입니다.

기본 구조는 (최하위 레벨 코드에서 최상위 레벨까지) 다음과 같습니다:

  • Core
  • Engine
  • Editor
  • UnrealED

참고로 이 프로젝트 모두는 서로의 위에 빌드됩니다. 즉 Engine 은 Core 에 의존, Editor 는 Engine 에 의존, UnrealED 는 Editor 에 의존합니다.

  • Core: Core 는 최하위 레벨 클래스로, 문자열 클래스, 배열 클래스, 메모리 매니저와 같은 것들입니다. 말 그대로 핵심 스크립팅 및 로딩 코드가 있는 곳입니다.

  • Engine: Engine 은 대부분의 렌더링과 게임플레이 코드가 있는 곳입니다. 액터, 충돌 감지는 물론 여러가지 서브시스템에 관련된 코드도 포함되어 있습니다. 대부분의 '게임 인터페이스' 코드가 있는 곳입니다.

  • Editor: Editor 는 에디터가 실행중일 때만 실행되는 클래스와 루틴으로 구성됩니다. 사용자가 폴리곤, 브러시, 터레인을 조작 및 보통 게임내에서는 할 수 없는 다른 작업을 할 수 있도록 해 주는 클래스입니다.

  • UnrealED: UnrealED 는 에디터의 실제 UI 구현으로, 에디터 어플리케이션 코드 전부가 있는 곳입니다. 현재 저희가 선택한 UI 툴키트는 wxWindgets 입니다. 작성할 필요가 있는 wxWidgets 코드는 UnrealED 안에 작성됩니다. 'Editor' 프로젝트에는 편집 툴의 모든 함수성이 들어가고, 코드는 UnrealED 에 들어간다는 개념은 그저 해당 함수성에 대한 UI 감싸개(wrapper)일 뿐입니다.

다른 플랫폼 전용 프로젝트도 여럿 있는데, D3DDrv (렌더링의 Direct 3D 구현), WinDrv (뷰포트 생성, 이벤트 처리 등의 윈도우 구현) 등입니다. 한 프로젝트가 크로스-플랫폼 인터페이스의 특정 플랫폼 전용 구현이라면 보통 Drv 같은 접미사가 붙게 마련입니다.

반응형

+ Recent posts