시리즈:게임제작에 입문하려는 히치하이커를 위한 안내서/게임메이커스튜디오 액션

게임메이커: 스튜디오는 GML이라는 자체 프로그래밍 언어를 제공하지만, 더 쉽고 직관적으로 사용 가능한 액션만으로도 게임을 만들 수 있을 정도로 정리가 매우 잘 되어있습니다. 하지만 아는 것이 곧 힘이죠. 게임메이커: 스튜디오에서 제공하는 기본적인 액션들은 어떤 게 있는지 알아보아요.

이벤트 조건[편집 | 원본 편집]

이벤트 조건
아이콘 영문 번역 설명
Create 생성 시 인스턴스가 만들어지는 순간 발동합니다. (인스턴스가 뭔지는 앞에서 설명했어요!)
룸에 배치된 오브젝트도 해당 룸에 들어가는 순간 인스턴스를 생성한 것으로 취급합니다.
Destroy 삭제 시 인스턴스가 삭제되는 순간 발동합니다.
생성된 인스턴스는 Destroy Instance 액션으로 삭제가 가능합니다.이 기능이 없다면 무한히 만들어지는 인스턴스 때문에 컴퓨터가 뻗겠죠?
Alarm 알람 인스턴스별로 지정된 알람이 울릴 경우 발동합니다.
알람설정은 Set Alarm 기능으로 지정이 가능합니다. 초 단위가 아니라 스텝 단위로 계산합니다! (스텝에 관해서도 앞에서 설명했어요!)
Step 스텝 매 스텝마다 반복합니다.
스텝 이벤트에는 세 가지가 있습니다. Step, Begin step, End step이 있는데요, 모든 인스턴스에 지정된 스텝 이벤트는 한 스텝 안에서 동시에 일어납니다. 하지만, 특별히 먼저 또는 나중에 실행되어야하는 액션이 있다면 Begin 또는 End를 골라주시면 됩니다. 이거 골라도 결국 한 스텝 안에서 실행되는 건 동일합니다!
Collision 충돌 시 선택한 다른 오브젝트의 인스턴스와 충돌하는 순간 발동합니다.
충돌이 계속 유지될 경우에는 이것도 한 스텝마다 반복해요. 한 번하고 끝이 아니에요!
Solid 옵션이 켜져있는 오브젝트는 접촉했을 때, 꺼져있는 경우는 겹쳐졌을 때 충돌했다고 인식해요.
Keyboard 키보드를 누르는 동안 선택한 키를 누르는 동안 매 스텝마다 반복합니다.
Mouse 마우스를 누르는 동안 마우스는 누르면 엄청나게 많은 선택 항목이 있어요. 기본적으로 이 액션은 인스턴스 안에 마우스가 있는 상태에서의 클릭에만 작동해요.
접미사가 없는 건 누르는동안 스텝마다 반복하는 것을 의미해요.
pressed는 마우스를 누르는 순간 딱 한번 실행돼요.
released는 마우스를 떼는 순간 딱 한 번 실행돼요.
enter는 마우스의 클릭과 상관없이 인스턴스의 충돌 범위 안에 마우스가 들어오면 돼요.
leave는 반대로 충돌 범위에서 나가있을 경우 실행돼요.
Global mouse는 인스턴스의 충돌 범위 밖에서 눌러도 실행되도록 설정하는 것이에요.
others 기타 그 외의 조건들을 모아두었어요. 딱히 어려운 단어는 없을 거예요!
Draw 드로우 기본적으로 Step과 같아요. 하지만, 이게 따로 있는 이유는, 화면에 무언가를 표시하는 액션은 드로우 이벤트 안에 있어야만 작동하기 때문이에요. 그런 액션들은 액션 아이콘 틀이 녹색으로 되어있어요. Draw GUI는 위치의 기준을 실시간으로 현재 보고있는 화면의 왼쪽 상단 끝으로 맞춰주는 기능이에요.[1]
Key Press 키보드를 누를 때 Press가 뭔지는 마우스에서 선택했으니 넘어갈게요.
Key Release 키보드를 땔 때 Release가 뭔지도 이미 설명했어요!
Asynchronous 비동기 선언 게임메이커: 스튜디오 자체로 작동이 불가능한 조건이에요. 게임 밖에서 무언가 게임에게 간섭하는 경우에만 이 이벤트를 사용할 수 있어요. 그러니까 리브레 게임즈 달고 스팀에 팔 정도가 되어야 쓸 일이 생겨요! 일반적으로 쓸 일은 없습니다.


액션[편집 | 원본 편집]

액션을 설정할 때 위에 보면 Self, Other, Object 라는 말이 있습니다. 이건 적용대상 이에요.

move 탭[편집 | 원본 편집]

