게임 상태기계 (Game State Machine)

문화콘텐츠학·게임학
한 줄 정의: 게임 전체 또는 개별 시스템이 가질 수 있는 여러 상태와 그 사이의 전이 규칙을 정의하는 구조를 말한다. 메뉴, 플레이, 일시정지, 게임오버 등 상위 게임 흐름 관리에도 활용된다.

쉽게 풀면

게임이 가질 수 있는 여러 상태(메뉴, 플레이 중, 게임오버 등)와 그 사이를 어떻게 넘나드는지 정의하는 구조다.

왜 중요한가

게임의 전체 진행상태(메뉴, 플레이, 일시정지, 종료 등)를 명확히 구분된 상태와 전환규칙으로 관리하는 프로그래밍 구조로, 복잡한 게임 흐름을 예측 가능하고 디버깅하기 쉽게 만드는 게임 개발의 기초 아키텍처로 다뤄진다. 상태 전환 시 이전 상태의 데이터를 완전히 초기화할지 일부 유지할지(예: 일시정지 후 복귀 시 입력 버퍼 유지 여부)는 상태기계 설계에서 세심하게 결정해야 하는 세부 규칙이다.

논문에서는 이렇게 쓰입니다

Millington, I. & Funge, J. (2009). Artificial Intelligence for Games.

이 저작은 상태기계를 NPC AI뿐 아니라 게임 전체 흐름 관리에도 적용 가능한 범용 구조로 다뤘다.

"이 게임의 진행 흐름은 대기, 전투, 종료 상태를 전환하는 유한상태기계로 관리되었다."

게임 상태기계는 게임의 전체 흐름이나 개별 캐릭터의 행동을 유한한 상태와 전이 규칙으로 표현하는 설계 패턴으로, 구조가 단순해 소규모 로직에 적합하지만 상태 수가 늘면 관리가 복잡해진다는 한계가 지적된다.

조금 더 깊게 보면

게임 상태기계는 캐릭터 AI에 쓰이는 유한상태기계와 개념적으로 유사하지만 적용 범위가 개별 캐릭터가 아니라 게임 전체의 흐름 관리라는 점에서 구분되며, 두 개념을 혼동하면 시스템 설계 논의에서 혼란이 생길 수 있다. 게임 전체 상태기계는 보통 부트, 메뉴, 로딩, 플레이, 일시정지, 결과화면 등의 최상위 상태로 구성되며, 각 상태 진입·이탈 시점에 리소스를 로드하거나 해제하는 로직을 연결해 메모리 관리와도 밀접하게 결합된다. 네트워크 멀티플레이어 게임에서는 클라이언트와 서버가 각자 별도의 상태기계를 유지하다 동기화 오차가 발생할 수 있어, 서버의 상태를 항상 우선하는 권위 서버 구조가 표준적으로 채택된다. 일시정지 상태에서도 배경 음악이나 애니메이션 일부는 계속 재생되도록 예외 처리를 두는 것은 상태기계 설계에서 흔히 요구되는 세부 조정이다.

주의할 점

게임 전체를 관리하는 상태기계와 개별 NPC의 행동을 관리하는 상태기계는 규모와 목적이 다르므로 구분해서 설계해야 한다.

관련 용어