내장 변수 built-in variables 둘러보기


출처 http://cafe.naver.com/crazygm/174339



겜스의 Scripts 메뉴에서 Show Built-in variables 를 하면 모든 내장 변수를 볼 수 있습니다.

----------------
겜메에는 미리 준비된 내장변수들이 있습니다. 잘 이용하면 좋고요.
사용자가 직접 만들 변수는 이 변수들과 이름이 겹치면 안됩니다.
// *이름 규칙: 모든 이름은 영어와 _ 언더바 가능 첫글자가 아닌 숫자 가능, 이외의 기호들은 이름이 아닌 문법입니다

코드를 치면 에디터에 내장변수는 색으로 나오지만 
초보자들은 액션부터 시작하므로 
내장변수인지 알기 어렵다는 상대적 아이러니에 빠지게 됩니다.

처음 겜메를 접했다면 내장변수에는 무엇이 있는지 둘러보면 좋겠죠.
-----------------

GameMaker Studio 1.3.1443 기준.
일단 전부 나열 후, 아는 것만 대략 적을게요.
궁금하거나 자세히 알고 싶으시면 겜스 헬프 F1 참고 (우리들의 교과서죠)


내장 변수 (총: 203개) global + local
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
global(전역 변수): 모든 곳에서 공통으로 사용하는 변수 
1. 변수명만 가지고 접근: 내장 글로벌일 때, globalvar 로 선언했을 때
2. global.변수명 으로 접근: global 변수명 으로 선언했을 경우

application_surface  // 기본 드로우가 그려지는 곳
argument   // 유저 스크립트(함수 비슷)에서 인자를 받을 때 사용. 0~15번까지
argument0 ~ argument15
argument_count  // 스크립트로 전달된 인자 개수
argument_relative
async_load
// ++ 비동기 함수 사용시 'id'와 'status' 등이 자동으로 담기는 곳, ds_map 형식
// 비동기 이벤트에서만 값을 지니고 있다가 -1로 리셋됨

// background_alpha[0...7] 처럼 배열인 변수들이 있음. [0] 과 없는 것은 같음.
background_index    // 배경 목록
background_visible // 배경 보이기
background_x          // 배경 x좌표(왼쪽상단 꼭지점)
background_y
background_height // 배경 높이
background_width    // 배경 너비(가로 길이)
background_hspeed // 배경 횡(가로) 속도
background_vspeed   // 배경 수직(세로) 속도
background_htiled   // 배경 횡(가로)로 타일 이어가기
background_vtiled // 배경 수직(세로) 타일 이어가기
background_xscale   // 배경 x늘림 배율
background_yscale
background_foreground // 전경으로 지정할 지 여부
background_alpha   // 배경 알파 투명도
background_blend   // 배경 혼합할 색
background_color   // 배경색 설정. 아래 ** 컬러 상수 설명참고.
background_colour
background_showcolor   // 배경색 보여줄 지 여부
background_showcolour

browser_height
browser_width

current_day       // 현재 시간 관련 변수들
current_hour
current_minute
current_month
current_second
current_time
current_weekday
current_year

debug_mode   // 디버그 모드일 때 true
delta_time    //@ 1프레임에 걸린 실제시간 측정용도
display_aa     // 현재 기기에서 안티 앨리어싱(계단 제거) 가능 수치
error_last
error_occurred
event_action
event_number
event_object
event_type
fps                   // Frame Per Second 초당 프레임(최종 출력 프레임, 룸 스피드에 제한됨)
fps_real            // 초당 (내부?) 처리 프레임
game_id

health  // * 체력. 유저 변수와 겹치거나 혼동 주의
lives  // * 생명수
score      // * 점수
show_health  // 체력, 생명, 점수 보여줄지 여부
show_lives
show_score

iap_data

instance_count  // (활성) 인스턴스 총 개수(현재 룸 기준)
instance_id       // instance_id[0] ~ instance_id[instance_count - 1] 로 모든 (활성) 인스턴스 접근 가능
//@ 위 두 변수 겜메와 다르게 이벤트가 끝나야 변경이 반영됨. (1.4.1567테스트, 의도라함)

keyboard_key    // 키보드로 입력한 현재 키코드 (키마다 고유 숫자가 있어요)
keyboard_lastkey    // 마지막 키
keyboard_lastchar  // 마지막 문자
keyboard_string      // 입력한 스트링(문자들 집합)

cursor_sprite // 커서 스프라이트 지정, animation speed 조절 불가
mouse_button   // 마우스 (현재) 눌린 버튼
mouse_lastbutton   // 마우스 마지막 눌린 버튼
mouse_x        // 마우스 좌표
mouse_y

os_browser 
os_device
os_type
os_version
program_directory
temp_directory
working_directory