Move
아이콘 영문 번역 인자
출력
설명
아이콘 Move Fixed 고정이동 directions(방향/a), speed(실수/b), Relative(스위치/c)
매 스텝마다 a의 방향으로 b만큼 c에 따라 이동합니다.
기본적인 이동 명령입니다. 직관적인만큼 방향도 한정되어 있습니다. 이동하는 거리는 픽셀 단위입니다.
중요! Relative가 켜져있다면 기존의 이동속도와의 벡터합이 출력됩니다. 꺼져있다면 기존의 이동을 멈추고 [2] 이동해요.
아이콘 Move Free 자유이동 direction(실수/a), speed(실수/b), Relative(스위치/c)
매 스텝마다 a의 방향으로 b만큼 c에 따라 이동합니다.
위의 고정이동과 같지만, 방향 설정이 굉장히 자유로워졌습니다. 방향의 기준은 x축이며, a의 단위는 호도법이 아닌 육십분법으로 나타냅니다.[3]
아이콘 Move Towards 목표이동 x(실수/x), y(실수/y), speed(실수,a), Relative(스위치/b)
자신의 위치에서 (x,y)로 향하는 방향으로 매 스텝 a씩 이동합니다.
x와 y에는 다른 오브젝트의 좌표로 설정하는 것도 가능합니다.(오브젝트 이름.x와 오브젝트 이름.y로 하면 돼요!) 참고로 x,y 수치가 바뀌어도 방향이 바뀌지는 않습니다. 이 액션이 실행된 당시의 방향으로 고정돼요.[4] 이 이벤트의 Relative는 다른 이동류 액션과는 달라요! 어려우니까사실 잘 모르니까</def> 넘어갈게요.
아이콘 Speed Horizontal 수평이동 hor. speed(실수/a), Relative(스위치/b)
매 스텝마다 우측방향으로 a만큼 이동합니다.
자유이동에서 방향을 0으로 한 것과 같아요.
아이콘 Speed Vertical 수직이동 vert. speed(실수/a), Relative(스위치/b)
매 스텝마다 아래 방향으로 a만큼 이동합니다.
자유이동에서 방향을 270(=-90)으로 한 것과 같아요.
아이콘 Set Gravity 중력설정 direction(실수/a), gravity(실수/b), Relative(스위치/c)
매 스텝마다 a의 방향으로 b의 가속도가 적용됩니다.
이름은 중력이지만, 사실은 가속도입니다. 지금까지는 전부 일정한 속도였고, 가속도를 구현하기 위해서는 계속해서 속도를 더해줘야 했습니다만, 이 액션을 사용한다면 매우 간편해지죠. 매 스텝마다 가속도만큼 속도가 증가한다고 보면 됩니다.
아이콘 Reverse Horizontal 수평반전 없음
가로방향의 이동속도를 반전시킵니다.
세로로 서있는 벽에 공이 부딪힌다면 어떻게 될까요? 세로로 이동하는 방향은 그대로인데 가로로 이동하는 방향은 튕겨나지요. 속도를 x축 속도 y축 속도로 나누었을 때에 x축 속도에 -1을 곱하는 것과 같습니다. 말 그대로예요.
아이콘 Reverse Vertical 수직반전 없음
세로방향의 이동속도를 반전시킵니다.
이미 다 설명했어요!
아이콘 Set Friction 마찰설정 friction(실수/a), Relative(스위치/b)
오브젝트의 속도를 매 스텝 a만큼 줄입니다.
중력은 방향을 가진 가속도라면, 마찰은 방향이 없는 가속도예요. 중력은 가속도를 방향을 줘서 준다면, 마찰은 방향이 무조건 현재 이동방향의 반대방향이에요.
Jump
아이콘 영문 번역 인자
출력
설명
아이콘 Jump to Position 좌표 점프 x(실수/x), y(실수/y), Relative(스위치/a)
x,y로 이동합니다.
위의 이동과는 달라요! Move는 매 스텝 ~속도로 이동 이라면, Jump는 순식간에 위치로 이동 이에요. 캐릭터의 이동에는 Move를 쓸 것 같지만, 단순한 게임에서는 이 좌표 점프가 더 좋아요. Relative를 켜면 중심이 자기 자신이 되기 때문에, 여기서 x에 3을 넣는다면? 오른쪽으로 3만큼 가게 되는 거예요. 매 스탭마다 반복하게 한다면 속력 구현도 가능하겠죠?
아이콘 Jump to Start 시작 점프 없음
해당 인스턴스가 생성된 지점으로 이동합니다.
리셋! 자세한 설명은 생략합니다. 인스턴스가 뭔지는 앞에서 설명했어요!
아이콘 Jump to Random 무작위점프 snap hor(실수/a), snap vert(실수/b)
룸을 세로 a, 가로 b의 격자로 쪼갠 뒤, 격자가 교차하는 지점 중 무작위 지점으로 이동합니다.
단위는 픽셀입니다. 써본 적이 없어서 설명을 못하겠네!
아이콘 Align to Grid 격자정렬 snap hor(실수/a), snap vert(실수/b)
룸을 세로 a, 가로 b의 격자로 쪼갠 뒤, 격자가 교차하는 지점 중 가장 가까운 곳으로 이동합니다.
단위는 픽셀입니다. 써본 적이 없어서 설명을 못하겠네!
아이콘 Wrap Screen 화면연결 direction(선택지/a)
a방향으로 화면을 이어줍니다.
설명이 이상한데, 위쪽 끝까지 가면 아래쪽으로 다시 나타나는 거예요. 당연하겠지만 이동하는 오브젝트가 아니라 그 룸의 다른 시스템 오브젝트로 해주는 게 좋아요.
아이콘 Move to Contact 접근이동 direction(실수/a), maximum(실수/b), against(선택지/c)
c에 해당하는 존재와 b 이하의 속도로 부딪힌 경우, b만큼 이동방향의 반대방향으로 움직인 다음, 속도를 0으로 하고, a의 방향으로 그 존재와 닿을 때까지 가까워집니다.
뭐래는거야 말하자면, 땅에 캐릭터가 박혀버리는 것을 방지하는 액션입니다. 캐릭터가 박혀버리면, 다시 밀어내고, 안 박히겠금 가깝게 옮겨주는거죠.
아이콘 Bounce 반동설정 precise(선택지/a), against(선택지/b)
이동중에 b에 해당하는 인스턴스와 만날경우 튕겨납니다.
입사각과 반사각은 쉬운 과학에서 알아보아요. 참고로 precise에서 not precisely를 선택하면 부딪힐 때 사각형과 부딪힌 것으로 판정합니다. 반대의 경우에는 설정해둔 마스크에 부딪힌 것으로 판정하죠.
paths
아이콘 영문 번역 인자
출력
설명
아이콘 Set Path 경로설정 path(패스/a), speed(실수/b), at end(선택지/c), relative(선택지/d)
오브젝트가 a를 b의 속도로 실행하며, 끝난 경우 c를 합니다. d가 absolute인 경우 a의 시작점으로 점프한 후 실행합니다.
path는 경로입니다. 미리 어떻게 움직일지 경로를 짜두고 쓰시면 됩니다.
아이콘 End Path 경로종료 없음
현재 실행중인 path를 종료합니다.
말그대로입니다.
아이콘 Path Position 경로위치 position(실수/a), Relative(스위치/b)
path상의 a 시점부터 시작합니다. b가 꺼져있다면 a 시점의 위치로 점프한 후 시작합니다.
path의 시점을 조종합니다. a의 범위는 0에서 1 사이에요! 0일 때 시작하는 시점, 1일 때 끝나는 시점이에요. 조심하세요!
아이콘 Path Speed 경로속도 speed(실수/a), Relative(스위치/b)
현재 실행중인 경로의 속도를 a로 바꿉니다.
말그대로에요.
steps
아이콘 영문 번역 인자
출력
설명
아이콘 Step Towards 목표추적 x(실수/x), y(실수/y), speed(실수/a), stop at(선택지,b)
(x,y)방향으로 a의 속도로 이동합니다. 이동 중에 b를 만난 경우 이동을 멈춥니다.
위의 목표이동(move towards)에 부딪히면 취소 기능이 추가되었어요. b는 solid인지 all인지를 고르는 거예요. solid는 앞에서 설명했어요!
아이콘 Step Avoid 목표회피추적 x(실수/x), y(실수/y), speed(실수/a), avoid(선택지,b)
(x,y)방향으로 a의 속도로 이동합니다. 이동 중에 b를 피합니다.
엄청 똑똑한 AI가 되어버렸어요. 목표 이동에 회피가 추가된 액션이에요. 본질적으론 목표추적과 같은데, 이건 아예 피해서 가버려요.

