자기계발

패스트캠퍼스 환급챌린지 30일차 : RPG 전투 플레이 프로젝트로 배우는 언리얼 엔진 5 게임 개발 강의 후기

해달이랑 2025. 4. 30. 01:40

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

 

 

오늘은 C++을 이용해 FSM(Finite State Machine) 기반의 상태 머신을 직접 구현해보는 학습을 진행했다. 주제는 단순하지만, 언리얼에서 상태를 코드로 명확하게 관리하고 전환하는 구조를 만들 수 있다는 점에서 꽤 의미 있는 시간이었다.

상태는 Idle, Patrol, Chase, Attack을 갖추고 플레이어를 인식해서 쫓아가는 로직까지 구현을 했다. 처음에는 간단하게 각 상태를 enum class로 정의해서 간단한 조건문으로 처리를 했다. 이렇게 구현하면 몬스터가 많아졌을 때 부하가 걸리기 때문에 다음 시간에는 다른 버전을 배우기로 했다. 우선은 enum class로 상태머신을 정의하게 됐다.

Idle 상태에서는 AI가 아무 동작 없이 짧은 시간 후 Patrol로 넘어가게 했다. Patrol 상태는 랜덤으로 순찰하는 동작을 수행하고 플레이어를 감지하면 chase 상태로 전이하게 된다. 상태 전환은 Tick() 함수에서 조건 분기를 통해 처리했다. 이때 몬스터가 움직이는 Speed는 직접 코드에서 계산한 값이 아니라, 에디터에서 노출한 UPROPERTY 변수를 통해 직접 값을 주입받는 형태로 구성했다. 에디터에서 값을 수정하고 상태 전환이 잘 되는지 확인하면서 실시간 피드백을 받는 방식이 굉장히 편리했다.

이번 학습을 통해 언리얼의 애니메이션 블루프린트에서 시퀀스로 구현하던 동작을, 코드 기반의 FSM으로 명확히 정의하는 방식도 병행할 수 있다는 점을 느꼈다. 코드와 데이터가 잘 분리되면 관리도 쉬워지고, 협업에서도 충돌이 줄어든다. 물론 블루프린트 상태 머신은 시각적으로 편리하다는 장점이 있지만, 복잡한 게임 로직을 설계할 때는 C++ 이 훨씬 견고하고 유연한 해법이 될 수 있다고 느꼈다.

다음 시간에서 배울 Behavior Tree는 언리얼 엔진에서 AI 행동을 트리로 구성해서 제어하는 방식이라고 한다. 언리얼 엔진을 배우면 배울수록 다양한 기능이 많이 준비되어 있어서 게임을 만들기 딱 적합하다고 생각하게 된다.

 

https://abit.ly/lisbva

 

Abit.ly 다운받기

 

abit.ly