본문 바로가기

언리얼

언리얼: LNK2001, LNK2019 등 unresolved external symbol 해결 언리얼 엔진은 C++를 언어를 사용하고, 여러 모듈을 참조해가며 작업해야 할 일이 잦습니다. 주기적으로 컴파일을 시도한다면 함수의 구현부를 작성하는 점을 잊는 등의 사소한 실수도 쉽게 파악해 큰 덩어리의 문제로 커질 일이 거의 없습니다. 때로는 어느 정도 규모의 작업을 한 번에 수행한 뒤 컴파일 및 런타임 테스트를 진행해야 하는 상황이 생깁니다. 일반적으로는 이미 만들어진 프레임워크의 리팩터링을 진행할 때 접할 수 있습니다. 여러가지 상황의 테스트 환경에서 다양한 개발을 시도하는 과정에서 많은 수의 링커 예외가 발생하면 당황스러울 수 있는데요, 다음 번 이와 같은 상황을 맞닥뜨렸을 때를 위해 순차적으로 확인해보았던 요소들을 기록해둡니다. 1. 함수의 구현부의 부재 헤더에 클래스를 정의하고 함수를 선언하였.. 더보기
언리얼: C++ 클래스 추가시 자동 컴파일 해제 언리얼 엔진 에디터에서 C++ 클래스를 추가하면 자동으로 컴파일을 시도합니다. 여러 클래스를 추가하려는 경우 빌드에서 소모되는 CPU 자원과 인터벌에 불만이 생길 때가 생깁니다. 상단 메뉴의 편집 - 에디터 개인설정 - 기타 메뉴에서 C++ 자동 컴파일 옵션을 끌 수 있습니다. 더보기
언리얼: Build.cs에서 디렉터리 존재유무 확인하기 언리얼 엔진 플러그인 개발시 다른 플러그인에 종속성을 갖는 것은 자주 생기는 일입니다. 모듈의 Build.cs에서 다른 모듈을 디펜던시에 추가함으로써 라이브러리를 가져다 사용할 수 있게 되는데요, 만약 종속성이 생겨야 하는 모듈이 존재하지 않을 수도 있다면 어떻게 처리해야할까요? 엔진 단에서 직접적인 기능을 제공하지는 않지만, 간접적으로나마 몇 가지 사항을 체크하여 동적으로 종속성의 판단을 수행할 수 있습니다. 다만 동적이라고 표현되었지만 빌드 스크립트에서 지정해 컴파일 타임에 진행된다는 점을 유의해야 합니다. 플러그인이 설치되었는지 몇 가지 단서가 존재할 수 있는데요. 1. 설치된 엔진에 플러그인이 존재하는지 or 프로젝트에 플러그인이 존재하는지 2. 현재 프로젝트에 플러그인이 활성화 되었는지 3. 적.. 더보기
언리얼: Module Chronicle 1 - 모듈의 이해 이 아티클은 언리얼 엔진을 파악해 가는 단계에 계신 독자를 위해 풀어 쓰여진 글입니다. 직관적이고 쉬운 전달을 위해 풀어 쓰는 과정을 거치다보니, 일부 전달이 매끄럽지 못한 부분이 있을 수 있습니다. 이해가 어렵거나 잘못된 내용을 발견하시면 다음 독자를 위해 한 말씀 부탁드립니다. 감사합니다. 서론 언리얼 엔진은 수 백개가 넘는 수의 모듈로 구성되어 있습니다. 언리얼 엔진은 왜 이렇게 많은 수의 모듈로 분리하여 엔진을 관리하고 있을까요? 모듈 형태로 코드를 관리하는 전략은 수 많은 장단점을 갖고 있겠지만, 언리얼 엔진이 주목했을 것으로 보이는 장점은 다음과 같습니다. 컴파일과 링킹에 소요되는 시간 절약 사용할 모듈만 배포하여 필요한 사이즈의 바이너리 생성 런타임에서 필요할 때 동적으로 적재 가능 간편한 .. 더보기
EOS: Redpoint Games 플러그인 QueryStats, Leaderboards 작동 문제 https://www.unrealengine.com/marketplace/ko/product/eos-online-subsystem EOS Online Subsystem, 카테고리 코드 플러그인 - UE 마켓플레이스 Use Epic Online Services in your Unreal Engine game! This plugin provides an online subsystem for Epic Online Services. www.unrealengine.com 언리얼 엔진 EOS 플러그인으로 판매되고 있습니다. https://gitlab.com/redpointgames/eos-online-subsystem-example/-/tree/main/ExampleCPP_EOS_4.26 ExampleCPP_EOS.. 더보기
언리얼: 모듈 추가해서 코드 분리 작성하기 참고링크 : https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/GameplayArchitecture/Gameplay/ Gameplay Modules Collections of gameplay classes belonging to a game project compiled into DLLs. docs.unrealengine.com 생성해야 하는 파일 모듈폴더/모듈이름.Build.cs 모듈폴더/모듈이름.h 모듈폴더/모듈이름.cpp 수정해야 하는 파일 Source/메인모듈.Target.cs Source/메인모듈Editor.Target.cs 새로 생성한 모듈 이름을 ExtraModule을 추가해준다. 프로젝트.uproject uproject에 모.. 더보기
언리얼: Delegates 블루프린트에서 할당, 바인딩, 호출 가능하게 하기 DECLARE_DYNAMIC_MULTICAST_DELEGATE(F...); 매크로로 델리게이트를 정의하고, 클래스 내에서 UPROPERTY를 붙여 델리게이트를 선언해줍니다. UCLASS 매크로에서 Blueprintable, BlueprintType을 지정해주어야합니다. BlueprintAssignable을 프로퍼티에 추가해주면 BP에서 이벤트 바인딩 및 언바인딩을 할 수 있습니다. BlueprintCallable을 프로퍼티에 추가해주면 BP에서 이벤트 호출을 할 수 있습니다. 더보기
언리얼 엔진 5 루멘 챌린지 작업 후기 언리얼 루멘 챌린지가 한국 로컬 행사로 개최되었습니다. 언리얼 엔진 5 얼리액세스 빌드로 루멘을 활용한 30초 분량의 FHD 영상을 제작해 게시하는 공모전입니다. 2021년 7월 14일 ~ 28일 총 2주간 진행되었으며 결과는 8월 17일에 발표된다고 합니다. 행사 소식을 듣고 2주를 모두 쏟아붓고 싶었지만, 이미 준비하고 있던 프로젝트와 행사들이 일정이 겹쳐 많은 시간을 할애하기는 힘들었습니다. 바로 작업에 착수하지는 못하고 시간을 쪼개어 어떤 연출을 해 볼 수 있을지 고민하며 아이디어가 생기기를 기다렸습니다. 마감 2일 전 마침내 어느정도 갈피가 잡혔고 큰 꿈을 갖고 복잡하게 진행하기보다 할 수 있는 것을 하는 데에 중점을 두고 작업했습니다. 아래는 그 결과물입니다. 작업 시간은 대략 18시간 정도 .. 더보기