main1 탭[편집 | 원본 편집]

Objects
아이콘 영문 번역 인자
출력
설명
아이콘 Create Instance 인스턴스 생성 object(선택지/a), x(실수/x), y(실수/y), Relative(스위치/b)
(x,y)위치에 a의 인스턴스를 만듭니다.
오브젝트는 설계도, 인스턴스는 제품. 기억하시죠?
아이콘 Create Moving 이동중인 인스턴스 생성 object(선택지/a), x(실수/x), y(실수/y), speed(실수/b), direction(실수/c), Relative(스위치/d)
(x,y)위치에 c의 방향으로 매 스텝 b만큼 이동하는 a의 인스턴스를 만듭니다.
생성과 동시에 움직여요. 총알 같은 걸 만들 때 유용하겠죠?
아이콘 Create Random 무작위 인스턴스 생성 object1(선택지/a), object2(선택지/b), object3(선택지/c), object4(선택지/d), x(실수/x), y(실수/y), Relative(스위치/e)
(x,y)위치에 a~d중 하나의 인스턴스를 만듭니다.
사실 확률 조정도 안 되는 만큼 차라리 코드로 구현하는 게 더 나을 수도 있어요.
아이콘 Change Instance 인스턴스 변경 change into(선택지/a), perform events(선택지/b)
인스턴스를 다른 오브젝트의 인스턴스로 바꿉니다. b가 yes일 경우, 인스턴스 생성으로 취급됩니다.
인스턴스 생성으로 취급한다는 말은, 인스턴스 생성 시에 있는 액션들이 발동한다는 뜻입니다.
아이콘 Destroy Instance 인스턴스 파괴 없음
이 인스턴스를 파괴합니다.
짧고 강한 액션입니다. 말 그대로 없애버려요. 이 액션이 발동하면 해당 인스턴스는 파괴 시 액션을 수행하고 없어집니다.
아이콘 Destroy at Position 원격 파괴 x(실수/x), y(실수/y), Relative(스위치/a)
(x,y) 위치에 있는 모든 인스턴스를 파괴합니다.
x,y에 중심이 있는 인스턴스가 아니라, x,y를 마스크로 덮는(충돌 범위와 비슷한 겁니다) 인스턴스는 전부 삭제해버립니다.
Sprite
아이콘 영문 번역 인자
출력
설명
아이콘 Change Sprite 스프라이트 변경 sprite(선택지/a), subimage(실수/b), speed(실수,c)
인스턴스의 스프라이트를 a 스프라이트의 b프레임으로 바꿉니다. b가 -1일 경우, 인스턴스의 스프라이트는 a를 c로 재생하는 애니메이션이 됩니다.
스프라이트에 프레임이 없이 단순한 그림 파일이라면 subimage를 0으로 두면 됩니다. subimage와 speed는 애니메이션을 다룰 때만 사용합니다.
아이콘 Transform Sprite 스프라이트 변형 xscale(실수/a), yscale(실수/b), angle(실수/c), mirror(선택지/d)
인스턴스의 스프라이트를 가로 a배, 세로 b배만큼 키우고, c만큼 반시계 방향으로 회전시키며, d로 반전시킵니다.
출력이 깁니다만, 어렵지는 않습니다. 간단하게 스프라이트를 변형시킵니다.
아이콘 Color Sprite 스프라이트 색칠 color(웹컬러/a), alpha(실수/b)
인스턴스의 스프라이트를 a로 덧칠한 뒤에 b만큼만 불투명하게 합니다.
alpha는 이미지의 투명도를 다루는 변수인데요, 범위는 0<=alpha<=1이에요. 1일 경우 완전 불투명하고요, 0일 경우 완전 투명해져서 안보이게 돼요.
sounds
아이콘 영문 번역 인자
출력
설명
아이콘 Play Sound 사운드 재생 sound(선택지/a), loop(선택지/b)
a를 재생하고, 끝날 경우 b합니다.
b가 true일 경우, 노래가 끝나면 처음부터 다시 재생합니다.
아이콘 Stop Sound 사운드 종료 sound(선택지/a)
a가 재생중이라면 정지합니다.
말그대로입니다.
아이콘 Check Sound 사운드 조건문 sound(선택지/a) NOT(스위치/b)
a가 재생 중이라면 바로 아래의 액션을 실행합니다. b가 켜져있을 경우에는 a가 재생 중이 아니어야만 실행합니다.
이번 액션 아이콘은 다른 아이콘들과는 달리 팔각형으로 되어있습니다. 이런 액션들은 조건문 액션이라고 합니다. 조건문 액션은 현재 게임에서 어떤 일이 벌어지고 있는지를 확인하고, 설정한 조건이 맞다면 바로 아래에 있는 액션 하나를 실행합니다. 당연히, 아니라면 바로 앞의 액션은 무시하고 더 밑의 액션을 실행하게 됩니다. control 탭에서 더 자세히 알아보자구요!
Rooms
아이콘 영문 번역 인자
출력
설명
아이콘 Previous Room 이전 룸 없음
이전 룸으로 이동합니다.
여기서 룸 순서는 게임메이커: 스튜디오에서 왼쪽에 나오는 디렉토리상의 순서입니다.
아이콘 Next Room 다음 룸 없음
다음 룸으로 이동합니다.
여기서 룸 순서는 게임메이커: 스튜디오에서 왼쪽에 나오는 디렉토리상의 순서입니다.
아이콘 Restart Room 룸 초기화 없음
현재 룸을 초기상태로 만듭니다.
룸을 초기화해버립니다. 당연히, 모든 인스턴스가 사라지겠죠. Persistent가 켜져있는 오브젝트의 인스턴스는 그대로겠지만, 이 룸에 있는 Persistent 오브젝트의 경우 인스턴스를 새로 만듦으로써 초기화가 됩니다.
아이콘 Different Room 다른 룸 new room(선택지/a)
룸 a로 이동합니다.
스테이지 관리할 때 쓸만하겠죠.
아이콘 Check Previous 이전 룸 조건문 없음
이전 룸이 존재한다면 바로 아래의 액션을 실행합니다.
조건문입니다. 그냥 디렉토리 상에 위에 룸이 있으면 작동합니다.
아이콘 Check Next 다음 룸 조건문 없음
다음 룸이 존재한다면 바로 아래의 액션을 실행합니다.
조건문입니다. 이건 디렉토리 상에 아래에 룸이 있다면 작동하겠죠.