room      //  게임이 구동되는 공간 방. 배경과 각종 오브젝트를 배치하죠.
room_caption (deprecated) // 차후 버전에 제거될 수 있음
room_first   // 목록상 맨 위에 있는 방
room_height  // 룸의 (픽셀) 높이
room_width   // 룸의 (픽셀) 너비
room_last    // 마지막 방 (목록 맨 아래)
room_persistent  // 룸 유지를 체크하면 다른 방 다녀와도 인스턴스들 상태 보존
room_speed  // 룸 속도, 게임 스피드(초당 처리 스텝)조절 및 FPS를 제한. 보통 모니터가 60hz이므로 60권장.

transition_color
transition_kind   // 겜스 obsolete(폐기된), 겜메에서 룸 옮길 때 효과
transition_steps // 겜스 obsolete, 효과 처리 스텝 시간 (80 기본)

view_enabled  // 뷰 기능 켜기
view_current   // 현재 뷰 번호, Draw Event, ReadOnly
// 이하 뷰관련들, [0...7] 배열임 
view_visible     // 뷰를 보여 주겠냐 여부
view_object    // 뷰가 추적할 오브젝트
view_hborder   // 뷰가 오브젝트 추적시 외곽틀의 수평 두께 (뷰 너비의 절반을 넘기면 바로 따라감)
view_vborder   // 뷰가 오브젝트 추적시 외곽틀의 수직 두께 (뷰 높이의 절반을 넘기면 바로 따라감)
view_hspeed   // 뷰의 횡 추적 스피드
view_vspeed   // 뷰 수직 추적 스피드
view_xview    // 뷰 x좌표
view_yview    // 뷰 y좌표
view_hview     // 뷰의 픽셀 높이
view_wview    // 뷰 너비 
view_xport     // 뷰포트 x좌표
view_yport    // 뷰포트 y좌표
view_hport      // 뷰포트 (최종 출력 픽셀) 높이
view_wport     // 뷰포트 너비
view_angle    // 뷰 각도
view_surface_id  // !뷰에 서피스 할당해서 보여주기

webgl_enabled


/* 오브젝트와 인스턴스는 다름
// "objectName.varName" 오브젝트 변수를 접근시
// - 참조: 인스턴스 첫대표 값만, 
// - 할당: 첫대표에게 할당하고 해당 오브젝트의 모든 인스턴스의 해당 변수가 (첫대표와) 같아짐 
// 인스턴스 접급법들
// 충돌이벤트 other.id, 생성함수 충돌함수 등 id 반환 함수들, 순차 접근 시 조건 충족 id 보관등 이용.
// with (ojbectName) { varName }  // with 문법 해당 오브젝트의 모든 인스턴스 순차 접근
// ( instance_find(objectName, n-1) ).varName  // n 번째 인스턴스 변수 접근
// instance_id[0] ~ instance_id[instance_count - 1] 로 모든 (활성) 인스턴스 접근 가능 // global 임
*/

local: 로컬 지역 변수: 인스턴스에 종속된 변수. 
alarm           // 알람: 시간(스텝, 프레임 단위) 세팅한 후 그 시간 후에 뭘 시킬 때 써요.

x             // * 현재 x 좌표
y
xprevious  // 이전 (스텝의) x 좌표   x와 xprevious가 같다면 횡으로는 안(못)움직였다고 할 수 있죠.
yprevious
xstart       // 처음 배치 혹은 생성시의 시작 x좌표
ystart

direction       
// * 방향, 인스턴스의 방향 0~360. 방향과 속도를 정해주면 방향으로 이동. 오른쪽이 0도
friction         //  마찰개수, 설정하면 속도(speed)를 자동으로 줄여줌
gravity          // 중력가속
gravity_direction  // 중력 방향
hspeed         // 횡(가로) 속도
vspeed          // 수직(세로) 스피드
speed // * 스피드 방향과 스피드가 주어지면  방향으로 이동.

id                 // 인스턴스의 고유 아이디, 모든 인스턴스 차례로 접근 가능한 instance_id[] 라는 것과 혼동 주의
object_index    // 인스턴스가 어느 오브젝트인지 알 수 있어요
persistent        // 룸이 바껴도 유지 이어갈지 여부.
visible           // 인스턴스를 화면에 보이게 할지 여부. 드로우 이벤트 제외 다른 처리는 함
depth           // 그림들이 겹쳐질 때 깊이, 수치 낮을 수록 위로 올라옴.
solid // 솔리드 딱딱한 물체 고체란 뜻. 주로 통과 못시키게 하려는 용도. true, false (1, 0)

mask_index       // 다른 스프라이트의 마스크를 가져올 수 있어요. 충돌 마스크
bbox_bottom  // 바운드 박스(충돌 마스크)의 각각: 바닥, 왼쪽, 오른쪽, 위
bbox_left
bbox_right
bbox_top

