디버거 사용법
디버거의 주요 목적은 게임의 모든 세부 사항을 "감시"할 수 있도록 하는 것입니다. 이를 위해 "감시 창"을 사용하며, 기본적으로 IDE 하단의 출력 창에 열립니다. 각 탭을 클릭하면 해당 탭에 포함된 감시 변수를 볼 수 있으며, 일부는 실시간으로 업데이트할 수 있고(실시간 디버깅이 활성화된 경우), 다른 일부는 게임이 일시 정지된 상태에서만 업데이트됩니다.
변수를 감시할 때, 여러 데이터 유형 중 하나일 수 있습니다. GameMaker는 인스턴스, 구조체, 배열 및 데이터 구조와 같은 변수의 내용에 대한 추가 정보를 제공할 수 있습니다. 이 경우 디버거는 변수 이름 옆에 작은 아이콘을 표시합니다. 아이콘을 클릭하면 구조체의 내용을 확장할 수 있으며, 값을 더블 클릭하여 새로운 값으로 변경할 수 있습니다. 배열이나 데이터 구조는 이 방법으로 재할당할 수 없지만, 일부 내용을 변경할 수 있습니다(예: 맵의 "키" 값이나 우선 순위 큐의 우선 순위 값은 변경할 수 없습니다).
감시 창 목록
창 이름 | 설명 |
---|---|
Locals | 현재 실행 중인 이벤트(또는 스크립트)의 속성을 보여줍니다. |
Globals | 현재 선언된 모든 전역 변수를 나열합니다. |
Watches | 특정 변수를 추가하여 추적할 수 있는 창입니다. |
Instance | 현재 코드 블록에 대한 인스턴스 변수 및 구조체를 보여줍니다. |
All Instances | 현재 방에 있는 모든 인스턴스를 나열합니다. |
Selected Instance | 게임에서 선택한 인스턴스의 정보를 보여줍니다. |
Render States | 현재 렌더링 중인 프레임의 상태 정보를 보여줍니다. |
Surfaces / Textures | 게임의 표면 및 텍스처 정보를 보여줍니다. |
Profile | 게임의 성능을 분석할 수 있는 시스템 프로파일을 보여줍니다. |
Buffer | 초기화된 버퍼의 데이터를 보여줍니다. |
활용 예제
Locals 예제
if (collision) {
// 현재 충돌하는 인스턴스의 변수 감시
var other_instance = other;
}
Globals 예제
global.score += 10; // 전역 점수 변수 업데이트
Watches 예제
// 특정 변수를 감시하기 위해 추가
watch_variable = player.health;
Instance 예제
// 인스턴스의 속성에 접근
var instance_health = self.health;
All Instances 예제
// 방에 있는 모든 인스턴스의 상태 확인
for (var i = 0; i < instance_count; i++) {
var inst = instance_find(all, i);
// 각 인스턴스의 상태 출력
}
Selected Instance 예제
// 선택한 인스턴스의 변수 출력
var selected_health = selected_instance.health;
Render States 예제
// 현재 프레임의 알파 값 확인
var draw_alpha = draw_get_alpha();
Surfaces / Textures 예제
// 특정 표면의 텍스처 정보 출력
var texture_info = surface_get_texture(surface_id);
Profile 예제
// 특정 함수의 성능 분석
profile_start("function_name");
// 함수 실행
profile_end("function_name");
Buffer 예제
// 버퍼 데이터 초기화 및 출력
var buffer_id = buffer_create(1024, buffer_grow, 1);
buffer_write(buffer_id, buffer_u8, 255);