main2 탭[편집 | 원본 편집]

Timing
아이콘 영문 번역 인자
출력
설명
아이콘 Set Alarm 알람 생성 number of steps(실수/a), in alarm no(선택지/b)
a스텝 후에 b알람을 작동합니다.
이벤트 조건에 알람, 기억하시나요? 이 액션으로 알람을 조건으로 하는 액션들을 실행할 수 있습니다.
아이콘 Set Time Line 타임라인 설정 time line(선택지/a), position(실수/b), start(선택지/c), loop(선택지/d)
타임라인 a를 b까지 수행한 상태로 대기시킵니다.
대기가 중요합니다. 게임메이커: 스튜디오에서 한번에 다룰 수 있는 타임라인은 오직 하나입니다. 그 타임라인을 지정하는 액션이 바로 이것입니다. 타임라인을 지정하는 것은 그래서 이 액션만이 가능합니다. 물론, 대기시킴과 동시에 타임라인 실행도 가능한데요, c를 Start immediately로 설정하면 됩니다. d의 경우 타임라인이 끝날 경우 루프할 것인지를 설정하는 인자입니다.
아이콘 Time Line Position 타임라인 위치 position(실수/a), Relative(스위치/b)
현재 설정된 타임라인의 진행시간을 a로 바꿉니다.
Path랑은 다르게, 여기서 position은 절대적인 시간이에요. 패스는 전체 길이에서 a만큼 곱하는 방식이었기에 0<=a<=1이었던거 기억하나요? 타임라인은 Step이라는 단위시간에 따라 움직이기 때문에, 여기서의 위치도 Step 수가 돼요.
아이콘 Time Line Speed 타임라인 속도 speed(실수/a), Relative(스위치/b)
타임라인의 step이 통상 게임 step의 a배만큼 짧아집니다.
설명이 좀 어렵나요? a가 2라면 통상 게임에 비해 타임라인의 step이 1/2이 되고, 그래서 step이 2배로 빠르게 흐르기 때문에 타임라인의 재생속도도 2배로 빨라진다는 것을 의미해요. 그러니까, 게임에서의 시간의 a배만큼 빨라진다구요.
아이콘 Start Time Line 타임라인 실행 없음
타임라인을 재생합니다.
타임라인은 동시에 1개만 재생이 가능하기 때문에 설정은 따로 한다고 앞에서 말했어요! 여러 가지 이유로 멈춘 타임라인을 다시 재생해요. 중간에서부터 재생도 가능해요.
아이콘 Pause Time Line 타임라인 일시정지 없음
재생중인 타임라인을 일시정지합니다.
진행정도를 기억하고 일시정지시켜요. 그렇기 때문에 다시 타임라인을 재생한다면 일시정지된 시점부터 작동하겠죠?
아이콘 Stop Time Line 타임라인 정지 없음
타임라인을 정지하고 0 스텝으로 되돌립니다.
타임라인을 정지시킴과 동시에 초기화해요. 즉, 정지하고 재생하면 처음부터 재생돼요. 사실 정지에는 멈추고 0으로 되돌린다는 뜻이 같이 있잖아요?
Info
아이콘 영문 번역 인자
출력
설명
아이콘 Display Message 대화상자 message(문자열,a)
a라고 적힌 대화상자를 띄웁니다.
뭐 윈도우에서 에러 나면 뜨는 대화상자 있잖아요? 그거예요. '나 "를 앞에 두면 대화상자 아이콘이 달라지고, #은 개행이에요. #을 쓰고싶다면 \#이라고 쓰면 돼요.
아이콘 URL Open 외부 링크 URL(문자열,a)
a로 향하는 웹사이트를 엽니다.
이 명령어를 쓰면 웹 사이트가 열려요. 여기서 URL에는 되도록 정확한 주소를 써주는게 좋아요.왜인지 몰라도 도움말에서는 하라네요
Game
아이콘 영문 번역 인자
출력
설명
아이콘 Restart Game 게임 재시작 없음
게임 전체를 초기화합니다.
아예 초기화가 되어버려요. 기존에 게임 내에 있었던 모든 인스턴스까지도 전부 삭제되고 초기화가 돼요. 모든 룸 별로 Restart Room을 먹이는 수준이죠. 단판으로 끝나는 게임이 아닌 이상 사용할 때는 조심하셔야해요.
아이콘 End Game 게임 종료 없음
게임을 종료합니다.
게임을 종료해요.
중요! : HTML5 의 모듈을 사용하는 게임은 이 액션을 사용하면 웹은 꺼지지 않아요.
더더더더더더 중요! : 정말 중요하기에 더를 6개나 붙였습니다. iOSWindows Phone을 플랫폼으로 사용하는 게임이라면 결코 써서는 안 되는 액션이에요. 저 두 가지 플랫폼에서 이 액션이 실행될 경우 기기에 심각한 오류가 발생해 아예 벽돌로 만들어버리는 경우도 있어요.최종병기 게임종료 이 액션이 사용되는 게임은 앱 스토어에도 올릴 수가 없도록 규정되어 있으므로 꼭 알아두세요![5]
아이콘 Save Game 게임 저장 file name(문자열/a)
현재 게임 상태를 저장한 파일을 a라는 이름으로 프로젝트 폴더에 저장합니다.
아이콘 Load Game 게임 불러오기 file name(문자열/a)
a에 저장된 게임 상태를 불러옵니다.
게임 저장은 필수인 만큼 꼭 필요한 액션이라고 생각할 수도 있습니다. 하지만 게임메이커: 스튜디오는 다양한 가능성을 위해 특화된 장르가 없습니다. 그렇기 때문에 아예 통째로 현 상태를 저장해버립니다. 실제로 필요한 정보에 비해 쓸데없이 더 많은 정보가 저장되는데다가, 여러 가지가 누락되는 경우도 많습니다. 또한 아무리 이걸 선언해도 현재 스텝의 마지막에 이루어지기 때문에, 저장된 게임을 불러와도 기존에 있었던 인스턴스의 액션이 실행되는 경우가 있습니다. 그렇기 때문에 대부분의 사람들은 이 액션보다는 새로운 저장 시스템을 만듭니다.
Resources
아이콘 영문 번역 인자
출력
설명
아이콘 Replace Sprite 스프라이트 대체 sprite(선택지,a), filename(문자열,b), image(실수,c)
b를 세로로 c분할한 뒤 프레임으로 만들고 a를 대체합니다.
아이콘 Replace Background 백그라운드 대체 background(선택지,a), filename(문자열,b)
b로 a를 대체합니다.
기본적으로 리소스들은 프로그램 안에 내장합니다. 하지만, 이것을 이용하면 리소스들을 따로 분리함으로서 프로그램의 용량을 낮추고, 로컬에 있는 리소스들을 불러와서 쓸 수 있습니다.
중요 : 해당 리소스가 작동중인 상태에서 다른 로컬 리소스로 대체할경우 에러가 납니다. 절때로 하지마세요!

