게임 세계를 자세히 들여다보면 흥미로운 점을 발견할 수 있습니다. 화면 속 모든 요소가 무작위로 흩어져 있지 않다는 사실이죠. 모든 것은 일정한 기준에 따라 깔끔하게 정리되어 있습니다. 프로그래머는 이 기준을 타입(Type)이라고 부릅니다.
게임을 만들 때 가장 먼저 하는 일은 분류입니다. 이 오브젝트가 어떤 존재인지 정의하는 과정이 필요하죠. 타입에는 그 오브젝트의 속성과 행동 방식이 담깁니다. 쉽게 말해 타입은 설계도와 같습니다.
오브젝트의 설계도 타입의 정의
타입을 정의한다는 것은 사물의 본래 성질을 정하는 일입니다. 이 오브젝트가 화면에서 어떻게 보여질지 결정합니다. 또한 어떤 행동을 할 수 있는지도 미리 정해두죠. 실제 게임에 등장하기 전의 밑그림이라고 이해하면 쉽습니다.
이 설계도가 있어야 비로소 게임 속 세상이 만들어집니다. 프로그래머는 타입을 통해 게임의 기초를 다집니다. 하지만 설계도만으로는 게임을 즐길 수 없겠죠? 실제로 움직이는 실체가 필요합니다.
실체화된 존재 인스턴스의 개념
여기서 아주 중요한 개념이 등장합니다. 바로 인스턴스(Instance)입니다. 하나의 타입은 여러 개의 인스턴스를 만들어낼 수 있습니다. 이들은 모두 같은 설계도를 공유하는 형제들입니다. 하지만 각자가 가진 값은 서로 다릅니다.

예를 들어 체력이나 위치 같은 정보는 인스턴스마다 다릅니다. 기본 틀은 같지만 지금 어디에 있는지는 각자 다르죠. 어떤 상태인지도 개별적으로 관리됩니다. 그래서 플레이어는 이들을 각각 다른 존재로 인식하게 됩니다.
팩맨으로 알아보는 타입의 역할
이 개념을 가장 잘 보여주는 예가 팩맨(Pac-Man)입니다. 이 게임에는 몇 가지 명확한 타입이 등장합니다. 먼저 플레이어가 조작하는 주인공 팩맨이 있습니다. 그리고 미로를 돌아다니는 유령(Ghost) 타입이 있죠.
맵 곳곳에 놓인 펠릿(Pellet)도 하나의 타입입니다. 상황을 뒤집는 파워 필(Power Pill)도 마찬가지죠. 여기서 주목할 점이 하나 있습니다. 게임에 등장하는 유령들이 모두 따로 설계된 것이 아니라는 점입니다. 모두 유령이라는 하나의 타입에서 나왔습니다.
유령들이 따로 또 같이 움직이는 이유
모든 유령은 같은 타입이라서 행동 규칙이 같습니다. 미로를 따라 이동하는 방식이 동일하죠. 팩맨을 위협하거나 도망치는 조건도 공유합니다. 하지만 게임을 해보면 유령들이 다르게 느껴집니다. 왜 그럴까요?
그건 각 인스턴스의 시작 위치가 다르기 때문입니다. 이동하는 방향이나 현재 상태도 제각각이죠. 그래서 플레이어는 유령을 하나의 무리로 인식합니다. 그러면서도 왼쪽 유령과 오른쪽 유령을 따로 구분해서 대응합니다.
상태의 차이가 만드는 게임의 흐름
맵에 깔린 펠릿들도 좋은 예시가 됩니다. 이들은 모두 같은 타입의 인스턴스입니다. 먹히면 사라진다는 규칙도 똑같이 적용되죠. 하지만 어떤 펠릿은 이미 먹혀서 없습니다. 반면에 어떤 펠릿은 아직 맵에 남아 있죠.
이런 차이는 타입의 문제가 아닙니다. 각 인스턴스가 처한 현재 상황이 다르기 때문입니다. 이 차이가 모여서 게임의 진행 상황을 만듭니다. 덕분에 화면 속 수많은 요소가 질서 있게 움직입니다.
질서와 변화의 균형 잡기
타입과 인스턴스를 나누면 게임 세계가 체계적으로 변합니다. 타입은 이 오브젝트가 무엇인지 명확히 정의합니다. 인스턴스는 그것이 지금 어떤 상황인지를 보여주죠. 이렇게 하면 수많은 오브젝트를 효율적으로 관리할 수 있습니다.
플레이어 입장에서도 이 방식은 큰 도움이 됩니다. 같은 타입이 반복해서 나오니 패턴을 익히기 쉽습니다. 그러면서도 인스턴스마다 상황이 달라 매번 새롭게 느껴지죠. 반복 학습과 새로운 도전이 조화를 이룹니다.
규칙으로 완성되는 게임의 세계
오브젝트를 두 개념으로 나누는 것은 기술적인 편의 그 이상입니다. 이는 게임 세상을 이해 가능한 규칙으로 만드는 방법입니다. 플레이어는 이 규칙 안에서 전략을 세우고 즐거움을 찾습니다.
질서 정연한 타입 위에서 변화무쌍한 인스턴스들이 춤을 춥니다. 이 균형이 게임을 더욱 흥미롭게 만듭니다. 여러분도 이제 게임을 볼 때 이 두 가지를 구분해 보세요. 화면 속 세상이 훨씬 더 선명하게 보일 겁니다.