언어:
페이지 정보
엔진 버전:
언리얼 엔진

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

언리얼 엔진

각각의 게임은 그에 속하는 코드, 콘텐츠, 세팅이 전부 들어있는 게임 프로젝트로 정의됩니다. 게임플레이 코드는 하나 이상의 게임플레이 모듈에 들어있으며, 각 게임 프로젝트에는 반드시 하나 이상의 모듈이 들어있어야 합니다. 아트 애셋, 사운드 등과 같은 콘텐츠는 에디터에 임포트되어 패키지와 맵으로 저장됩니다. 게임의 환경설정이 가능한 세팅은 시작시 로드되는 환경설정(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++ 클래스에서 블루프린트 클래스 를 파생시키는 방법으로 그 둘을 합칠 수도 있습니다. 새로운 유형의 액터나 오브젝트를 만들 수 있도록 클래스를 생성하는 법에 대해서는 클래스 생성 기초 문서를 참고하세요.

오브젝트, 액터, 컴포넌트 관련 상세 내용은 게임플레이 프로그래밍 문서를 참고하시기 바랍니다.