control 탭[편집 | 원본 편집]

Questions
아이콘 영문 번역 인자
출력
설명
아이콘 Check Empty 공백 조건문 x(실수,x), y(실수,y), objects(선택지,a), Relative(스위치,b), NOT(스위치,n)
a에 해당하는 인스턴스가 (x,y)에 단 하나도 존재하지 않으면 바로 아래의 액션을 실행합니다.
본격적으로 조건문이 나오는 탭입니다. 특히, Questions의 아홉 가지 액션은 전부 다 조건문이에요. 모든 조건문에는 NOT 인자가 따라오는데요, 이걸 체크하면 결과가 반전이 돼요. 조건을 만족하지 않으면 실행하는 거죠. 뒤에 있는 조건문들에는 NOT에 대한 설명을 생략할게요. 이 조건문은 해당하는 위치에 없을 때만 실행됩니다.
아이콘 Check Collision 충돌 조건문 x(실수,x), y(실수,y), objects(선택지,a), Relative(스위치,b), NOT(스위치,n)
a에 해당하는 인스턴스가 (x,y)에 하나라도 존재하면 바로 아래의 액션을 실행합니다.
바로 위의 공백 조건문과 정반대입니다. 해당하는 위치에 있으면 실행이 되죠.
아이콘 Check Object 오브젝트 위치 조건문 object(선택지,a), x(실수,x), y(실수,y), Relative(스위치,b), NOT(스위치,n)
a의 인스턴스가 (x,y)에 하나라도 존재하면 바로 아래의 액션을 실행합니다.
위의 두 조건문은 오브젝트의 종류를 정합니다. 고체화 오브젝트인지, 모든 오브첵트인지를 결정하죠. 하지만, 이 조건문은 특정 오브젝트인지를 확인합니다.
아이콘 Test Instance Count 오브젝트 갯수 조건문 object(선택지,a), number(실수,b), operation(선택지,c), NOT(스위치,n)
현재 룸 안에 a의 인스턴스가 b를 c하면 바로 아래의 액션을 실행합니다.
특정 오브젝트의 인스턴스입니다. 이걸로, 현재 주인공이 살아있는지 죽었는지도 확인할 수 있겠죠? 앞으로 operation 인자가 많이 등장할 건데, 여기서 각각의 뜻을 알아두고 가요.
  • equal to : 동격
  • smaller than : 미만
  • Larger than : 초과
