전체 글 121

[언리얼 C++] 리디렉터 (Redirector)

언리얼에서 리디렉터는 이동된 애셋을 가리키던 레퍼런스를 현재 위치로 고쳐주는 오브젝트입니다. 언리얼 에디터에서 애셋을 이동시키거나 이름을 바꾸면 원래의 장소에 리디렉터가 남습니다. 이를 통해 현재 로드되지는 않았지만 이 애셋을 참조하는 패키지가 그 애셋의 새 위치를 알게 됩니다. 작명 규칙을 조기에 정해두고 이를 고수하면 리디렉터로 많은 문제점들을 예방할 수 있습니다. 1. 에디터에서 리디렉터 고치기 에디터에서 리디렉터를 확인하려면 컨텐츠 브라우저에서 리디렉터 표시 필터를 켭니다. 그러면 그 리디렉터를 가리키는 모든 패키지를 다시 저장한 뒤, 그것을 참조하는 모든 것들을 다시 저장할 수 있다면 리디렉터를 삭제합니다. 2. ResavePackages 커맨드렛 ResavePackages 커맨드렛은 -fixu..

[언리얼 C++] 소스에서 언리얼 엔진 빌드하기

1. 소스에서 언리얼 엔진 빌드 루트 디렉터리 안에서, GenerateProjectFiles.bat 파일을 실행하여 프로젝트 파일을 구성합니다. 모든 프로젝트 파일은 intermediate 파일입니다. 최신 상태를 유지하려면 새 빌드를 동기화할때마다 프로젝트 파일을 생성해야 합니다. Intermediate 폴더를 지운 경우, GenerateProjectFiles.bat 파일을 실행하여 프로젝트를 재생성해야 합니다. [프로젝트명].sln 파일을 더블클릭하여 비주얼 스튜디오에 프로젝트를 로드한 후 솔루션 환경설정을 Development Editor로 설정합니다. 개발중인 Windows 운영체제 타깃 버전이 32비트냐 64비트냐에 따라 솔루션 플랫폼을 Win32나 Win64 중 하나로 설정합니다. 프로젝트 타..

[언리얼 C++] 빌드 환경설정 레퍼런스

1. 빌드 환경설정 설명 언리얼 엔진 4는 UnrealBuildTool(언리얼 빌드 툴, UBT)를 통한 커스텀 빌드 메서드를 사용합니다. 이 툴은 엔진의 리플렉션 시스템을 빌드하는데 필요한 정보를 처리해주어, C++ 코드를 블루프린트, 리플리케이션, 시리얼라이제이션, 가비지 컬렉션과 통합시켜 줍니다. 모든 빌드 환경설정에는 두개의 키워드가 들어있습니다. 그 중 첫번째는 엔진과 게임 프로젝트의 상태를 나타냅니다. 예를 들어 Debug 환경설정을 사용해서 컴파일을 하는 경우, 게임 코드 디버깅이 가능합니다. 두번째 키워드는 빌드 대상이 되는 타깃입니다. 예를 들어 프로젝트를 언리얼에서 열고자 하는 경우, 타깃 키워드를 Editor로 붙여 빌드해주면 됩니다. 빌드 환경설정 상태 설명 Debug 디버깅용 심볼..

[언리얼 C++] 환경설정 파일

환경설정 파일은 프로젝트 로드시 초기화시킬 프로퍼티에 대한 값을 설정하는데 사용될 수 있습니다. 환경설정은 섹션별로 배치된 키-값 짝으로 이루어집니다. 주어진 키에 하나 이상의 값이 할당될 수 있습니다. 엔진 환경설정 파일은 오브젝트와 변수 기본값에 사용됩니다. 사용자 입력 환경설정 파일은 키 바인딩에 사용됩니다. 기본적으로 프로젝트 마법사를 통해 빈 프로젝트를 생성하면 DefaultEngine.ini, DefaultGame.ini 파일이 생성됩니다. 템플릿으로 새로 시작하는 프로젝트의 경우도 필요에 따라 DefaultEditor.ini, DefaultInput.ini 환경설정 파일이 생성될 수 있습니다. SaveConfig() 함수는 Config 클래스 지정자가 붙은 클래스에서 호출할 수 있습니다. 그..

[언리얼 C++] 명령줄 인수

명령줄 인수란, 실행파일로의 바로가기나 명령줄을 통해 실행파일을 실행시킬때 전달할 수 있는 키워드 문자열을 말합니다. 개발자나 사용자의 입맛에 맞게끔 엔진이 실행되는 방식을 맞추고자 할때 쓰입니다. 게임 대신 에디터를 실행시키는 것과 같은 단순한 것에서부터 게임을 특정 맵에서 지정된 해상도와 프레임으로 돌리면서 각 프레임을 개별 이미지 파일로 덤핑하는 것처럼 복잡한 것에까지 이릅니다. 1. 모드 인수 설명 -game 언쿠킹 컨텐츠를 사용하여 게임을 실행합니다. -server 언쿠킹 컨텐츠를 사용하여 게임을 서버로 실행합니다. 언쿠킹 컨텐츠를 사용하여 메인 에디터 실행파일을 게임으로 또는 서버로 강제 실행시키는데 사용되는 인수입니다. 이 명령어들은 대소문자를 구분하지 않습니다. UE4Editor.exe -..

