**게임메이커**(GameMaker; GM, 최초 명칭: 아니모/Animo, 2011년까지의 명칭: 게임 메이커/Game Maker)는 델파이 프로그래밍 언어로 제작된 게임 개발 도구 (IDE)이다. 네덜란드의 컴퓨터 프로그래머이며, 위트 레흐트 대학의 교수인 마르크 오버르마르스(Mark Overmars)가 만든 프로그램이다. 현재는 요요 게임즈(YoYo Games)가 현재 개발 중이며, 다른 프로그래밍 언어를 이용하여 게임을 개발하는 것 보다 더 빠르고 편하게 컴퓨터 게임을 개발할 수 있도록 고안을 했다.

게임메이커는 현재 한층 업그레이드 된 스튜디오 버전을 만들었다, 1999년 처음 출시했던 1.1버전 이후 3D 기능과 기타 여러 가지 기능이 추가되어 그래픽적으로 상당히 업그레이드가 되며 요요 게임즈라는 무료 호스팅 사이트를 만들어 사용자가 만든 게임을 쉽게 배포를 할 수 있게 했다.

개발 역사
-----

원래는 대학 강의를 위한 목적으로 만든 아니모(Animo)라는 그래픽 도구였다. 하지만 제작자가 나중에 이 아니모를 기반으로 하여 게임메이커를 만들었다.

2007년 1월 26일에 마크 오버마스는 요요 게임즈라는 게임회사를 설립하였다. 이곳에서는 게임메이커를 개발하고, 개발자와 일반 게이머를 위한 커뮤니티를 개발한다.

시스템 요구 사항
---------

게임메이커 8.x의 시스템 요구 사항은 다음과 같다:

* 윈도우 2000, 윈도우 XP, 윈도우 비스타, 윈도우 7, 맥 OS X 10.5 및 맥 OS X 10.6
* DirectX 8 이상
* 32MB의 비디오 메모리를 장착한 DirectX 8 호환 그래픽 카드
* 펜티엄과 동등한 프로세서
* DirectX 8 호환 사운드 카드
* 128 MB 이상의 메모리 (게임메이커 도움말 공식 파일 문서에만 적혀 있음)
* 16비트 또는 32비트 색의 800x600 이상의 화면 해상도
* 데이터 실행 방지(DEP)는 게임메이커 8의 개발 환경 실행을 막을 수 있다. DEP는 비활성화하거나 Game\_Maker.exe를 예외로 설정하여야 한다.

특징
--

### 디자인

게임메이커에서는 GUI 형태의 인터페이스를 채용하였으며, 액션을 사용할 때에는 오른쪽 마우스를 누르거나 드래그 앤드 드롭을 사용하면 된다.
### 기능

게임메이커에서는 GML이라는 자체적인 언어를 지원하며, DLL 라이브러리 파일을 추가하여 기능을 더 추가할 수도 있다. 부가적인 프로그램인 라이브러리 메이커(Library Maker)나 확장 패키지 제작기(Extension Maker)를 통하여 액션이나 확장 패키지를 제작하여 게임메이커의 기능을 추가할 수 있다. 또한 5.0 이상과 8.0 이하 버전 파일을 지원한다.
### 에디션

게임메이커에서는 라이트(Lite) 버전과 프로(Pro) 버전이 있다. 라이트 버전은 윈도판을 기준으로 하여 무료로 사용이 가능하지만, 기능제한이 있다. 프로 버전을 사용하기 위해서는 25 달러를 지불해야 하며, 8.1버전부터는 이 가격이 40 달러로 오를 예정이다. 맥 버전으로는 2010년 8월 11일, 요요게임즈 사에서 발표한 게임메이커 7.0이 있다. 윈도 버전과는 다르게 라이트 버전이 기능 제한이 없지만 구입하지 않으면 10시간만 사용할 수 있다.
### GML

GML(게임메이커 언어, GameMaker Language)은 게임메이커의 스크립트 언어이며, GUI방식이 아닌 일반적인 프로그래밍 언어의 형태로 게임을 확장하거나 제어를 할 수 있다. GML은 문법은 C, C++, 파스칼 등과 비슷하지만, 다른 언어에 기반을 두지 않은 하나의 독립적인 언어이다. GML은 라이브러리 메이커를 통해서 액션을 제작할 수 있으며, 게임메이커 상의 코드 부분과 스크립트 부분을 통해서 사용할 수 있다. GML은 컴파일러가 아닌 인터프리터이다. 게임을 실행할 때마다 내장 인터프리터가 GML 코드를 해석한다. 인터프리터이기 때문에 C++이나 델파이 등의 컴파일러보다 일반적으로 낮은 것이다. GML 또한 DLL을 로드하고 사용하는 기능을 지원하고 있다. 이것을 사용하면 C++, 델파이, 파스칼과 같은 다른 프로그래밍 언어로 작성한 함수와 루틴을 사용할 수 있다.