아이콘 Test Chance 확률 조건문 sides(실수,a)
한 면만이 당첨인 a각 주사위를 던진다고 가정하였을때, 당첨인 경우 바로 아래의 액션을 실행합니다.
1/a확률로 액션이 실행된다는 의미입니다. 사실 이것보다는 직접 코드로 rand() 써주는게 낫긴 합니다.
아이콘 Check Question 의문 조건문 question(문자열/a)
a와 "예"와 "아니오"로 된 대화상자를 띄우고, "예"를 클릭한 경우 바로 아래의 액션을 실행합니다.
대화상자는 앞에서 말했으니까 생략할게요.
아이콘 Test Expression 수식 조건문 expression(수식/a)
a를 실행한 결과가 참일경우 바로 아래의 액션을 실행합니다.
이건 좀 중급자용 액션입니다. 참고로, 값이 0.5 이상이라는 뜻과 같습니다.
아이콘 Check Mouse 마우스 조건문 button(선택지/a)
a를 누르는 중이라면 바로 아래의 액션을 실행합니다.
말 그대로입니다.
아이콘 Check Grid 격자 조건문 snap hor(실수,a), snap vert(실수,b)
룸을 세로 a, 가로 b의 간격을 가지는 격자로 가정하였을 때, 대상 인스턴스의 중심이 격자와 겹치는 경우에 바로 아래의 액션을 실행합니다.
팩맨을 생각해보세요. 사실 뭐라고 해야할지 모르겟어요.
Other
아이콘 영문 번역 인자
출력
설명
아이콘 Start Block 시작블록 없음
End Block 끝블록 없음
시작블록과 끝블록 사이에있는 모든 액션을 묶습니다.
조건문이 참인 경우에는 단 하나의 액션만 실행된다는 것 기억하시나요? 하지만, 여러 개를 한번에 실행하고 싶을때는 이 블록을 사용하면 됩니다. 조건문 바로 밑에 시작블록을 놓는다면, 참인 경우 끝블록까지의 모든 액션을 실행합니다. 당연한 말이지만, 시작블록을 놓았다면 반드시 끝블록으로 끝내주셔야 합니다.
아이콘 Else 부정 조건문 없음
조건문 아래에 있는 액션 밑에만 놓을 수 있습니다. 해당 조건문이 거짓인 경우 바로 아래에 있는 액션을 실행합니다.
if ~ else ~ 같은 느낌으로 기억하시면 됩니다. if 2개 쓰면 될 일을 왜 else로 쓰냐고요? 만약 조건문에 물려있는 액션이 조건문에 관련된걸 건든다면? 그럼 꼬여버리겠죠. 또한, if가 2개인것보단 if와 else 하나씩 있는게 최적화에도 더 좋습니다. 이것도 엄연한 조건문이기 때문에 바로 밑에 시작블록을 사용해도 됩니다.
아이콘 Exit Event 이벤트 종료 없음
이 액션 밑에있는 모든 액션을 무시합니다.
짧지만 강력한 액션입니다. 이 액션을 만나는 순간 밑에있는 액션이 몇개가 되었던 모두 실행되지 않습니다.
아이콘 Repeat 반복 times(자연수,a)
바로 아래에 있는 액션을 a번 반복합니다.
반복문을 만드는데 사용이 가능합니다. 유일하게 조건문이 아니지만, 시작블록과 끝블록 사용이 가능합니다.
아이콘 Call Parent Event 부모 호출 없음
부모 오브젝트에 이 액션이 있는 이벤트 조건이 있다면, 그 조건에서 실행되는 모든 액션을 실행합니다.
자식 오브젝트에 이벤트 조건과 실행이벤트가 정의되어 있을경우, 그 이벤트조건에 관해서는 부모 오브젝트에서 관여하지 않습니다. 하지만, 이 이벤트를 사용해서 자식에게 있는 이벤트조건이라도 부모의 액션을 가져올수 있습니다. 조금 어렵죠?
Code
아이콘 영문 번역 인자
출력
설명
아이콘 Execute Code 코드 실행 action(문자열,a)
a를 실행합니다.
흔히 말하는 코드입니다. 액션을 사용하지 않고, 직접 프로그래밍 언어를 사용해 만들고 싶을때는 이 기능을 사용하시면 돼요.
아이콘 Execute Script 스크립스 실행 script(선택지,s), argument0(데이터,a), argument1(데이터,b), argument2(데이터,c), argument3(데이터,d), argument4(데이터,e)
s(a,b,c,d,e)를 실행합니다.
스크립트는 코드로 미리 짜둔 함수를 의미해요. 정말 자주 써야하는 스크립트라면 미리 만들어놓고 필요할때마다 불러쓰면 좋겠죠? 그리고 그 스크립트 안에 argument0~argument4를 집어넣으면, 이 액션의 인자로 출력을 조정할 수도 있어요.
아이콘 Comment 주석 comment(문자열,a)
아무것도 안합니다.
액션가 너무 많아서 어딘가에 설명을 적고싶을때 주석을 달아보세요. 주석은 게임내에서 어떠한 행동도 하지 않지만, 액션창에서 이름표역할이 되어줘요.
Variables
아이콘 영문 번역 인자
출력
설명
아이콘 Set Variable 변수 선언 variable(문자열,a), value(실수,b), relative(스위치,r)
a라는 변수에 b를 대입합니다. a가 선언되지 않은 변수명일경우 선언을 하고 대입합니다.
변수를 다루는 자, 게임메이커를 정복하리-! 변수는 정말 많은 곳에 쓰여요. 심지어, 조건문도 true false라는 말을 하지만, 사실 조건문을 수행한 값이 0.5이상이면 true, 미만이면 false 같은 식으로 구별하는 거예요. 즉, 변수라는 거죠. 만약 relative를 체크해둔다면 value만큼 더하게 되요.
중요! : 대부분의 프로그래밍 언어에서도 중요한 상식인데요, 변수를 사용하기 위해서는 먼저 선언을 해야해요! 선언되지 않은 변수를 건들려고 한다면, 찾을 수가 없기 때문에 에러가 발생해요. 변수를 만들고 싶다면 꼭 Set Variable!
또 중요! : 뭔가 이미 있을 법한 이름들은 변수명으로 쓸 수 없어요. If나 else 같은거요.
참고 : 다른 오브젝트의 인스턴스가 가지고 있는 변수도 수정이 가능해요! 오브젝트명.변수명이라고 써주면 간단하게 끝!
참고 : 변수에 문자열대입도 가능해요. "펜을 쥔 모든 손에 권리를" 같이 쌍따옴표를 써주면 변수에는 문자열이 담겨요. 하지만 문자열 변수는 실수를 다루는 변수들과 연산도, 비교도 할 수 없어요. 아니, 하면 에러 뜨니까 제발 하지 마세요!
아이콘 Test Variable 변수 조건문 variable(변수,a), value(데이터,b), operation(선택지,o)
a가 b를 o하면 바로 밑의 액션을 실행합니다.
value에는 변수가 들어가도 돼요. 사실, 지금까지 실수나 문자열을 필요로 하는 모든 액션에는 변수를 대신 넣어도 돼요. 그래서 중요한 것!
아이콘 Draw Variable 변수 드로우 variable(변수,a), x(실수,x), y(실수,y), relative(스위치,r)
(x,y)위치에 a를 현재 설정되어있는 글꼴과 색상으로 표시합니다.
이 액션은 검은 사각형이 아니라 녹색 사각형으로 쌓여있어요. 이런 액션들은 무조건 드로우 이벤트에서만 쓰셔야 해요. 드로우 탭에서 다시 설명할테니 알아만 두세요. 글꼴 설정과 색상 설정도 그 탭에서 다룰 거예요.