/*
sprite 는 1개 이상의 (sub)image 들로 구성되는데요. 
그 (sub)image들의 리스트 번호가 image_index입니다.
*/
sprite_index         // 현재 스프라이트를 뜻하고 다른 스프라이트로 바꿀 수도 있어요.
sprite_height         // 스프라이트 높이
sprite_width        // 스프라이트 너비
sprite_xoffset     // 스프라이트 origin 중심으로부터 왼쪽끝까지의 픽셀 너비(차이)
sprite_yoffset     // 스프라이트 origin 중심으로부터 위쪽끝까지의 픽셀 높이(차이)

image_alpha   // 스프라이트 이미지의 투명도
image_angle   // 스프라이트 이미지의 각도
image_blend   // 블렌드 섞을 색상
image_index    
// sub-image들 중에 현재 (보여줄)번호. 범위 0 ~ (image_number-1), image_speed 만큼 스텝마다 더해짐
image_speed    // sub-image들을 1스텝(프레임)당 넘길 이미지 개수 0~1 사이로 조절(예: 0.5 2배 느려짐)
image_number   // sub-image의 총 이미지 개수
image_single    //  !!! 모름 !!!, 싱글 이미지인지 여부일 듯 싶네요.
image_xscale    // 이미지 가로 늘림 배율
image_yscale    // 이미지 세로 늘림 배율

path_endaction  // 패스지정에 쓰는 것들...
path_index
path_orientation
path_position
path_positionprevious
path_scale
path_speed

phy_active                // 물리 피직스 켜기. 물리류 아직 잘 모름.
phy_angular_damping
phy_angular_velocity
phy_bullet
phy_col_normal_x
phy_col_normal_y
phy_collision_points
phy_collision_x
phy_collision_y
phy_com_x
phy_com_y
phy_dynamic
phy_fixed_rotation
phy_inertia
phy_kinematic
phy_linear_damping
phy_linear_velocity_x
phy_linear_velocity_y
phy_mass
phy_position_x
phy_position_xprevious
phy_position_y
phy_position_yprevious
phy_rotation
phy_sleeping
phy_speed
phy_speed_x
phy_speed_y

timeline_index             // 타임라인. 시간에 따른 행동 설정
timeline_loop
timeline_position
timeline_running
timeline_speed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(GMS 1.4.1451 총: 206개)  // 코드 내 북마크 기능 shift+ctrl+<number>지정 토글 ctrl+<number>
global:  game_display_name // 게임 이름 pro 이상
global:  game_project_name // 상동 플랫폼에 따른 저장-친화 형식 비허용은 _ 로 변경 
global:  game_save_id  // ReadOnly, 파일저장디렉토리(파일 저장했을 경우), HTML5에서 안됨.
(GMS 1.4.1711 총: 208개)
global:  pointer_invalid
global:  pointer_null
~~~~~~~~~~~~~~~~~~~~~


내장 함수 총수는 1538개네요. (1.4.1451: 1565) (1.4.1711: 1786)
배워가면서 필요할 때마다 헬프를 봐야겠죠.

내장 상수: 미리 정해진 수, 총 개수는 569개네요. (1.4.1711:643)


** 컬러 상수.
background_color 등 color가 들어갈 때 코드로 세팅하고 싶은데 방법이... 
컬러 숫자를 넣어야해요. 컬러에 대해 더 배우기 전까지 막막하죠. 미리 준비된 상수가 19개 있어요.
background_color = c_aqua; 이런식으로 넣을 수가 있다는 것이죠.
함수중에 draw_set_color ( c_black ); 이런식으로도 그릴 색을 정할 수도 있고요.
~~~~~~~~~~~~
c_aqua, c_black, c_blue, c_dkgray, c_fuchsia, c_gray, c_green, c_lime, c_ltgray, c_maroon 
c_navy, c_olive, c_orange, c_purple, c_red, c_silver, c_teal, c_white, c_yellow
~~~~~~~~~~~~
이 외의 색들은 color에 대해서 헬프를 참고하셔서 더 배우셔야해요. 
웹페이지에서 흔히 쓰는 #RGB 16진수 방법도 가능한데요. #deebfa 이런식으로 말이죠. 눈보호를 위한 배경색 '데브파'
겜스에서는 #대신 $달러 표시를 쓰네요.
// 또한 주의, #RGB 순서가 아닌 $GBR 순서입니다. #deebfa는 $faebde 라고 해야하는 것이죠.
색 관련 함수들도 여럿 있어요.
 
빠져서는 안될 상수 2개 true, false  // 1과 0 이죠.  
pi 도 있고요. 3.141592... 
//  상수라서 정해놓은 것인데요. 정확도는 소수12였나 15~16자리까지인가 표시되요.
// str1 = string_format(pi, 1, 20);  이것을 이용해서 draw_text 함수를 이용해서 출력해보면 알 수 있죠.