[UE5] TIL - 33 Unreal Engine 5 C++ 개발자: C++ 학습하고 비디오 게임 제작하기 완강

ChangJin·2024년 5월 21일
0

Unreal Engine5

목록 보기
61/114
post-thumbnail

2024-05-21

깃허브!
https://github.com/ChangJin-Lee/ARproject
https://github.com/ChangJin-Lee/SimpleShooter

유데미 게임개발 챌린지를 통해 Udemy 강의를 완강하고 느낀점을 적은 글입니다.


1. 창고 부수기 (WarehouseWreckage)

https://github.com/ChangJin-Lee/WarehouseWreckage


  • 창고 부수기에서는 언리얼 엔진이 무엇이고 블루프린트를 위주로 공을 던지는 게임을 만들어 보았습니다.
  • 액터란 무엇이고 왜 사용하는지에 대해서 학습했습니다.

  • 여기서는 언리얼 엔진이란게 있구나.. 신기한 엔진이구나 정도의 느낌이었습니다.

  1. Shoot Projectile Using BluePrint
  2. Can limit Projectile cnt
  3. Actor
  4. In BluePrint, Manage StaticMeshComponent


2. 장애물 공격 (ObstacleAssault)

https://github.com/ChangJin-Lee/ObstacleAssault


  • 장애물 공격 프로젝트에서는 언리얼에서 쓰이는 C++에 대한 아주 기초적인 내용을 배웠습니다. 플랫폼이 이동하거나 회전하는 기능 구현에 대한 방법을 배웠습니다.

  • 여기에서는 단순 캐릭터와 장애물을 넣었을 뿐인데도 매우 완성도가 높은 게임처럼 느껴져서 언리얼 엔진이 확실히 완성도가 높아보이는구나를 느꼈습니다.
  • 언리얼에서 쓰이는 C++은 헤더파일과 cpp 파일로 나뉘는구나 정도를 알게 되었습니다.

  1. Functions, Variables and Branches in C++
  2. Creating a C++ Actor
  3. C++ code structure
  4. C++ compilation and Live Coding
  5. Linking Blueprint to C++
  6. Setting our own custom character class.


3. 크립트 레이더 (Crypt Raider)

https://github.com/ChangJin-Lee/CryptRaider

  • 레벨 디자인을 어떻게 하는지 그 구현 방법을 직접 따라해보면서 레벨 디자인 구현을 경험했습니다.
  • 라이팅에 대한 기초적인 지식을 학습했습니다.
  • Actor, Character, Pawn의 차이에 대해서 배웠습니다.
  • 움직임에 대한 Mover Component, 플레이어의 물건 잡기에 해당하는 Grabber Component를 만들어서 해당하는 기능을 어떻게 하면 구현할 수 있을지에 대해서 학습했습니다.
  • 블루프린트에서 C++ 함수를 불러오는 방법에 대해서 학습했습니다.
  • UPROPERTY 지정자에 대해서 학습했습니다.

  • 여기서부터 확실히 난이도가 매우 상승했습니다.
  • 언리얼을 배우려고하고 이 강의를 처음으로 듣는다면 이번 강의에서 포기할 가능성이 높습니다. 다만 배우는건 진짜 많습니다.

  1. Pointers and References
  2. Actor Components and Scene Components
  3. Including header files
  4. Lighting with Lumen
  5. Modular level design
  6. Line Tracing and Collisions
  7. While, For Loops and Arrays
  8. 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에 대한 다른 챌린지들을 할 예정이다.
  • 완강 끝!
profile
게임 프로그래머

0개의 댓글