예제나 개인 프로젝트, 팀 프로젝트를 진행하면서 싱글 톤 구현은 거의 빠진 적이 없다.
하지만 아직 두리뭉술하게 떠다니는 싱글 톤에 대해서 정확하게 짚고 넘어가려한다.
싱글 톤이란 전체에서 단 하나의 인스턴스만 존재하도록 보장하는 디자인 패턴이다.
즉, 어디서든 접근이 가능하고,
인스턴스를 중복 생성할 수 없다.
전역적으로 관리되는 객체에 사용하는 디자인 패턴이다.
그렇다면 왜 게임 개발에서 싱글 톤이 필요할까?
게임은 다른 개발과 달리,
상태 중심적인 구조를 가지고 있다. 달리 말하면 게임은 단순히 버튼 누르고 반응하는 웹/앱과 달리 다음과 같은 복합적인 상태 관리를 요구한다.
즉, "지금 게임이 어떤 상황인지", "무슨 이벤트가 진행 중인지", "무엇을 보여줘야 할지" 등, 여러 가지 시스템이 동시에 상호작용하는 구조다.
그렇기에 언제, 어디서든 접근해야 하는 중앙 집중형 매니저가 필요하다.
만일 이런 매니저들이 여러 개 만들어지면 동기화 문제, 충돌, 상태 꼬임이 생기기 때문에, 하나만 존재하게 강제하는 것이 싱글톤의 역할이다.