score 탭[편집 | 원본 편집]

score 탭은 control 탭의 variable과 같은 기능을 해요. 대신 바꾸는 변수가 전역 변수인 score, health, lives 이 세 가지를 다루는데 쓰이는 액션이에요.

게임메이커: 스튜디오 뿐만 아니라, 많은 프로그래밍 언어에서 변수는 세 가지로 나뉘어요. 지역변수(Local Variable)와 전역변수, 그리고 임시변수는 각각의 특징이 있는데요, 지역변수는 오브젝트의 인스턴스가 저장하고있어요. 전역변수는 게임 전체에서 저장하고 있구요. 그렇기 때문에, 지역변수는 그 오브젝트의 인스턴스가 다 죽어버리면 변수도 같이 사라지겠죠. 전역변수는 게임이 존재하는 이상 계속 그대로 있을 거고요. 임시변수는 코드에서만 사용하는데요. 코드에서 임시로 선언한 변수는, 그 코드의 실행이 끝나면 역할을 다했으니 바로 사라져요.

또, 게임 엔진 등에서는 사용하기 쉬우라고 미리 여러 변수를 선언해두어요. 이걸 기본 내장 변수라고 불러요. 말하자면, 인스턴스의 각도와 이동속도 등등은 많이 쓰이는 만큼 미리 선언해두면 굉장히 편리해지겠죠? 기본 내장 변수는 미리 선언되어야하는 변수들이기 때문에, 임시변수는 존재하지 않고, 전역변수와 지역변수만 있어요. 지역변수의 경우에는, 인스턴스 각각의 속도나 각도 같은 인스턴스 개별의 특성을 나타내는데 쓰이겠죠?

