언리얼 엔진 프로그래밍 기본

언리얼 엔진으로 개발하는 프로그래머를 위한 정보입니다.

Windows
MacOS
Linux

각각의 게임은 그에 속하는 코드, 콘텐츠, 세팅이 전부 들어있는 게임 프로젝트로 정의됩니다. 게임플레이 코드는 하나 이상의 게임플레이 모듈에 들어있으며, 각 게임 프로젝트에는 반드시 하나 이상의 모듈이 들어있어야 합니다. 아트 애셋, 사운드 등과 같은 콘텐츠는 에디터에 임포트되어 패키지와 맵으로 저장됩니다. 게임의 환경설정이 가능한 세팅은 시작시 로드되는 환경설정(ini) 파일 에 정의됩니다. 이들 모두가 언리얼 엔진으로 제작되는 모든 게임의 기반을 이룹니다.

ProjectModuleClassOrg.png

언리얼 게임 프로젝트 문서는 새로운 게임 프로젝트 생성을 단계별로 안내해 주는 문서입니다. 게임 프로젝트를 만들고나서는 프로젝트의 디렉터리 구조 에 익숙해질 필요가 있습니다. 그래야 어떤 파일이 무엇을 나타내고, 프로젝트에 파일을 새로 추가할 때 무엇은 어디에 가는지 이해하는 데 도움이 됩니다. 프로젝트로 에디터를 실행할 때 명령줄 인수 를 붙여 게임 미리보기 모드로 바로 들어간다든가, 특정 맵에서 시작한다든가 하는 작업이 가능합니다.

모듈

엔진 자체가 여러 모듈로 이루어져 있는 것과 마찬가지로, 각 게임은 하나 이상의 게임플레이 모듈로 이루어져 있습니다. 이들은 관련 클래스들의 모음을 담는 그릇이라는 점에서 이전 버전 엔진에서의 패키지와 비슷합니다. 언리얼 엔진 4 에서는 게임플레이가 모두 C++ 로 처리되기에, 모듈은 별도의 패키지 파일이라기 보다는 사실상 DLL 에 가깝습니다.

게임플레이 모듈 생성 및 사용법 관련 상세 정보는 게임플레이 모듈 문서를 확인하세요.

모듈 API

모듈 밖에서 접근할 필요가 있는 함수와 클래스는 *_API 매크로를 통해 노출시켜야 합니다. 노출되는 각 항목에는 컴파일 시간 비용이 드니, 꼭 필요한 것만 노출시키도록 하십시오. 클래스에 있는 여러 함수중 딱 하나만 접근해야 하는 경우, 클래스 전체가 아닌 그 함수만 노출시키면 상당량의 컴파일 시간을 절약할 수 있습니다.

클래스와 함수를 다른 모듈에 노출시키는 방법 관련 상세 정보는 모듈 API 지정자 문서를 참고하세요.

클래스

게임플레이 클래스는 표준 C++ 헤더 파일과 문법에다 언리얼 엔진 고유의 클래스 속성 정의를 돕기 위해 엔진에 정의된 특수 매크로를 함께 사용합니다.

클래스 구조 및 생성 관련 자세한 설명은 언리얼 아키텍처 문서를 참고하세요.

클래스 구현

가장 근본적인 레벨에서, Actor (액터)는 레벨에 배치할 수 있는 게임플레이 오브젝트를 말합니다. 모든 액터는 AActor 클래스로부터 확장되며, 스폰가능한 게임플레이 오브젝트의 베이스 클래스가 됩니다.

액터라 함은 어떤 면에서 컴포넌트 라 불리는 특수 유형 오브젝트 를 담는 그릇입니다. 예를 들어 CameraActor 에는 CameraComponent 가 들어있습니다.

camera_actor.png

시야와 같은 카메라의 기능은 모두 CameraComponent 에 들어있습니다. 즉 CameraComponent 는 Character 같은 다른 액터에 포함되어 해당 오브젝트에도 똑같은 카메라 기능을 줄 수 있다는 뜻입니다.

pawn_actor.png

여러가지 유형의 컴포넌트를 사용하여 액터의 이동 방식, 렌더링 방식, 그 외 여러가지 기능 부분을 제어할 수 있습니다. 모든 오브젝트는, 컴포넌트를 포함해서, UObject 클래스에서 확장되며, 이는 모든 게임플레이 오브젝트의 베이스 클래스입니다. 이는 월드에 직접 인스턴싱할 수는 없으며, Actor 에 속해야 한다는 뜻입니다.

각 액터나 오브젝트는 어느 한 클래스의 인스턴스 하나입니다. 클래스는 액터나 오브젝트에 대한 템플릿을 구성합니다. 해당 액터나 오브젝트에 대해 설정 가능한 프로퍼티를, 그리고 해당 액터나 오브젝트 안에서 실행 가능한 함수를 정의합니다. 새 클리스, 또는 새 오브젝트나 액터 유형을 C++ 코드로 만들 수 있습니다. 블루프린트 클래스 는 주로 새 액터를 구성하는 클래스를 만드는 데 사용되나, 약간의 오브젝트를 확장시킬 수도 있기는 합니다. C++ 클래스를 새로 만든 다음 그 C++ 클래스에서 블루프린트 클래스 를 파생시키는 방법으로 그 둘을 합칠 수도 있습니다. 새로운 유형의 액터나 오브젝트를 만들 수 있도록 클래스를 생성하는 법에 대해서는 클래스 생성 기초 문서를 참고하세요.

오브젝트, 액터, 컴포넌트 관련 상세 내용은 언리얼 아키텍처 문서를 참고하시기 바랍니다.

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