게임 개발에서의 블루프린트와 C++의 조화
Epic Games 학습에서 수강할 수 있는 위와같은 강의를 수강하고 작성하는 글 입니다
1. Look at the current setup of the project
A look at the C++ Classes
UPROPERTY 메크로를 통해 생성된 Properties 확인 가능
Properties in Blueprint
Exposed Property => EditAnywhere, BlueprintReadWrite 를 통해 수정, 확인 가능
시작 Pawn => Property Setting 에서 수정 가능, 또는 Auto Possess Player 수정(Player 0으로)
2. A Review of the official development approaches
C++ 이 좋을지, BP가 좋을지 고민된다면, Balancing Blueprint and C++ 문서를 읽어보는것이 좋다!
하드레퍼런스, 소프트레퍼런스
- 하드레퍼런스: 객체 자체를 참조하는 것 => 이름 변경 또는 경로 변경 시 문제가 발생할 수 있음
- 소프트레퍼런스: path와 같은 string같은 형태로 참조하는 것
Asset을 찾을 때?
static ConstructorHeplers::FObjectFinder ProjectileMeshAsset(TEXT(“/Game/Mesh/Projectile.Projectile”));
(Asset Finder를 통해 찾는다.)
3. Flexible GameModes
C++로만 프로젝트를 진행한다면, GameMode 변경의 어려움이 있다. BP인 경우에는 Default pawn 등을 지정할 수 있음
C++ only, C++와 BP 혼합, BP 만으로 된 3가지 경우를 비교해 보았을 때, BP만으로 구성된 경우가 현저하게 느린 결과를 보여줌
C++ only, >> C++와 BP 혼합 >>>>> BP 만
네이티브화: BP로 구현된 내용을 C++코드로 번역하는 것
5. Real Benefits of C++
C++을 언제 도입?
- Performance: 우월. 오래걸린다면 반드시
- Maintenance and code readability: 프로젝트 규모 커지며 협업 시 효율적인 코드 파악이 필요 (C++은 한 창에서도 여러 함수를 볼 수 있음)
- Networking and code replication: networking 시 유리함. 퍼포먼스도.
- Complex AI: 계산 방식 복잡해질 때 퍼포먼스 좋아짐
- Working with plugins: 플러그인을 원활하게 사용할 수 있도록 백앤드에서 작업 해줄 수 있음
- Overriding default class functionality: 오버라이딩과 같은 작업을 유연하게 수행 가능
6. GameMode Improvements
GameMode를 BP로 -> 유연성 확보 가능!
- C++에서.. : PlayerControllerClass = ATwinSTickPlayerController::StaticClass();
- BP에서.. : 모든 내용 바로 수정 가능
7. Projectile Improvement
Projectile을 BP로-> 테스트와 변경 쉽게 가능!
새로운 Projectile 발사 가능