하지만 게임의 점수와 플레이어의 체력 등등은 게임 전체에서 굉장히 중요하고, 플레이어도 점수도 하나만 존재하잖아요? 그래서 이러한 것들을 미리 전역변수로 선언해둬요. score와 health, 그리고 lives가 대표적인 기본 내장변수이면서 동시에 전역변수예요.

게임메이커: 스튜디오에서 탄생한 시스템이기도 하고, 굳이 쓸 필요도 없기 때문에 그다지 쓰는 사람은 없어요. 사실 health보단 hp라고 쓰는게 더 편하자나요? 하지만, 이벤트 조건에서 이런 변수들을 다루는 경우도 있어요. 그러니까 쓰고 싶다면 써도 돼요!

extra 탭[편집 | 원본 편집]

draw 탭[편집 | 원본 편집]

각주

  1. Draw 이벤트도 열어보면 꽤 많은데, 전부 순서를 말해주는 것이에요. Pre Draw Event>Draw Begin Event>Draw Event>Draw End Event>Post Draw Event>Draw GUI Begin Event>Draw GUI Event>Draw GUI End Event 순서대로 작동해요.
  2. 오른쪽으로 2만큼 움직이는 물체에게 Relative 켜고 왼쪽으로 3만큼 이동하라고 한다면, 2+(-3)=-1. 왼쪽으로 1만큼 이동하게 됩니다. 아니라면 왼쪽으로 3만큼 가겠죠.
  3. 동 북 서 남 순서대로 0, 90, 180, 270이 되는 거죠. 일반적으로 프로그래밍, 포토샵 등등의 도구들은 y축이 아래로 향합니다. 수학때 배운 좌표평면과는 차이가 있으니 조심하세요. 원점 (0,0)은 왼쪽 상단 끝부분입니다.
  4. 물론 스텝 이벤트라면 스텝마다 갱신되므로 계속 따라가려고 하겠지요.
  5. 뭐 그 정도 모듈을 다룰 정도라면 이 문서를 읽지도 않겠지만요.