다음은 GML을 사용한 코드의 예이다.

```
// This is a comment
/\* this is a C-Style comment. \*/

/\* temporary variable declaration.
 A temporary variable will be released at the end of a script.
 Note that this doesn't declare it to be of a specific type! \*/

var xx, yy, nn;

// A conditional. It can also be shortened to "if (can\_shoot)".
if (can\_shoot = true) // "=" and "==" can be used interchangeably in conditionals
{ // This begins a block of code. You can also use "begin" as with Pascal.

 /\* Here we are setting the variable to false. This could also be written as "can\_shoot = 0;"
 since GameMaker only has real values. \*/
 can\_shoot = false;

 /\* Here you are setting the 0th alarm to five steps. The alarm
 variable will automatically count down to 0, and when it hits 0,
 the alarm0 event will be triggered. \*/
 alarm[0] = 5;

 /\* Here the temporary variable xx is defined implicitly as an integer,
 and the lengthdir\_x function is used. \*/
 xx = x + lengthdir\_x(14, direction);
 yy = y + lengthdir\_y(14, direction);

 //This function creates an obj\_bullet and then returns its instance id to nn.
 nn = instance\_create(xx, yy, obj\_bullet);

 /\* The with statement allows you to access the fields of an object directly,
 without having to write statements like nn.speed or nn.direction. \*/
 with (nn)
 {
 speed = obj\_tank.speed + 3;
 direction = obj\_tank.direction;
 }
}

```

### 확장 패키지

확장 패키지(Extension Package)는 게임메이커 전용 DLL이나 전용 확장 파일 (DLL, 라이브러리, GML 스크립트 및 기타 파일)을 지원한다. 따라서 사용자는 GML및 C++와 같은 컴파일러 언어를 사용하여 프로그램에 새로운 기능을 추가할 수 있다.

구성 요소
-----

### 스프라이트

스프라이트(Sprite)는 컴퓨터의 그래픽, 즉 이미지를 가리킨다. 주인공과 적의 모습 등 화면에 나타나는 모든 이미지를 스프라이트라고 한다. 단 백그라운드(배경)는 예외이다.
### 사운드

사운드(Sound)는 배경음이나 게임 효과음 등 게임에 들어갈 모든 소리를 일컫는 말이다. 간단하게 탐색기로 파일을 불러와 사용할 수 있는 방식이다. 플레이어가 걷는 소리, 적이 쓰러지는 소리와 배경 음악 등 게임에 들어가는 모든 소리들은 사운드에 해당한다.
### 백그라운드

백그라운드(Background)는 게임 배경 이미지로, 예를 들면 숲에서 모험을 하는 게임을 만들려면 백그라운드를 숲으로, 무섭게 하려면 백그라운드를 어둡게 하는 등 게임의 이미지나 분위기를 좌우한다. 룸에서 설정할 수 있으며, 개별적으로도 설정할 수 있다. 룸에서는 일반 백그라운드와 타일로 나뉘게 된다. 이 백그라운드의 기본색은 회색이다.
(현재 게임메이커 스튜디오2에서는 백그라운드라는 요소가 사라졌다.)
### 패스

패스(Path)는 오브젝트의 이동 경로를 간편하게 지정해주는 역할을 한다. 클릭으로 간편하게 오브젝트의 경로를 만들 수 있다.
### 스크립트

스크립트(Script)는 게임메이커의 내장 언어인 GML을 이용하여 작성할 수 있고, 일반적인 프로그래밍 언어의 함수와 비슷한 역할을 한다.
### 폰트

폰트(Font)는 게임에서 나타날 글자의 글꼴이다. 게임메이커는 한글을 지원하지 않기 때문에 영문 글꼴을 주로 사용한다. 후에 스크립트에서 사용이 가능하다.
### 타임 라인

타임 라인(Time line)은 프레임 단위로 이벤트를 설정할 수 있다, 알람(Alarm)과 흡사하지만, 보다 복잡한 설정이 필요할 때 사용할 수 있다.
### 오브젝트

