1. 전역 변수
전역 변수란 어떤 변수를 하나의 오브젝트 안에서만 사용되도록 하는 것이 아니라 게임 전체에서 사용될 수 있도록 하는 것이다. 간단히 예를 들자면, 각각의 몬스터의 체력을 다르게 지정할 필요가 있는 게임에서는 그 몬스터의 체력을 일반 변수(지역 변수)를 통해서 지정한다. 하지만, 플레이어의 돈이나 기타 게임 시스템과 관련된 변수들은 어떤 한 오브젝트에만 적용될 것이 아니라 게임 전체에 적용될 필요성이 있으므로 전역 변수를 사용해야 한다.사용법은 간단한데,
a
란 이름의 전역 변수를 정의하고 싶다면 global.
을 붙여서 global.a
라고 정의하면 된다! 혹은 게임이 시작될 때 코드 어딘가에 globalvar (변수 이름);
을 쓰면 굳이 일일이 global.
을 붙이지 않고도 글로벌 변수로 쓸 수 있다.2. 임시 변수
한편 코드를 실행할 때 잠깐 쓰고 버려지는 변수가 있는데, 이를 별도 처리 없이 일반 변수(지역 변수)로 사용하면 그만큼의 메모리가 낭비된다. 이때 코드 맨 위에var
문을 사용해서 그 코드에서만 잠깐 사용하고 자동으로 삭제할 임시 변수를 정의할 수 있다. 예를 들어 var temp;
와 같이 쓰면 그 코드가 끝날 때까지만 temp
라는 이름의 변수를 임시로 사용할 수 있다.게임메이커 8.x에서는
var temp = 1;
과 같이 선언과 동시에 대입을 하면 문법 오류가 나지만, 스튜디오로 넘어오면서 이러한 문법이 가능해지게 되었다.지역 변수, 임시 변수, 전역 변수의 이름이 겹칠 경우 임시 변수는 그냥
foo
, 지역 변수는 self.foo
, 전역 변수는 global.foo
로 써서 구분할 수 있다.3. 뷰
게임에서 사용되는 룸의 크기가 너무 클 때, 우리는 게임을 플레이하는 데 어려움을 겪는다. 이때 필요한 것이 바로 뷰라는 기능이다. 뷰는 한 오브젝트를 자동으로 추적하여 그 오브젝트를 중심으로 그 주위를 화면상에 보여준다. 코드를 사용하면 룸 상의 특정 지점을 지정하거나 반대로 뷰 상의 특정 지점을 다른 곳에 활용할 수 있다. 대표적으로 UI처럼 화면에 고정되어야 하는 인스턴스들은 뷰를 기준으로 draw 해주면 UI가 이탈하는 문제가 없다.이 기능은 다양한 방법으로 응용되곤 하는데, 대표적으로 2인용 게임이 있다. 한 화면에 여러 시점의 뷰를 보여줄 수 있으므로 박스헤드와 같은 2인용 게임을 만들 때 매우 유용하다. 뷰를 설정할 때는 그 뷰를 지정할 룸을 클릭한 후, 뷰 활성화에 체크를 해주면 된다. 물론, 추적할 오브젝트도 같이 설정해야 한다.
4. 디버그 모드
자신이 만든 게임을 테스트해보고 싶을 때 사용하는 기능. 디버그 모드 상에서는 변수, 게임 스피드 등을 매우 쉽게 확인하거나 조작할 수 있으므로 유용하다. 간단히 예를 들자면, 어떤 이벤트가 일어날 조건이 플레이어의 레벨이 100을 달성했을 때라고 생각해보자. 이때는 겨우 테스트 한 번 하자고 레벨을 100까지 올려볼 수는 없을 것이다. 따라서 디버그 모드를 사용한다.사용 방법은 상단의 빨간색 화살표(F6)를 누르면 되고, 변수 등을 조작하고 싶다면 디버그 모드에서 뜨는 창에서 Tools - Execute Code를 사용한다.
게임메이커: 스튜디오에서는 디버그 창이 바뀌어 8.0보다 더 편리하게 디버깅을 할 수 있게 되었다. 단, GMS 엔진의 한계로 코드 실행이 막혀있기 때문에 게임에서 자체적으로 디버그 기능을 짜서 넣어놔야 한다. 코드상에 중단점을 지정하면 그 위치에서 게임이 일시정지되고 각종 정보가 표시된다. 실시간으로 변수 값 변화를 추적할 수도 있다.