게임 개발 120

[UE4] C++ Module Generator 소개

C++ Module Generator 설치 Epic games launcher 마켓에서 C++ Module Generator를 검색하여 설치합니다. 설치 후 C++ Module Generator를 Enable 시키고 에디터를 다시 실행합니다. 빈 Plugin 모듈 생성 먼저 MyPlugin이라는 이름으로 Runtime Plugin 모듈을 생성합니다. Editor 모듈 추가 Moudle Generator를 사용하여 MyPlugin에 Editor Moudle을 추가하자. Windows > Moudle Generator를 실행하여 MyPlugin에 Editor 모듈을 생성합니다. 솔루션 파일을 다시 만듭니다. 정상적으로 MyPlugin에 Runtime 모듈과 Editor 모듈이 추가 되어 있는 것을 볼 수 있..

[UE4] Custom Asset Type 구현 - Import 하기

다음의 두 글을 먼저 살펴보야 겠습니다. [게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Plugin 모듈 만들기 [게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Asset 구현 & 등록 MyCustomAssetFactory.h에 FactoryCreateText 선언을 추가 합니다.MyCustomAssetFactory.cpp에 FactoryCreateText 함수 재정의 코드를 추가합니다. UObject* UMyCustomAssetFactory::FactoryCreateText( UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObje..

[UE4] Custom Asset Type 구현 - Asset 구현 & 등록

이 글이전에 Plugin 모듈을 먼저 만들어야 하며 다음 글을 참고해 주세요. [게임 개발/Unreal Engine] - [UE4] Asset Type추가 - Plugin 모듈 만들기 커스텀 어셋 만들기 먼저 UObject를 상속받아 자신의 커스텀 어셋을 만듭니다. #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "MyCustomAsset.generated.h" UCLASS() class TESTPLUGIN_API UMyCustomAsset : public UObject { GENERATED_UCLASS_BODY() UPROPERTY(EditAnywhere) int32 Value; UPROPERTY(Edit..

[UE4] Custom Asset Type 구현 - Plugin 모듈 만들기

Runtime 모듈과 Editor 모듈을 분리해서 만들 것입니다. 모듈을 분리하지 않아도 정상 동작 하지만 관례에 따라 언리얼 엔진 개발시에 Runtime 모듈과 Editor 모듈을 분리하여 개발합니다. 이렇게 하는 이유는 배포시에 용량이나 동작의 효율성 때문입니다. Runtime 모듈 만들기 먼저 Plugins > New Plugin 에서 빈 플러그으로 작성합니다. Runtime 모듈로 TestPlugin을 생성합니다. 수동으로 Editor 모듈 추가하기 C++ Moulde Generator를 사용하여 좀 더 편리하게 Editor 모듈을 추가 할 수 있으며 다음 글을 참고해 주세요. [게임 개발/Unreal Engine] - [UE4] C++ Module Generator 소개 아래 설명은 C++ Mo..

[UE4] Project Setting 카테고리 설정 (UDeveloperSettings)

Project Setting원하는 카테고리 이름을 새로 만들고 섹션을 설정 할 수 있습니다. UCLASS(config = TheFunniest, Defaultconfig, meta = (DisplayName = "The Funniest Thing")) class THEFUNNIEST_API UMyDeveloperSettings : public UDeveloperSettings { GENERATED_BODY() public: virtual FName GetCategoryName() const override; #if WITH_EDITOR virtual FText GetSectionText() const override; virtual FText GetSectionDescription() const over..

[UE4] 캐릭터 점프 속도 빠르게 하기

캐릭터의 움직임 관련해서는 Character Movement Component에서 설정 할 수 있습니다. 점프 이후 떨어 지는 속도는 Gravity Scale로 조정 할 수 있고 점프시 속도는 Jump Z Velocity로 조정합니다. Gravity Scale 값과 Jump Z Velocity의 값에 의해서 점프 높이 또한 조정됩니다. 수정전 디폴트 점프입니다. 좀 더 빠른 점프를 위한 설정을 다음과 같이 하였습니다. 수정 후 점프는 다음과 같이 변경 되었습니다.

[UE4] Project Setting 설정 추가하기(UDeveloperSettings)

UE4 에디터에서 DeveloperSettings를 부모로 하는 C++ 클래스를 만듭니다. config 설정, 디스플레이 이름, 카테고리, 설정 항목들을 추가합니다. UCLASS(config = TheFunniest, Defaultconfig, meta = (DisplayName = "The Funniest Thing")) class THEFUNNIEST_API UMyDeveloperSettings : public UDeveloperSettings { GENERATED_BODY() UPROPERTY(EditAnywhere, config, Category = "My Config | Settgins") FName MySetting = "my game"; }; 에디터에서 Project Setting을 열어 보..

[UE5] 나나이트 소개

나나이트 소개 나나이트는 한 가지 기능이 아니라 여러가기 기술들이 복합적으로 적용된 결과물 버추얼 텍스처링처럼 지오메트리 버전 뷰에 따라 필요한 디테일 수준의 지오메트리 데이터만 가상화 폴리곤 수나 드로 콜의 제약 없이 하이폴리곤 메시를 바로 사용 로우폴리곤 + 노멀 맵 대신 하이폴리곤 모델을 바로 사용 가능 나나이트 개발 목표 영화에 사용되는 에셋을 퀄리티 손실 없이 그대로 사용 가상화된 지오메트리 -> 화면에 보이는 것만 렌더링 제한 없는 렌더링 예산 -> 폴리곤 수, 드로 콜, 메모리 렌더링 파이프 라인을 새로 발명하는 수준의 개발이였다. 결국인 삼각형, 삼각형은 렌더링의 가장 기본 단위이다. 화면에 보이는 삼각형을 빠르게 그리자. GPU 주도 파이프라인 Retained 모드 렌더러 전체 GPU씬 ..

[UE4] visual studio 2019 자동 들여쓰기 설정

C++ 코딩을 할 경우 UFUNCTION, UPROPERTY와 같은 매크로를 사용합니다. 이러한 매크로는 ';'으로 끝나지 않기 때문에 다음행을 입력하려고 하면 다음과 같이 자동들여쓰기가 됩니다. 꽤 성가신데 이를 끄는 방법은 다음과 같습니다. 메뉴에서 Tools -> Options...을 실행하여 indenting 설정을 Block으로 변경합니다. 그렇지만, Identing Smart 기능을 사용하지 못하면 반대로 불편한 경우도 있으니 본인의 스타일에 맞게 사용해야 겠습니다. Block으로 사용할 경우 Identation에서 설정된 기능을 모두 끄는 것입니다. Smart로 설정하고 본인에 맞는 설정으로 변경하는 것도 검토하면 좋겠습니다.

[UE4] Unreal Engine Anim blueprint C++ 개발 설정

AnimInstance를 부모로하여 C++ 클래스를 만듭니다. UCLASS() class ARENABATTLE_API UABAnimInstance : public UAnimInstance { GENERATED_BODY() ... }; AnimBlueprint의 부모로 C++로 생성한 ABAnimInstance로 설정합니다. C++ 코드에 다음과 같이 멤버 변수로 CurrentPawnSpeed와 IsInAir가 있습니다. UCLASS() class ARENABATTLE_API UABAnimInstance : public UAnimInstance { GENERATED_BODY() ... private: UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn,..