[언리얼 C++] 게임 모드

언리얼 엔진 4에는 플레이중인 게임의 정보를 처리하는 게임 모드 클래스가 존재합니다. 큰 제약이 없는 게임일지라도 토대가 되는 규칙들이 있으며, 이러한 규칙들이 게임 모드를 이룹니다. 가장 기본적인 수준에서 이러한 규칙에 포함되는 것은 아래와 같습니다. 존재하는 플레이어와 옵저버의 수, 허용된 플레이어와 최대 옵저버 수 플레이어가 게임에 들어오는 방식, 스폰 위치 선택 규칙과 기타 스폰/리스폰 동작 포함 가능 게임 일시정지 가능 여부, 게임 일시정지 처리 방식 레벨간의 전환, 게임의 시네마틱 모드 시작 여부 포함 1. 게임 모드 플레이하는데 필요한 플레이어 수, 그 플레이어가 게임에 참가하는 방식 등의 기본적인 요소들은 여러 유형의 게임에 공통이지만, 어떤 게임을 개발하는지에 따라 무한대의 규칙 변종이 ..

[언리얼 C++] 게임 스테이트

게임 스테이트는 클라이언트가 게임의 상태를 모니터링할 수 있도록 해줍니다. 개념적으로 게임 스테이트는 접속된 모든 클라이언트가 알아야 하는 정보, 플레이어 개개인이 아닌 게임 모드에 관련된 정보를 관리해야 합니다. 그래서 접속된 플레이어 목록, 게임의 점수, 오픈 월드 게임에서 완료한 미션 등과 같은 게임 전반적인 프로퍼티 기록을 유지할 수 있습니다. 게임 스테이트는 게임에서 특정 플레이어가 팀 점수를 몇 점이나 올렸는지와 같은 개별 플레이어 단위의 기록을 유지하기에 좋은 곳은 아닙니다. 그런 부분은 플레이어 스테이트에서 보다 깔끔하게 처리할 수 있기 때문입니다. 일반적으로 게임 스테이트는 게임플레이 도중 변하면서 모두에게 관련이 있고 보일 수 있는 프로퍼티 기록을 유지해야 합니다. 게임 모드는 서버에만..

[언리얼 C++] 컨텐츠 애셋 유형 - 메시

메시에는 두 종류가 있습니다. 바로 스켈레탈 메시와 스태틱 메시입니다. 스켈레탈 메시는 애니메이션을 적용하여 메시를 변형시킬 수 있도록 설계된 계층형 본 스켈레톤에 묶인 메시입니다. 스태틱 메시는 비디오 메모리에 캐시되고 그래픽 카드에서 렌더링할 수 있는 폴리곤 세트로 구성되는 지오메트리 조각입니다. 1. 스켈레탈 메시 스켈레탈 메시는 두 부분으로 이루어져 있습니다. 스켈레탈 메시의 표면을 구성하는 폴리곤 세트와 폴리곤의 버텍스 애니메이션에 사용할 수 있는 계층형 상호 연결 본 세트입니다. 언리얼 엔진 4에서 스켈레탈 메시의 주 용도는 캐릭터나 기타 애니메이트 오브젝트를 나타내는데 쓰입니다. 3D 모델, 리깅, 애니메이션은 외부 모델링/애니메이션 어플리케이션으로 만든 다음 언리얼 에디터의 컨텐츠 브라우저..

[언리얼 C++] 온라인 서브시스템 Steam

온라인 서브시스템 Steam API를 통해 언리얼 엔진 4 애플리케이션을 Valve의 Steam 플랫폼에 출시하는 것이 가능합니다. Steam 모듈의 주 목적은 Steam 사용자들에게 매치메이킹이나 리더보드같은 피처 세트가 포함된 애플리케이션을 쉽게 배포할 수 있도록 하기 위함입니다. 추가적으로 Steam 모듈은 온라인 서브시스템으로 노출된 인터페이스를 다수 구현하여 Steamworks Software Development Kit(SDK)에 제공된 것을 대부분 지원합니다. 사용가능한 Steam 인터페이스는 아래와 같습니다. 매치메이킹 리더보드 업적 음성 유저 클라우드 공유 클라우드 외부 UI 위의 지원되는 인터페이스를 사용하여 애플리케이션에 피처 세트를 포함시킬 수 있습니다. 1. Steamworks 다..

[언리얼 C++] 게임플레이 프레임워크

게임플레이 프레임워크는 게임의 틀을 이루는 게임 규칙, 플레이어 입력과 컨트롤, 카메라, 유저 인터페이스 등의 코어 시스템입니다. 1. 기본 프레임워크 요소 다양한 게임 프레임워크 요소들이 서로 조합되어 게임을 이루게 됩니다. 게임을 이루는 기본 프레임워크 요소들은 다음과 같습니다. Game Mode Pawn Controller Camera User Interface 이제 위의 기본 프레임워크 요소들에 대해 간단히 설명하도록 하겠습니다. 게임 프레임워크의 바탕은 Game Mode입니다. Game Mode에서는 게임의 규칙을 설정하며, 플레이어의 스폰이나 게임 UI의 노출 처리를 할 수 있습니다. 플레이어 셋업이 이루어지는 곳은 Player Controller로, 이것이 Pawn을 빙의합니다. Pawn은 ..