1. 들어가기 전에
- 게임메이커: 스튜디오(GMS)를 우선하여 작성하였다.
- 액션의 이름은 액션을 갖다 놓았을 때 열리는 창 이름으로 한다. 별도의 창이 없을 경우 아이콘에 마우스를 올려놓았을 때의 툴팁 이름을 사용한다.
- 이 문서의 모든 액션 아이콘은 게임메이커 8.x(GM8) 아이콘이다.
- 액션별로 아이콘의 모양과 색상이 다르다.
일반 액션. (이벤트의 조건이 충족됐을 경우) 아무 이벤트에서나 작동한다. | |
if문 액션. 이 액션을 쓰고 바로 아래에 실행시킬 액션을 스타트/엔드 블록으로 감싸면 조건이 참일 때 작동한다. Else 액션으로 '바로 위의 조건이 거짓일 경우'도 넣을 수 있다. | |
드로우 액션. 대부분 드로우 이벤트에서만 작동한다. 게임메이커: 스튜디오에서는 초록색 테두리로 드로우 액션을 구분할 수 있다. |
- 현재 기준(Relative)이라는 것은 그 변수에 추가로 더한다는 의미이다. 예를 들어 변수
a
에 1이라고 쓰고 현재 기준을 체크하면,a
라는 변수에 1을 더한다. 빼려고 한다면 -1을 넣어주면 된다. - 맥락에 따라 '현재 기준'의 의미는 조금씩 다른데, x/y가 있는 대부분의 액션에서는 자신의 위치를 기준으로 한다는 의미이고, 기타 변수가 있는 액션에서는 대입하지 않고 가/감산한다는 의미이다.
- if문 액션의 아닐 경우(NOT)이라는 것은 조건이 참이 아니라 거짓일 때 실행된다는 의미이다.
- 거의 모든 코드에는 '적용 대상'(Applies to) 설정이 있는데, 이는 해당 액션의 효과를 누구를 대상으로 적용시킬지 설정하는 메뉴이다. 기본값은 '자신'(Self)이고, 충돌 이벤트 등에서 '기타'(Other)로 설정하면 충돌한 인스턴스에 적용된다. '대상:'(Object:)에서 특정 오브젝트를 선택하면 해당하는 모든 인스턴스에 적용된다.
- 기울임체로 표기된 액션은 별도의 창이 뜨지 않고 액션 영역에 바로 추가된다.
- 대응하는 코드는 '현재 기준'과 '아닐 경우'를 모두 체크하지 않았을 때, GMS 1.x 문법(GM8 액션일 경우 GM8 문법)을 기준으로 한다.
- 4문장 이상의 긴 코드는 접기 문법을 사용하여 숨겨 두었다. 읽으려면 [ 코드 보기 ] 부분을 클릭하면 된다.
- 코드에 따옴표("...")가 있을 경우 따옴표를 반드시 포함해야 한다. 큰따옴표를 쓰든 작은따옴표를 쓰든 양쪽이 맞으면 상관 없다.
- GM8에서는 색상 관련 함수 이름에 color만 사용했지만, GMS부터 colour가 표준이 되었다. color로 바꾸어 써도 잘 동작한다.
- 코드 목록은 게임메이커: 스튜디오 1.x 도움말(영문)
2. Move 탭
2.1. Move
아래 액션은 인스턴스의 속도 자체에 관여하므로 특별한 일이 없다면 한 번만 실행시켜도 계속 이동한다. 즉, 따로 멈추는 설정을 해주어야 한다는 얘기이다.이름 | 인자 | 대응 코드 | 설명 |
Move Fixed | Directions (9방향 제한) Speed 현재 기준 | 'Move Free' 참조 | 9종류(정지 상태 포함)의 방향과 속도를 설정해 특정한 방향으로 이동시킨다. |
Move Free | direction speed 현재 기준 | direction = (direction); speed = (speed); 혹은 motion_set(direction, speed) | 자유롭게 방향과 속도를 설정해 이동시킨다. 위의 Move Fixed와 달리 방향을 숫자로 지정하는데, 각도기의 방향을 생각하면 된다. 0은 오른쪽, 90은 위쪽, 180은 왼쪽, 270은 아래쪽으로, 이는 게임메이커의 다른 각도에도 똑같이 적용된다. |
Move Towards | x y speed 현재 기준 | move_towards_point(x, y, speed) | 특정 좌표를 향해 이동시킨다. |
Speed Horizontal | hor. speed 현재 기준 | hspeed = (hor. speed); | 가로 속도를 지정한다. |
Speed Vertical | vert. speed 현재 기준 | vspeed = (vert. speed); | 세로 속도를 지정한다. |
Set Gravity | direction gravity 현재 기준 | gravity = (gravity); gravity_direction = (direction); | 중력을 설정한다. 방향은 270, 중력은 0.2~0.3 정도가 무난하다. |
Reverse Horizontal | - | hspeed = -hspeed; | 가로 속도를 반전시킨다. 세로로 된 벽에 튕겨나가는 것을 생각하면 쉽다. |
Reverse Vertical | - | vspeed = -vspeed; | 세로 속도를 반전시킨다. 가로로 된 벽에 튕겨나가는 것을 생각하면 쉽다. |
Set Friction | friction 현재 기준 | friction = (friction); | 마찰력을 설정한다. 속도가 서서히 떨어지게 할 수 있다. 보통 1 미만으로 설정한다. |
2.2. Jump
여기서 Jump는 말 그대로 점프를 의미하는 것이 아니라 '특정 좌표로 순간이동'을 의미한다. 인스턴스의 위치에만 관여하므로 계속 이동시키려면 계속 실행시켜야 한다. 이는 아래의 Steps에도 동일하게 적용된다.이름 | 인자 | 대응 코드 | 설명 |
Jump to Position | x y 현재 기준 | x = (x); y = (y); | 특정 좌표로 이동한다. |
Jump to Start | - | x = xstart; y = ystart; | 인스턴스가 처음 생성되었을 때의 좌표로 돌아간다. |
Jump to Random | snap hor snap vert | move_random(snap hor, snap vert) | 룸 안에 특정한 간격대로 무작위 좌표를 찍어 이동한다. |
Align to Grid | snap hor snap vert | move_snap(snap hor, snap vert) | 인스턴스의 위치를 특정한 간격에 맞춘다. |
Wrap Screen | direction (가로, 세로, 4방향 모두) | move_wrap(hor, vert, margin) [1] | 인스턴스가 화면 밖으로 나갔을 경우 반대쪽에서 등장시킨다. 화면 밖으로 나가는 판정은 속도를 기반으로 하므로 좌표 이동만 할 경우 적용되지 않는다. |
Move to Contact | direction maximum against (솔리드 오브젝트/아무 오브젝트) | move_contact_solid(direction, maximum) 혹은 move_contact_all(direction, maximum) | 특정한 방향으로 솔리드 혹은 아무 객체와 충돌하기 직전의 위치까지 자동 이동시킨다. 이미 충돌했을 경우 움직이지 않는다. 최대치를 설정하면 그 이상 움직이지 않으며, -1 혹은 0(무제한. 내부적으로는 1000px로 설정됨)으로 두는 것을 권장한다. |
Bounce | precise (정밀하지 않게/정밀하게) against (솔리드 오브젝트/아무 오브젝트) | move_bounce_solid(adv) 혹은 move_bounce_all(adv) [2] | 솔리드 혹은 아무 객체와 충돌 시 튕기게 한다. |
2.3. Paths
이름 | 인자 | 대응 코드 | 설명 |
Set Path | path speed at end relative(상대적 위치/절대적 위치) | path_start(path, speed, endaction, absolute) [3] | 패스를 설정한다. 종료 후의 행동(at end)을 선택할 수 있는데 종류는 정지, 처음부터 다시, 여기서 다시, 역재생의 4가지가 있다. relative는 다른 액션의 현재 기준과 조금 다른데, 패스 에디터에서 정의한 좌표에서 시작할지 현재 인스턴스의 좌표에서 시작할지를 결정한다. |
End Path | - | path_end() | 진행 중인 패스를 강제로 끝낸다. |
Path Position | position (0부터 1까지) 현재 기준 | path_position = (position); | 패스의 진행도를 변경한다. 예를 들어 0.5로 설정하면 패스의 정확히 중간부터 진행한다. |
Path Speed | speed 현재 기준 | path_speed = (speed); | 패스의 속도를 재설정한다. 0을 입력하면 일시정지시킬 수 있으며, 음수를 입력하면 역재생할 수 있다. |
2.4. Steps
이름 | 인자 | 대응 코드 | 설명 |
Step Towards | x y speed stop at (솔리드 오브젝트/아무 오브젝트) 현재 기준 | mp_linear_step(x, y, speed, checkall) [4] | 특정한 좌표를 향해 특정한 속도대로 가다가 오브젝트와 충돌하면 멈춘다. |
Step Avoiding | x y speed avoid (솔리드 오브젝트/아무 오브젝트) 현재 기준 | mp_potential_step(x, y, speed, checkall) | 솔리드 혹은 아무 객체를 피해 특정한 좌표로 이동한다. 스타크래프트처럼 길 찾을 때 쓰는 거라고 생각하면 편하다. |
3. Main1 탭
3.1. Objects
이름 | 인자 | 대응 코드 | 설명 |
Create Instance | object x y 현재 기준 | instance_create(x, y, object) | 특정 좌표에 인스턴스를 생성한다. 현재 기준에 체크하면 이 액션을 실행하는 인스턴스의 위치에서 생성된다. |
Create Moving | object x y speed direction 현재 기준 | with(instance_create(x, y, object)) {speed = (speed); direction = (direction);} | 특정한 좌표에 특정한 방향과 속도로 움직이는 인스턴스를 생성한다. |
Create Random | object 1~4 x y 현재 기준 | instance_create(x, y, choose(object 1, object 2, ...)) | 특정한 좌표에 오브젝트 1~4 중 하나를 무작위로 생성한다. |
Change Instance | change into perform events (아니요/예) | instance_change(change into, perform events) | 인스턴스를 다른 오브젝트의 인스턴스로 바꾼다. perform events를 '예'로 설정하면 기존 오브젝트의 Destroy 이벤트와 새 오브젝트의 Create 이벤트가 실행된다. 물리엔진이 켜져 있을 경우 기존 인스턴스의 물리적 성질은 새 인스턴스로 전달되지 않는다(GMS). |
Instance Destroy | - | instance_destroy() [5] | 자기 자신을 제거한다. 다른 인스턴스를 지우려면 위의 Applies to에서 Self(기본값, 자기 자신), Other(충돌 이벤트에서, 자신과 충돌한 인스턴스), Object(특정한 오브젝트) 중 하나를 선택해야 한다. |
Destroy at Position | x y 현재 기준 | position_destroy(x, y) | 특정한 좌표 위에 있는 인스턴스를 모두 제거한다. 좌표 판정은 마스크를 기준으로 이루어지므로 판정박스가 없는 인스턴스는 지워지지 않는다. |
3.2. Sprite
이름 | 인자 | 대응 코드 | 설명 |
Change Sprite | sprite subimage speed | sprite_index = (sprite); image_index = (subimage); image_speed = (speed); [6] | 인스턴스의 스프라이트를 다른 스프라이트로 바꾼다. 서브이미지를 -1로 설정하면 애니메이션을 나타내며, 그렇지 않으면 특정한 서브이미지만 표시된다. 속도는 애니메이션의 속도를 의미하며, 기본값은 1이다. |
Transform Sprite | xscale yscale angle mirror (뒤집기 없음, 가로, 세로, 가로세로) | image_xscale = (xscale); image_yscale = (yscale); image_angle = (angle); [7] | 스프라이트를 늘리거나 돌린다. 각도는 0이 기본값이고, 시계 반대 방향으로 회전한다. x/y 비율에 음수를 넣으면 스프라이트를 뒤집을 수 있지만, x/y 계산이 꼬일 수 있다. |
Color Sprite | color alpha | image_blend = (color); image_alpha = (alpha); [색상값] | 스프라이트에 색상을 입힌다. 내부적으로는 곱연산으로 처리되며, 원래 색으로 돌리려면 흰색으로 설정하면 된다. |
3.3. Sounds
GM8까지 사용하던 레거시 오디오 엔진과 GMS에 추가된 신규 오디오 엔진이 있다. GMS에서도 Global Game Settings에서 레거시 엔진으로 바꿀 수 있다.이름 | 인자 | 대응 코드 | 설명 |
Play Sound | sound loop | audio_play_sound(sound, priority, loop) [9][레거시1] | 사운드를 재생한다. |
Stop Sound | sound | audio_stop_sound(sound) [레거시2] | 해당 사운드를 정지한다. |
Check Sound | sound 아닐 경우 | audio_is_playing(sound) [레거시3] | 해당 사운드가 실행 중인지 확인한다. 사운드가 실제 스피커로 재생 중인지가 판정 기준이기 때문에 게임 내에서 사운드를 껐더라도 잠시 동안 켜진 것처럼 실행될 수 있다. |
3.4. Rooms
게임메이커: 스튜디오에서는 룸 전환 효과를 사용할 수 없다. 전환 효과는 하나씩 쓰면서 마음에 드는 것으로 정하면 된다.이름 | 인자 | 대응 코드 | 설명 |
Previous Room | transition (GM8) | room_goto_previous() | 이전 룸으로 이동한다. |
Next Room | transition (GM8) | room_goto_next() | 다음 룸으로 이동한다. |
Restart Room | transition (GM8) | room_restart() | 해당 룸을 재시작한다. |
Different Room | new room transition (GM8) | room_goto(new room) | 특정한 룸으로 이동한다. |
Check Previous | - | room_exists(room_previous(room)) 혹은 room != room_first | 이전 룸이 있는지 확인한다. 이전 룸이 없을 때 Previous Room 액션을 쓰면 오류가 나기 때문에 꼭 필요하다. |
Check Next | - | room_exists(room_next(room)) 혹은 room != room_last | 다음 룸이 있는지 확인한다. |
4. Main2 탭
4.1. Timing
이름 | 인자 | 대응 코드 | 설명 |
Set Alarm | number of steps in alarm no 현재 기준 | alarm[in alarm no] = (number of steps); | 특정한 알람을 특정한 시간 뒤에 실행한다. 1초의 단위가 룸의 스텝 설정에 따라 다르며, 기본값인 30스텝으로 설정했을 경우 30이 1초가 된다. |
| milliseconds redraw | sleep(milliseconds) [* GMS에서 같은 동작을 실행하려면 다음과 같은 코드를 써야 한다. current_time 대신 마이크로초(100만 마이크로초가 1초) 단위를 쓰는 get_timer() 함수를 쓸 수도 있다. ] | 특정한 시간 동안 게임을 강제로 멈춘다. 프레임 갱신(redraw)에 체크했을 경우 멈추기 직전에 프레임을 한 번 갱신하고 멈춘다. |
Set Time Line | time line position start (바로 시작/설정만 하기) loop (반복/1회) |
| 타임라인을 설정한다. 위치는 해당 타임라인의 몇 스텝 위치부터 시작할지를 결정한다. |
Time Line Position | position 현재 기준 | timeline_position = (position); | 타임라인의 진행도를 변경한다. |
Time Line Speed | speed 현재 기준 | timeline_speed = (speed); | 타임라인의 실행 속도를 변경한다. 기본값은 1(배속)이다. |
Start Time Line | - | timeline_running = true; | 설정된 타임라인을 시작한다. |
Pause Time Line | - | timeline_running = false; | 타임라인을 일시정지한다. |
Stop Time Line | - | timeline_running = false; timeline_position = 0; | 타임라인을 종료한다. |
4.2. Info
게임메이커 8.x에는 게임 창 등에 파일이나 웹사이트를 띄우는 '스플래시' 계열 액션(Splash로 시작하는 모든 액션과 Show Info)이 있다. 스플래시 창에 파일이 필요한 액션의 경우 해당 파일을 게임과 같이 배포하거나 파일 포함 기능으로 끼워넣어야 한다.이름 | 인자 | 대응 코드 | 설명 |
Display Message | message | show_message("(message)") [비동기] | 새 창으로 메시지를 띄운다. |
Open URL (GMS) | URL | url_open("(URL)") | 브라우저로 웹페이지를 띄운다. |
| - | show_info() | 게임 창에 게임 설명을 띄운다. 게임 설명은 좌측 메뉴의 'Game Information'에서 작성할 수 있다. |
| file name | splash_show_text("(file name)", delay) [14] | 게임 창에 텍스트 파일(.txt/.rtf)의 내용을 띄운다. 스크롤이 되지 않으므로 내용이 게임 창 안에 들어가야 한다. |
| file name | splash_show_image("(file name)", delay) | 게임 창에 이미지(.bmp, .jpg, .tif, .wmf 등, 움직이는 .gif는 미지원)를 띄운다. |
| webpage open in (게임 창/브라우저) | splash_show_web("(webpage)", delay) [15] | 게임 창이나 브라우저로 웹페이지를 띄운다. 2019년 현재 게임 창의 경우 대부분의 사이트에서 레이아웃이 깨지고 스크립트 오류를 남발하며, 브라우저의 경우 아예 작동하지 않는다(...). |
| file name loop (반복/1회) | splash_show_video("(file name)", loop) | 게임 창에 동영상(.avi, .mpg, .wmv 등, 일부 코덱 미지원)을 띄운다. |
| caption open in (게임 창/새 창/전체화면) close button (보이기/숨기기) on escape on mouse |
| 스플래시 화면을 어떻게 출력할지 설정한다. close button이 켜져 있으면 게임 창에 원래의 닫기 버튼 외에도 스플래시 창을 닫는 버튼이 생기며, on escape와 on mouse는 각각 Esc 키를 누르거나 마우스 클릭을 했을 때 창을 닫을지의 여부이다. |
4.3. Game
이름 | 인자 | 대응 코드 | 설명 |
Restart Game | - | game_restart() | 게임을 재시작한다. |
End Game | - | game_end() | 게임을 종료한다. 안드로이드, iOS, HTML5에서는 작동하지 않는다(GMS). 1.4.1788 업데이트 기록에서는 안드로이드와 iOS의 경우 메모리 손상을 일으키는 버그 때문이라고 한다. |
Save Game | file name | game_save("(file name)") [파일시스템] | 게임을 저장한다. 버전 간(게임메이커 자체든, 그걸로 만든 게임이든) 호환성이 매우 떨어지고, 일부 코드로 추가할 수 있는 데이터가 저장되지 않는 등 여러 문제 때문에 웬만하면 코드를 배워서 직접 세이브 파일을 만드는 것을 추천한다. |
Load Game | file name | game_load("(file name)") [파일시스템] | Save Game으로 저장한 게임을 불러온다. |
4.4. Resources
이름 | 인자 | 대응 코드 | 설명 |
Replace Sprite | sprite filename images | 특정 스프라이트를 다른 이미지 파일(.png, .jpg, .tif 등, 움직이는 .gif도 지원)로 갈아치운다. 텍스처 팩 등을 구현할 때 유용하다. | |
| sound filename | sound_replace(sound, "(filename)", kind, preload) [19] | 특정 사운드를 다른 사운드 파일(.wav, .mid, .mp3)로 갈아치운다. GMS에서는 함수 자체는 남아있지만 레거시 엔진 전용이며, 비권장(deprecated)이 되었다. |
Replace Background | background filename | 특정 백그라운드를 다른 이미지 파일(.png, .jpg, .tif, .gif 등)로 갈아치운다. |
5. Control 탭
5.1. Questions
이름 | 인자 | 대응 코드 | 설명 |
Check Empty | x y objects (솔리드 오브젝트/아무 오브젝트) 현재 기준 아닐 경우 | place_free(x, y) 혹은 place_empty(x, y) [20] | 이 인스턴스가 특정한 좌표에 있다고 가정하고, 다른 인스턴스와 충돌하지 않는지 확인할 수 있다. 충돌하는지 확인하려면 '아닐 경우'에 체크하면 된다. |
Check Collision | x y objects (솔리드 오브젝트/아무 오브젝트) 현재 기준 아닐 경우 | !place_free(x, y) 혹은 !place_empty(x, y) | 이 인스턴스가 특정한 좌표에 있다고 가정하고, 다른 인스턴스와 충돌하는지 확인한다. 역시 '아닐 경우'에 체크하면 충돌하지 않는지 확인할 수 있다. |
Check Object | object x y 현재 기준 아닐 경우 | place_meeting(x, y, object) | 특정 위치에 특정한 인스턴스가 있는지 확인한다. 엄밀히 말하자면, 이 인스턴스가 특정한 좌표에 있다고 가정하고, 특정한 인스턴스와 충돌하는지 확인한다. |
Test Instance Count | object number operation (같을 때/미만/초과) 아닐 경우 | instance_number(object) == (number) [연산자] | 특정한 오브젝트가 룸 안에 몇 개 있는지 확인한다.[이상이하] |
Test Chance | sides 아닐 경우 | random(1) < 1 / (sides) | n번 중 1번의 확률로 그 다음 액션을 실행한다. 예를 들어 6을 입력하면 1/6의 확률이 된다. |
Check Question | question 아닐 경우 | show_question("(question)") [비동기] | 새 창에 메세지를 띄우고 Yes/No 버튼을 만들어, 플레이어가 Yes를 눌렀는지 확인한다. |
Test Expression | expression 아닐 경우 | if(expression) (실행할 코드); [24] | 특정한 수식이 참인지 확인한다. 즉 if문. GML의 문법을 사용한다. C언어에서 0이 아닌 것을 모두 참으로 간주하는 것과 달리, 게임메이커에서는 엔진의 특성상 0과 음수를 모두 거짓으로 간주한다. |
Check Mouse | button (누르지 않음/왼쪽/오른쪽/마우스 휠) 아닐 경우 | mouse_check_button(button) [25] | 특정한 마우스 버튼이 눌려 있는지 확인한다. 눌린 순간뿐만이 아니라 눌려있는 동안에는 계속 참으로 판정한다. |
Check Grid | snap hor snap vert 아닐 경우 | place_snapped(snap hor, snap vert) | 가로세로 격자가 맞는지 확인한다. Move 탭의 Jump to Random/Align to Grid를 생각하면 쉽다. |
5.2. Other
이름 | 인자 | 대응 코드 | 설명 |
Start Block | - | { | if문 액션이 참일 때 혹은 일부 일반 액션 아래에 실행할 액션을 묶는다. 한마디로 코드에서의 { . 액션 1개만 실행할 때는 생략할 수 있다. 스타트 블록과 엔드 블록 사이 액션은 한 칸씩 들여쓰기가 된다. |
Else | - | else | if문 액션에서 참을 반환하지 않을 경우를 작성할 때 쓴다. 엔드 블록 아래에 넣으면 된다. |
Exit Event | - | exit; | 해당 이벤트를 강제 종료한다. 이 액션이 실행되었을 경우 이 아래의 액션은 실행되지 않는다. |
End Block | - | } | 스타트 블록과 짝을 이룬다. 코드에서의 } 와 같은 역할을 한다. 스타트 블록을 생략했다면 이 역시 생략해야 한다. |
Repeat | times | repeat(times) (실행할 코드); | 특정한 횟수만큼 반복한다. 이 액션은 if문 액션이 아니지만 예외적으로 스타트 블록과 엔드 블록으로 묶을 수 있다. |
Call Parant Event | - | event_inherited() | 부모 오브젝트의 동일한 이벤트를 상속받는다.[26] |
5.3. Code
이름 | 인자 | 대응 코드 | 설명 |
Execute Code | - | - | GML 코드 에디터를 연다. |
Execute Script | script argument0~4[27] | script_execute(script, argument0, argument1, ...) [28] | 스크립트를 script(argument0, argument1, ...) 과 같이 호출한다. GMS에서는 Edit 버튼이 생겨서 스크립트를 바로 편집할 수 있게 되었다. 액션에서는 불가능하지만, 코드로 들어가면 script_execute(choose(scr_Up, scr_Down, scr_Left, scr_Right), irandom(5)); (GMS 도움말 예제)와 같이 스크립트 이름만 따서 쓸 수 있다는 데서 진가가 드러난다. 그 대신 내장 함수를 넣을 수는 없다. |
Comment | comment | //comment 혹은 /*comment*/ [29] | 주석을 작성한다. 대다수 프로그래밍 언어의 //주석 , 나무위키에서의 ##주석 과 같다. |
5.4. Variables
이름 | 인자 | 대응 코드 | 설명 |
Set Variable | variable value 현재 기준 | (variable) = (value); | 변수를 선언하거나 값을 대입한다. 게임메이커에서는 일반적인 변수의 선언과 대입을 따로 구분하지 않으므로 새 변수를 만들려고 특별한 설정을 할 필요는 없고 똑같이 이 액션을 쓰면 된다. |
Test Variable | variable value operation (같을 때/미만/초과) 아닐 경우 | (variable) == (value) [연산자] | 변수의 값과 주어진 값을 비교한다.[이상이하] |
Draw Variable | variable x y 현재 기준 | draw_text(x, y, variable) | 특정한 변수 혹은 수식의 계산 결과를 특정한 좌표에 출력한다. |
6. Score 탭
6.1. Score
게임 내 점수는 전역 변수score
에 저장된다.이름 | 인자 | 대응 코드 | 설명 |
Set Score | new score 현재 기준 | score = (new score); | 게임 내 점수를 설정한다. 점수를 추가로 얻으려면 현재 기준에 체크하면 된다. |
Test Score | value operation (같을 때/미만/초과) 아닐 경우 | score == (value) [연산자] | 현재 점수와 주어진 값을 비교한다.[이상이하] |
Draw Score | x y caption 현재 기준 | draw_text(x, y, "(caption)" + string(score)) [형변환] | 현재 점수를 특정한 좌표에 출력한다. |
| background border (보이기/생략하기) new color other color font |
| 하이스코어를 10위까지 표시한다. 플레이어가 순위권에 들었을 경우 이름을 적을 수 있다. 실행할 때마다 자동으로 현재 점수가 등록되므로 이를 원치 않을 경우 점수를 0으로 돌려놓아야 한다. 여기서 사용하는 글꼴은 게임메이커 리소스가 아닌 컴퓨터에 설치된 글꼴이다. GMS에서는 하이스코어를 표시하는 함수가 사라졌지만, 하이스코어 시스템 자체는 여전히 존재한다. 다만 이 과정에서 하이스코어 등록에 관여하는 액션이 사라졌으므로 이 시스템을 이용하려면 코드를 직접 짜야 한다. |
Clear Highscore | - | highscore_clear() | 하이스코어 목록을 초기화한다. |
6.2. Lives
남은 생명은 전역 변수lives
에 저장된다.이름 | 인자 | 대응 코드 | 설명 |
Set Lives | new lives 현재 기준 | lives = (new lives); | 남은 생명을 설정한다. 1UP은 1 + 현재 기준, 캐릭터 사망은 -1 + 현재 기준의 조합을 사용하자. |
Test Lives | value operation (같을 때/미만/초과) 아닐 경우 | lives == (value) [연산자] | 현재 남은 생명과 주어진 값을 비교한다.[이상이하] |
Draw Lives | x y caption 현재 기준 | draw_text(x, y, "(caption)" + string(lives)) [형변환] | 현재 남은 생명을 숫자의 형태로 특정한 좌표에 출력한다. |
Draw Life Images | x y image 현재 기준 | 현재 남은 생명을 스프라이트의 형태로 출력한다. 예를 들어 남은 생명이 3일 경우 ♥♥♥와 같이 출력된다. |
6.3. Health
남은 체력은 전역 변수health
에 저장된다. 최대 체력은 무조건 100으로 고정된다.이름 | 인자 | 대응 코드 | 설명 |
Set Health | value 현재 기준 | health = (value); | 남은 체력을 설정한다. 피격 판정은 -(피해량) + 현재 기준에 체크하면 된다. |
Test Health | value operation (같을 때/미만/초과) 아닐 경우 | health == (value) [연산자] | 현재 남은 체력과 주어진 값을 비교한다.[이상이하] |
Draw Health | x1 y1 x2 y2 back color bar color 현재 기준 | 남은 체력을 체력 바의 형태로 출력한다. back color(배경색)는 투명을 포함한 17종류의 단색 중에서, bar color(채우기 색)는 초록색-빨간색, 흰색-검은색과 16종류의 단색 중에서 골라야 한다. 사용자 지정 색 기능은 없다. | |
| show score (보이기/숨기기) score caption show lives (보이기/숨기기) lives caption show health (보이기/숨기기) health caption |
| 현재 점수, 생명, 체력을 창 제목에 표시할지를 결정하고, 표시할 경우 그 앞에 달릴 제목을 결정한다. |
7. Extra 탭
7.1. Particles
게임메이커의 파티클 체계는 크게 시스템, 타입, 이미터의 세 종류가 있다. 세 종류 모두 코드를 사용하면 개수 제한 없이 여러 개를 만들 수 있으며, 각각 고유번호를 부여받는다.- 파티클 시스템(Particle System): 아래의 파티클 타입과 이미터를 담는 틀로 생각하면 된다. 액션으로는 1개만 만들 수 있다.
- 파티클 타입(Particle Type): 파티클이 눈에 보이는 모양, 즉 그래픽을 정의한 것. 모양, 방향, 속도, 중력, 색상, 투명도, 수명 등 여러 속성을 부여할 수 있지만 파티클 하나하나를 통제할 수는 없다. 액션으로는 16개만 만들 수 있다.
엔진에 기본으로 정의된 파티클 모양은 14종류[41]가 있으며, 이외에도 직접 만든 스프라이트를 적용할 수 있다. - 파티클 이미터(Particle Emitter): 파티클을 화면에 생성하는 생성기와 같은 것. 코드를 사용할 경우 이미터가 없어도 파티클을 소환할 수 있다. 액션으로는 8개만 만들 수 있다.
- 파티클: 실제로 파티클 이미터에서 생성되는 시각적 효과. 게임메이커 도움말에서는 파티클과 파티클 이미터를 섞어 쓰는 경향이 있지만, 해당 문서에서는 두 단어를 엄격히 구분한다.
GM8에는 이외에도 파티클 어트랙터, 체인저, 디플렉터, 디스트로이어가 있었으나 성능 문제로 인하여 삭제되었다.
파티클에 대한 더 자세한 설명은 도움말의 해당 항목을 확인하면 된다.
아래 코드에서는
sys
에 파티클 시스템, type
에 파티클 타입, emit
에 파티클 이미터의 고유번호를 저장하는 것으로 가정한다.이름 | 인자 | 대응 코드 | 설명 |
Create Part System | depth | sys = part_system_create(); part_system_depth(sys, depth); | 파티클 시스템을 만든다. depth 값은 오브젝트에 부여하는 깊이 값처럼 쓰면 된다. |
Destroy Part System | - | part_system_destroy(sys) | 생성된 파티클 시스템을 없앤다. |
Clear Part System | - | part_particles_clear(sys) | 파티클 시스템 안의 모든 파티클을 없앤다. 파티클 시스템 자체와 그 안에 정의된 파티클 타입, 이미터는 사라지지 않는다. |
Create Particle[42] | type id (0~15) shape sprite min size max size size increment |
| 생성 + 모양/크기 속성. 지정된 타입으로 특정한 모양과 크기의 파티클 타입을 생성한다. shape와 sprite는 둘 중 하나만 설정해도 된다. 해당 타입의 파티클이 처음 생성될 때는 min size와 max size 사이의 크기로 생성되며, 매 스텝마다 size increment만큼 커진다. |
Particle Color | type id Color Mix (혼합/변화)[45] color1 color2 start alpha end alpha | part_type_colour_mix(type, color1, color2); /*혹은 part_type_colour2(type, color1, color2);*/ part_type_alpha2(type, start alpha, end alpha); [색상값][47] | 색상 속성. 특정한 타입의 파티클에 어떤 색을 입힐 것인지를 결정한다. Color Mix를 mixed(혼합)으로 설정하면 두 색상을 무작위 비율로 섞어서 단색으로 사용하고, changing(변화)로 설정하면 색 1에서 시작해서 색 2로 바뀌어 간다. |
Particle Life | type id min life max life | part_type_life(type, min life, max life) | 수명 속성. 특정한 타입의 파티클이 얼마 후 사라질 것인지를 결정한다. |
Particle Speed | type Id min speed max speed min dir max dir friction | part_type_speed(type, min speed, max speed, speed_incr, speed_wiggle); part_type_direction(type, min dir, max dir, dir_incr, dir_wiggle); [incr][wiggle][50] | 속도/마찰력 속성. 특정한 타입의 파티클이 어느 정도의 속도와 방향으로 운동할지, 마찰력이 얼마나 작용할지를 결정한다. |
Particle Gravity | type id amount direction | part_type_gravity(type, amount, direction) | 중력 속성. 특정한 타입의 파티클에 중력이 어느 방향으로 얼마나 작용할지를 결정한다. |
Particle Secondary | type id step type step count death type death count | part_type_step(type, step count, step type); part_type_death(type, death count, death type); | 파티클이 떨어지는 동안, 또는 없어지는 순간에 어떤 파티클을 얼마나 떨굴지를 결정한다. 자신과 같은 타입의 파티클을 떨구도록 설정하면 일종의 무한 루프에 걸려 게임이 튕길 수 있으므로 절대 이렇게 설정하면 안 된다.
|
Create Emitter | emitter id (0~7) shape (사각형/타원/다이아몬드/직선) xmin xmax ymin ymax | emit = part_emitter_create(sys); part_emitter_region(sys, emit, xmin, xmax, ymin, ymax, shape, distribution); [51] | 특정한 영역에 파티클을 소환하는 파티클 이미터를 생성한다. |
Destroy Emitter | emitter id | part_emitter_destroy(sys, emit) | 만들어진 파티클 이미터를 제거한다. |
Burst from Emitter | emitter id particle type number | part_emitter_burst(sys, emit, particle type, number) | 파티클 이미터에서 특정한 타입과 개수의 파티클을 순간적으로 생성한다. |
Stream from Emitter | emitter id particle type number | part_emitter_stream(sys, emit, particle type, number) | 파티클 이미터에서 특정한 타입과 개수의 파티클을 지속적으로 생성한다. 위의 Particle Secondary처럼 음수를 쓸 수 있다. 특별한 일이 없는 한 한 번만 써주면 된다. |
7.2. CD (GM8)
컴퓨터에 넣은 CD를 인식하고 재생하는 액션이다. GMS에서는 지원이 중단되었다.코드로 사용할 때는 반드시
cd_init()
을 먼저 사용해야 한다. CD를 바꿔 끼웠을 때도 한 번씩 사용해야 한다.이름 | 인자 | 대응 코드 | 설명 |
| start track final track | cd_play(start track, final track) | CD를 재생한다. |
| - | cd_stop() | 재생 중이던 CD를 정지한다. |
| - | cd_pause() | 재생 중이던 CD를 일시정지한다. |
| - | cd_resume() | 일시정지한 CD를 다시 재생한다. |
| - | cd_present() | CD를 넣었는지 확인한다. |
| - | cd_playing() | CD가 재생 중인지 확인한다. |
7.3. Other
이름 | 인자 | 대응 코드 | 설명 |
Set Cursor | sprite cursor (숨기기/보이기) | cursor_sprite = (sprite); window_set_cursor = (cursor); [52] | 게임 내에서 마우스 커서를 특정한 스프라이트로 변경한다. 기존의 마우스 커서를 숨기거나 겹쳐 보이게 할 수 있다. |
8. Draw 탭
8.1. Drawing
이름 | 인자 | 대응 코드 | 설명 |
Draw Self (GMS) | - | draw_self() | 자기 자신을 출력한다. Draw 이벤트를 추가하면 자기 자신이 표시되지 않기 때문에 이 액션을 넣어 주어야 한다. |
Draw Sprite | sprite x y subimage 현재 기준 | draw_sprite(sprite, subimage, x, y) | 특정한 스프라이트를 출력한다. 서브이미지에 -1을 넣으면 애니메이션을 나타낸다.[53] |
Draw Background | background x y tiled (끄기/켜기) 현재 기준 | draw_background(background, x, y) 혹은 draw_background_tiled(background, x, y) | 특정한 백그라운드를 출력한다. tiled(바둑판식 배열)에 체크하면 백그라운드가 가로, 세로로 반복되어 화면을 가득 채운다. |
Draw Text | text x y 현재 기준 | draw_text(x, y, text) | 특정한 문자열을 출력한다. |
Draw Scaled Text | text x y xscale yscale angle 현재 기준 | draw_text_transformed(x, y, text, xscale, yscale, angle) | 특정한 문자열을 가로, 세로로 늘리거나 돌려서 출력한다. |
Draw Rectangle | x1 y1 x2 y2 filled (채우기/테두리) 현재 기준 | draw_rectangle(x1, y1, x2, y2, outline) [outline] | 사각형을 출력한다. |
Horizontal Gradient | x1 y1 x2 y2 color1 color2 현재 기준 | draw_rectangle_colour(x1, y1, x2, y2, color1, color2, color1, color2, false) [색상값] | 가로로 그라디언트가 적용된 사각형을 출력한다. |
Vertical Gradient | x1 y1 x2 y2 color1 color2 현재 기준 | draw_rectangle_colour(x1, y1, x2, y2, color1, color1, color2, color2, false) [색상값] | 세로로 그라디언트가 적용된 사각형을 출력한다. |
Draw Ellipse | x1 y1 x2 y2 filled (채우기/테두리) 현재 기준 | draw_ellipse(x1, y1, x2, y2, outline [outline] | 타원형을 출력한다. 너비와 높이가 같으면 원형이 된다. |
Gradient Ellipse | x1 y1 x2 y2 color1 color2 현재 기준 | draw_ellipse_colour(x1, y1, x2, y2, color1, color2, false) [색상값] | 그라디언트가 적용된 타원형을 출력한다. 안쪽 색이 color1, 바깥쪽 색이 color2이다. |
Draw Line | x1 y1 x2 y2 현재 기준 | draw_line(x1, y1, x2, y2) | (x1, y1)과 (x2, y2)를 잇는 선분을 출력한다. |
Draw Arrow | x1 y1 x2 y2 tip size 현재 기준 | draw_arrow(x1, y1, x2, y2, tip size) | (x1, y1)에서 (x2, y2)로 뻗어나가는 화살표를 출력한다. |
8.2. Settings
대부분의 드로우 액션은 이 탭에서 설정한 색상과 글꼴의 영향을 받는다. Draw 이벤트가 아닌 다른 곳에서도 사용할 수 있다.이름 | 인자 | 대응 코드 | 설명 |
Set Color | color | draw_set_colour(color) [색상값] | 그리기에 사용할 색상을 설정한다. |
Set Font | font align (왼쪽/가운데/오른쪽) | draw_set_font(font); draw_set_halign(align); [60] | 텍스트 출력에 사용할 글꼴과 가로 정렬을 설정한다. 게임메이커 리소스를 사용한다. |
Set Full Screen | action (전환/창 모드/전체화면) | window_set_fullscreen(full) [61] | 게임을 전체화면 모드나 창 모드로 바꾼다. |
8.3. Other
이름 | 인자 | 대응 코드 | 설명 |
Take Snapshot | filename | screen_save("(filename)") [파일시스템] | 게임의 스크린샷을 찍어서 특정한 파일명으로 저장한다. |
Create Effect | type x y size (소/중/대) color where (오브젝트 아래/위) 현재 기준 | effect_create_below(type, x, y, size, color) 혹은 effect_create_above(type, x, y, size, color) [63] | 게임 상에 특수효과를 생성한다. where의 '오브젝트 아래'와 '오브젝트 위'는 실제 작동할 때 각각 깊이 값 100000, -100000을 의미한다. Rain/Snow 효과가 특이한데, 좌표값에 관계 없이 화면 전체를 채우며 size는 파티클 각각의 크기가 아니라 내리는 비/눈의 양을 결정한다. 비/눈이 계속 내리게 하려면 매 스텝마다 실행해야 한다. |
[1] 각각 가로/세로로 적용시키려면
hor
, vert
를 true로, 아니면 false로 맞춘다. margin
은 인스턴스의 중심이 방의 경계에서 얼마나 떨어져 있어야 반대쪽으로 이동시킬지를 결정하며, 기본값은 0이다.[2] 튕김 처리를 정밀하게 하려면 adv
를 true로, 대충 하려면 false로 맞춘다.[3] endaction
이 가질 수 있는 값은 액션에서의 순서대로 path_action_stop
, path_action_restart
, path_action_continue
, path_action_reverse
이다. absolute
는 절대적 위치에서 시작할 때 true로 설정하는 것에 주의.[4] checkall
은 모든 객체를 판정하려면 true, 솔리드 객체만 판정하려면 false로 맞춘다.[5] 다른 인스턴스를 지우려면 with(지울 오브젝트) {instance_destroy();}
혹은 instance_destroy(지울 오브젝트)
로 쓰면 된다. instance_destroy(지울 오브젝트, false)
로 쓰면 Destroy 이벤트가 발생하지 않는다.[6] 애니메이션이 필요 없을 경우 image_single = (subimage);
로 특정한 서브이미지에서 멈추게 할 수 있으며, -1로 설정하면 애니메이션이 다시 재생된다. GM6에서 공식적으로 삭제되었다고는 하지만, GMS에서도 잘 작동한다.[7] 스프라이트를 가로로 뒤집으려면 image_xscale
을, 세로로 뒤집으려면 image_yscale
을 음수로 설정한다.[색상값] 색상값으로 c_*
계열 상수를 넣을 수 있다. 이외에도 원하는 색상 값을 넣으려면 make_colour_rgb(r, g, b)
나 make_colour_hsv(hue, saturation, value)
함수를 이용하거나 헥스 코드 #RRGGBB를 $BBGGRR
포맷으로 입력하면 된다. 다만 GMS 1.4.9999의 경우 $BBGGRR
포맷의 색상값을 특정 조건에서 $RRGGBB
로 인식하는 버그가 있으니 주의.[9] priority
는 재생할 사운드의 우선순위이며, 클수록 동시에 많은 사운드가 재생되어도 끊기지 않는다.[레거시1] sound_play(sound)
혹은 sound_loop(sound)
[레거시2] sound_stop(sound)
[레거시3] sound_isplaying(sound)
[비동기] 창이 떠 있는 동안 게임이 멈춘다. GMS의 경우 이러한 함수는 디버그 전용이 되었고, 공식 도움말에서는 게임이 멈추지 않는 *_async
꼴의 비동기 함수를 권장한다.[14] delay
밀리초 이후에 표시된다. 이하 모든 'Splash'로 시작하는 액션에 해당된다.[15] 게임 창으로 띄운다.[16] splash_set_main
함수의 인자는 게임 창으로 띄울 때 true, 새 창이나 전체화면으로 띄울 때 false로 설정한다. splash_set_fullscreen
함수의 인자는 전체화면으로 띄울 때 true, 그렇지 않을 때 false로 설정한다.[파일시스템] GMS에서는 GM8과 달리 샌드박싱이 적용되어 따로 지정된 디렉토리 바깥의 파일을 읽고 쓸 수 없다. 외부 영역의 파일을 읽으려면 get_open_filename
, 외부 영역에 저장하려면 get_save_filename
함수를 통해 파일 열기/저장하기 창을 띄워야 한다.[파일시스템] [19] kind
의 값에 따라 다르게 취급되는데, 대표적으로 0은 일반 사운드, 1은 배경음악이다. preload
를 설정하지 않으면 그 사운드가 실제로 재생될 때까지 기다렸다가 불러온다.[20] 전자는 솔리드, 후자는 모든 오브젝트를 확인한다.[연산자] ==
대신 다양한 비교 연산자를 사용할 수 있다. !=
은 같지 않을 때, <
/>
은 미만/초과, <=
/>=
은 이하/이상.[이상이하] 액션 자체의 설정만으로는 미만/초과가 아닌 이상/이하를 확인할 수 없으므로, 이상/이하가 필요하다면 각각 미만/초과 + 아닐 경우의 조합을 사용해야 한다.[비동기] [24] if문뿐만 아니라 for문 등 조건을 요구하는 문법에 넣으면 된다. 진리값의 경우 true는 1, false는 0의 값을 가지므로 수식에 (괄호를 치고) 그대로 집어넣어도 된다.[25] button
이 가질 수 있는 값은 액션에서의 순서대로 mb_none
, mb_left
, mb_right
, mb_middle
이다. 마우스 아무 버튼을 뜻하는 mb_any
도 사용할 수 있다.[26] 상속 관계에서 부모와 자식 오브젝트는 여러 가지 이벤트를 가질 수 있는데, 부모에게 있는데 자식에게는 없는 이벤트가 있을 경우 자식은 그 이벤트를 '물려받아서' 그대로 실행한다. 한편 부모와 자식 모두 같은 이벤트가 있을 경우 자식은 부모의 이벤트를 물려받지 않고 자신의 것을 실행하는데, 이때 Call Parent Event로 부모의 이벤트를 강제로 물려받게 한다. 한편 부모의 이벤트를 자식이 물려받게 하고 싶지 않다면 이를 역이용해서 자식의 이벤트에 주석 액션 하나를 넣거나 빈 코드를 넣으면 된다. 아무 것도 없는 이벤트는 강제로 삭제되므로 하나라도 넣어야 한다.[27] 스크립트 자체는 인자를 0번부터 15번까지 16개 받을 수 있다.[28] 이 함수는 script
를 제외하고 인자를 0부터 14까지 15개 받을 수 있다.[29] 전자는 한 줄만 쓸 수 있지만, 후자는 여러 줄에 걸쳐 쓸 수 있다.[연산자] [이상이하] [연산자] [이상이하] [형변환] 문자열과 숫자를 그냥 합치려고 하면 자료형이 충돌하므로, 반드시 string
함수로 숫자를 문자열로 변환하여 합쳐야 한다.[35] score
대신 다른 값을 넣으면 하이스코어에 다른 점수가 등록된다. 글꼴 파트의 style
의 경우 0은 보통, 1은 굵게, 2는 기울임체, 3은 굵은 기울임체이다.[연산자] [이상이하] [형변환] 문자열과 숫자를 그냥 합치려고 하면 형변환 오류가 발생하므로, 반드시 string
함수로 숫자를 문자열로 변환하여 합쳐야 한다.[연산자] [이상이하] [41] Pixel, Disc(꽉 찬 원), Square, Line, Star, Circle(테두리만 있는 원), Ring(안쪽이 점점 옅어지는 원), Sphere(안쪽이 점점 짙어지는 원), Flare, Spark, Explosion, Cloud, Smoke, Snow. 코드로 사용할 경우 각각 pt_shape_*
꼴의 상수로 사용하며, 모두 소문자로 써야 한다.[42] 액션 이름은 '파티클 생성'이지만, 실제로는 파티클 타입을 생성한다.[43] part_type_sprite
에서 animate
는 해당 스프라이트의 애니메이션을 파티클에 적용할지의 여부, stretch
는 파티클의 수명이 끝날 때 애니메이션도 같이 끝나도록 강제 조절할지의 여부, random
은 매 스텝마다 무작위 서브이미지를 보일지의 여부이다.[wiggle] *_wiggle
인자에 0이 아닌 숫자를 지정하면 매 스텝마다 그 값이 무작위로 그만큼 커지거나 작아진다.[45] GM8에서는 알 수 없는 이유로 shape로 표기되어 있었다.[색상값] [47] 색상의 경우 colour1
로 고정된 단색을 부여하거나 colour3
으로 세 색 사이에서 바뀌게 할 수 있으며, colour_hsv
나 colour_rgb
로 make_colour_*
처럼 색상을 지정할 수 있다. 투명도의 경우 alpha1
로 고정된 투명도를 부여하거나 alpha3
으로 세 투명도 값 사이에서 바뀌게 할 수 있다. 무작위 투명도 기능은 없다.[incr] *_incr
인자에 0이 아닌 숫자를 지정하면 매 스텝마다 그 값이 그만큼 커진다.[wiggle] [50] 파티클의 마찰력에 직접적으로 관여하는 함수는 없으므로 마찰력을 구현하려면 speed_incr
인자에 -friction
을 넣어 매 스텝마다 속도가 줄게 해야 한다.[51] shape
가 가질 수 있는 값은 액션에서의 순서대로 ps_shape_rectangle
, ps_shape_ellipse
, ps_shape_diamond
, ps_shape_line
이다. distribution
은 이미터 영역 안에서 파티클이 등장하는 분포를 설정하는데, ps_distr_linear
(고르게 분포), ps_distr_gaussian
(정규분포. 가운데에 집중됨), ps_distr_invgaussian
(모서리에 집중됨)의 세 값을 가질 수 있다.[52] cursor
가 가질 수 있는 값은 액션에서의 순서대로 cr_none
, cr_default
이다. 이외에도 cr_arrow
(보통 상황에서의 마우스 커서), cr_handpoint
(링크 위에 마우스를 올렸을 때의 커서), cr_beam
(텍스트를 편집할 때의 커서) 등 여러 상수를 넣을 수 있다.[53] 엄밀하게는 현재 image_index
값이 적용된다.[outline] outline
은 액션에서와 달리 테두리가 true, 채우기가 false인 점에 유의.[색상값] [색상값] [outline] [색상값] [색상값] [60] align
이 가질 수 있는 값은 액션에서의 순서대로 fa_left
, fa_center
, fa_right
이다. 이외에도 draw_set_valign
으로 세로 정렬을 할 수 있는데, 이 함수에 인자로 줄 수 있는 값은 fa_top
, fa_middle
, fa_bottom
이다.[61] full
인자는 창 모드일 경우 false, 전체화면 모드일 경우 true로 설정한다. 창 모드와 전체화면 모드를 전환하려면 window_set_fullscreen(!window_get_fullscreen())
을 입력한다.[파일시스템] [63] type
이 가질 수 있는 값은 ef_cloud
, ef_ellipse
, ef_explosion
, ef_firework
, ef_flare
, ef_rain
, ef_smoke
, ef_smokeup
, ef_snow
, ef_spark
, ef_star
의 12종류이다. size
는 크기 순서대로 0, 1, 2를 쓸 수 있다.