오브젝트(Object)는 해당 스프라이트를 선택하고 그 스프라이트가 어떻게 행동할지를 관할한다. 오브젝트는 이벤트로 이루어지고, 이벤트는 액션으로 이루어진다. 액션은 이벤트 안에 들어가는 세세한 행동의 구분을 일컫는다. 플레이어의 움직임과 적의 움직임, 공격이나 스킬도 모두 액션이 이용된다. 플레이어를 만들려면 오브젝트를 하나 만들고, 거기에 플레이어의 이미지에 해당하는 스프라이트를 지정해준 다음, 이벤트와 액션을 집어넣어 완성시킨다. 또한 마스크나 부모 설정을 할 수 도 있다.
### 룸

룸(Room)은 오브젝트들이 활동할 공간을 말한다. 하나의 맵 같은 존재인데, 예를 들면 포탈로 두 개의 룸을 이을 수도 있고 클릭으로 룸을 이동시킬 수도 있다. 뷰나 백그라운드, 룸의 크기등을 부가적으로 설정할 수 있다.
### 타일 셋

타일 셋(tile set)은 타일들을 추가하는 곳이다. 현재 게임메이커 스튜디오2에서만 있으며 말 그대로 타일 설정이다. 게임메이커 스튜디오2를 제외한 게임메이커에서는 타일 기능은 스프라이트에 포함되어 있다.

포팅
--

### 매킨토시 버전

2008년에 샌디 던칸(Sandy Duncan)은 맥 OS X용 게임메이커를 개발 중임을 선언하였다. 이 포팅은 기술적인 이유로 여러 번 지연되었다. 특정한 버전을 통해 개인 베타 테스트로 사용할 수 있게 되었다.

2009년 12월 4일 요요 게임즈의 맥 개발자가 일을 그만두었으나 2010년 1월 27일에 재개되었다.

2010년 4월 14일에 맥 버전을 위한 출시 후보 버전이 출시되었다.

2010년 8월 11일에 요요 게임즈는 요요 게임즈 앱스토어라는 새로운 매킨토시 게임 허브와 더불어 맥용 게임메이커 7을 출시하였다.

### 플레이스테이션 포팅 버전

2010년 3월 10일에 요요 게임즈 CEO 샌디 던칸은 플레이스테이션 포터블 시스템용으로 출시될 예정인 새로운 버전의 게임메이커를 발표하였다.

### iOS 버전

2010년 9월 24일에 요요 게임즈는 애플 아이팟, 아이폰, 아이패드와 호환되는 iOS 버전을 만든다고 발표하였다. 그러나 2011년 1월 5일 요요 게임즈는 공식적인 중단에 대하여 글로그(Glog)에 글을 올렸다.

### 안드로이드 버전

요요 게임즈 스토어는 사용자들이 구글 안드로이드로 포팅할 수 있게 허용하였다.

### HTML5 버전

요요 게임즈는 실행기가 HTML 5에서도 동작한다고 발표하였다.

### 타이젠 버전

요요 게임즈는 삼성이 개발한 OS 인 타이젠으로도 포팅을 할 수 있게 하였다.

비 윈도 계열에서의 게임메이커로 제작된 게임 포팅
---------------------------

요요 게임즈는 게임메이커로 제작된 게임을 윈도나 OS X용이 아닌 타 운영 체제에서 제작된 게임을 이용할 수 있게 게임메이커 스튜디오가 나오기 전부터 이러한 것을 진행해왔으며, 그러한 것이 개인이 가능하게 된 게임메이커 스튜디오가 출시 된 이후에도 요요 게임즈는 신청자에 한해 포팅을 진행 중이다. 다만, 본인의 개발자 계정으로는 올릴 수 없으며 YoYoGames의 이름으로만 올려야 한다. 일부는 광고가 붙을 수 있으며, 요요 게임즈와의 협의 후 수수료를 내고 본인이 유료로 게임을 팔 수 있다.

대한민국에서의 게임메이커 이용
----------------

게임메이커는 타 소프트웨어와 비교하여 쉬운 도구이면서도 여러 기능을 지원하여 이것을 이용하여 많은 사람들이 게임을 만들게 되었다. 그런 게임메이커를 전문적으로 다루는 카페 또한 여러 등장하였다. 이를테면 네이버 대표카페로 선정된crazy gamemakers나 Play GM등이 있다.