2024-05-21
유데미 게임개발 챌린지를 통해 Udemy 강의를 완강하고 느낀점을 적은 글입니다.
1. 창고 부수기 (WarehouseWreckage)
https://github.com/ChangJin-Lee/WarehouseWreckage
- 창고 부수기에서는 언리얼 엔진이 무엇이고 블루프린트를 위주로 공을 던지는 게임을 만들어 보았습니다.
- 액터란 무엇이고 왜 사용하는지에 대해서 학습했습니다.
- 여기서는 언리얼 엔진이란게 있구나.. 신기한 엔진이구나 정도의 느낌이었습니다.
- Shoot Projectile Using BluePrint
- Can limit Projectile cnt
- Actor
- In BluePrint, Manage StaticMeshComponent
2. 장애물 공격 (ObstacleAssault)
https://github.com/ChangJin-Lee/ObstacleAssault
- 장애물 공격 프로젝트에서는 언리얼에서 쓰이는 C++에 대한 아주 기초적인 내용을 배웠습니다. 플랫폼이 이동하거나 회전하는 기능 구현에 대한 방법을 배웠습니다.
- 여기에서는 단순 캐릭터와 장애물을 넣었을 뿐인데도 매우 완성도가 높은 게임처럼 느껴져서 언리얼 엔진이 확실히 완성도가 높아보이는구나를 느꼈습니다.
- 언리얼에서 쓰이는 C++은 헤더파일과 cpp 파일로 나뉘는구나 정도를 알게 되었습니다.
- Functions, Variables and Branches in C++
- Creating a C++ Actor
- C++ code structure
- C++ compilation and Live Coding
- Linking Blueprint to C++
- Setting our own custom character class.
3. 크립트 레이더 (Crypt Raider)
https://github.com/ChangJin-Lee/CryptRaider
- 레벨 디자인을 어떻게 하는지 그 구현 방법을 직접 따라해보면서 레벨 디자인 구현을 경험했습니다.
- 라이팅에 대한 기초적인 지식을 학습했습니다.
- Actor, Character, Pawn의 차이에 대해서 배웠습니다.
- 움직임에 대한 Mover Component, 플레이어의 물건 잡기에 해당하는 Grabber Component를 만들어서 해당하는 기능을 어떻게 하면 구현할 수 있을지에 대해서 학습했습니다.
- 블루프린트에서 C++ 함수를 불러오는 방법에 대해서 학습했습니다.
- UPROPERTY 지정자에 대해서 학습했습니다.
- 여기서부터 확실히 난이도가 매우 상승했습니다.
- 언리얼을 배우려고하고 이 강의를 처음으로 듣는다면 이번 강의에서 포기할 가능성이 높습니다. 다만 배우는건 진짜 많습니다.
- Pointers and References
- Actor Components and Scene Components
- Including header files
- Lighting with Lumen
- Modular level design
- Line Tracing and Collisions
- While, For Loops and Arrays
- Calling C++ functions from Blueprint
4. 툰탱크 (Toon Tanks)
https://github.com/ChangJin-Lee/ToonTank
- 월드에서 Pawn의 움직임에 대해서 배웠습니다.
- Input 값(WASD, mouse clicks)에 대한 Handling에 대해서 배웠습니다.
- 플레이어, 적이 비슷한 컴포넌트를 공유하기 때문에 Base 클래스를 만들어 player class, turret class를 Base 클래스의 자식으로 만들었습니다.
- Projectile을 발사하는 방법에 대해서 학습했습니다
- health, damage, destruction을 하는 방법에 대해서 학습했습니다.
- 특수효과를 적용하는 방법, 예를들어 이펙트나 연기가 나거나 소리가 나거나 하는 내용에 대해 학습했습니다.
- HUD 디스플레이를 통해 게임의 승리, 패배 조건을 텍스트로 보여주었습니다
- 크립트 레이더에 비해서는 난이도가 조금 낮았습니다. 블루프린트나 레벨디자인보다는 C++에 집중된 느낌입니다. 다만 크립트레이더를 듣고 와야 이해가 되는 부분이 분명히 있기 때문에 꼭 듣고 오시는걸 추천합니다.
- 잘 짜여진 레벨 디자인으로 게임을 만드는 느낌이었습니다.
- 구조화가 잘 되어있어서 좋았습니다.
- C++의 class의 상속을 사용해서 더 이해하기 편했습니다.
5. 심플 슈터 (Simple Shooter)
https://github.com/ChangJin-Lee/SimpleShooter
-
플레이어 움직임
-
애니메이션
-
슈팅
-
Health / Death
-
Enemy AI
-
Win / Lose condition
-
에셋을 import, export 하는 방법
-
Game Mode를 활용하여 Game Mode에 있는 Pawn을 가져와서 체력, 죽음을 관리했습니다.
-
비헤이비어 트리, 블랙보드에 대해서 배웠습니다. Enemy AI를 관리하는 기초적인 내용을 학습했습니다.
-
Animation Blueprint와 Animation State Machine 사용법에 대해서 학습했습니다.
- 내가 좋아하는 장르인 3D 슈팅게임을 만들어보는 강의였습니다. 생각보다 알찬 내용이 많아서 너무 좋았고 완강 이후에 추가하면 좋을 법한 기능들을 추천해주었습니다. 여기에 살을 계속 붙여나가면 공부 진짜 많이 될듯합니다.
- 쉽지않은 도전이었고 이런 기능이 있을까? 하는 기능은 거의다 언리얼에서 기본으로 제공하는 것에 매우 놀랐습니다.
- 진짜 거의 다 있습니다. 데미지 계산 이라는 TakeDamage라던지..
- 중급 코스 강의 들으면서 simple shooter에 대한 다른 챌린지들을 할 예정이다.
- 완강 끝!