프로젝트/[인프런] 게임 프로그래머 입문 올인원

[게임 프로그래머 입문 올인원] 2D 포폴 준비 : State 패턴(113강)

순정법사 2024.09.09

A. 2D 포폴 준비

6. State 패턴

a. 상태 기반으로 생각하기

상태를 기반으로 모든걸 생각하기 

몬스터로 예를 들면, 

몬스터 : 로밍 -> 피격/찾기 -> 달려듬 -> 벗어남 -> 돌아감

 

이렇게 많은 상태에서 그 상황에 대한 코드만 생각하기!

(인공지능, 애니메이션도 동일)

 

이렇게 플레이어의 상황을 enum으로 생성해주고

 

수정해서 변수가 다르긴한데 플레이어의 상태를 알려주는 코드 작성

 

이렇게되면 플레이어 상태에 따른 변화가 가능하다

 

여기서도 상태변화로 작성

 

b. 움직임 함수화하기

Player::Tick()될때마다 무분별하게 남발되고 있는 코드들을 정리해준다

 

남발되고 있는 이 코드들

 

상태에 따른 함수를 작성해주고

 

여기선 작성되지 않았는데, 당연히 입력받는 함수도 작성해준다 

 

그럼 이렇게 입력받는 함수 + 상태에 따른 함수로 깔끔하게 처리가 가능

 

c. 상태변화 함수 작성하기

만약 state가 변하면 함수로 같이 묶어주는게 중요함

 

이런식으로

 

위와같이 작성하게 되면 언제 내 상태변화가 되었는지 추적하기 어려워 버그발생 확률이 높다!

 

d. FMS

 

[Unity] FSM - 유한 상태 기계

FSM(finite-state machine)은 상태(state)를 기반으로 동작을 제어하는 방식을 구현하기 위한 디자인 패턴이다. FSM의 핵심은 단 하나의 상태만을 가진다는 점이다. 상태를 기준으로 어떤 동작을 수행할지

dodobug.tistory.com

 

이런 패턴도 있지만 무조건 사용해야 하는건 아니고

상황에 맞춰서 사용해주는게 좋다 (위처럼 단순한 코드는 사용하지 않는게 더 이득!)

 

현업에서 일어나는 일 중 제일 많은 버그는 꼼꼼하지 않아서!

👉 상태변화를 그래서 꼭꼭 잘 확인해서 코드를 작성해야 함

 

 

 


출처 : https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EC%9E%85%EB%AC%B8-%EC%98%AC%EC%9D%B8%EC%9B%90-rookiss#curriculum

 

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -

어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프

www.inflearn.com