방 속성
방 속성 섹션에서는 설정의 상속 토글을 설정하고, 지속성, 방의 크기 및 뷰포트를 관리하는 옵션을 변경할 수 있습니다. 이는 자산 브라우저에서 방 자산을 선택할 때 검사기에서 표시됩니다.
지속성
일반적으로 방을 떠나고 나중에 같은 방으로 돌아오면 그 방은 초기 설정으로 리셋됩니다. 대부분의 게임에서는 괜찮지만, RPG나 비선형 게임에서는 방을 오가며 마지막으로 남긴 상태를 유지하고 싶을 수 있습니다. '지속성' 체크박스를 선택하면 방의 상태가 기억되어 나중에 돌아왔을 때 마지막으로 남긴 상태와 동일하게 유지됩니다. 게임이 재시작될 때만 초기 상태로 리셋됩니다. 단, 특정 객체를 지속성으로 표시한 경우, 이 객체의 인스턴스는 방에 남아 있지 않고 다음 방으로 이동합니다.
디스플레이 버퍼 지우기
'디스플레이 버퍼 지우기' 옵션을 선택하면 특정 프레임에서 다른 것을 그리기 전에 디스플레이 버퍼를 색상으로 미리 채웁니다. 뷰가 항상 전체 화면을 덮거나 불투명한 배경이 그려질 경우 이 옵션을 해제하여 리드로우를 절약하고 게임을 최적화할 수 있습니다. 그러나 여러 뷰가 화면에 열려 있고 배경에 투명 부분이 있는 경우 이 옵션을 선택하여 빈 영역을 원하는 색상으로 채울 수 있습니다. 현재 이 색상은 코드로만 설정할 수 있습니다.
너비, 높이 및 기타 옵션
방은 크기를 가져야 하며, 이는 픽셀 단위로 너비와 높이를 입력하여 정의됩니다. 필요에 따라 방 생성 코드를 추가할 수 있습니다. 생성 코드는 하단의 버튼을 통해 추가할 수 있으며, 이 버튼을 클릭하면 코드 또는 비주얼 편집기가 열립니다. 이 편집기를 통해 방의 시작 시 실행될 함수/액션 및 코드를 입력할 수 있습니다. 이 코드는 방에 들어갈 때마다 실행되며, 방이 지속성으로 표시된 경우 방에 처음 들어갈 때만 실행됩니다.
인스턴스 생성 순서
방 속성의 마지막 버튼은 인스턴스 생성 순서 창을 엽니다. 이 창에서는 방의 모든 인스턴스를 생성될 순서대로 나열합니다. 특정 인스턴스를 다른 인스턴스보다 먼저 생성해야 하는 경우, 클릭하여 원하는 위치로 드래그할 수 있습니다.
카메라 및 뷰포트
방의 다음 속성 세트는 카메라 및 뷰포트와 관련된 것입니다. 카메라 뷰는 방의 다른 부분을 화면의 다른 위치에 그리거나 방의 일부를 전체 화면에 그리는 메커니즘을 제공합니다. 예를 들어, 대부분의 플랫폼 게임에서 카메라 뷰는 주인공을 따라가며, 전체 레벨을 화면에 표시하면 캐릭터가 너무 작아져 플레이어에게 놀라움이 없게 됩니다. 카메라 뷰는 멀티플레이어 게임이나 협동 게임에서도 사용되며, 화면의 한 부분에서 한 플레이어를 보고 다른 부분에서 다른 플레이어를 볼 수 있는 분할 화면 설정을 만들 수 있습니다.
뷰 속성의 상단에는 '뷰포트 사용'이라는 체크박스가 있습니다. 이 체크박스를 선택해야 카메라 뷰를 게임에서 사용할 수 있습니다. '뷰포트 배경 지우기' 체크박스는 뷰포트에 대해 디스플레이 버퍼를 지우는 옵션으로, 각 프레임을 그리기 전에 애플리케이션 표면을 창 색상으로 지웁니다. 이 옵션을 활성화하면 배경의 투명 영역을 통해 의도하지 않은 그래픽이 보이지 않도록 합니다.
카메라, 뷰 및 뷰포트
카메라 뷰는 두 가지 값 집합으로 정의됩니다: 카메라 뷰 자체와 이 뷰가 화면에 그려질 포트입니다. 카메라는 방 내의 한 점으로, 방이 화면에 어떻게 표시될지를 설정하는 데 사용됩니다. 뷰는 카메라의 위치, 투영 및 회전에 따라 카메라가 보는 것입니다. 뷰포트는 카메라 뷰가 화면에 표시될 물리적 영역입니다.
예를 들어, 640x480 카메라 뷰를 방에 설정하고 포트를 320x240으로 설정하면, 뷰가 해당 크기로 축소되어 화면에 표시됩니다. 이와 같이 화면 크기를 유지하면서 카메라 뷰를 변경하여 방의 더 많은 부분을 표시할 수 있습니다.
카메라 및 뷰포트 속성
카메라 뷰는 항상 방 내의 직사각형 영역으로 정의되며, 이 영역의 왼쪽 상단 모서리 위치, 너비 및 높이를 지정해야 합니다. 그런 다음 이 영역이 화면에 표시될 위치를 정의하여 뷰포트를 설정합니다. 여러 포트를 가질 수 있으며, 포트가 겹칠 경우 지정된 순서로 하나 위에 다른 것이 그려집니다.
전반적인 화면 영역은 항상 직사각형으로 정의되므로, 포트가 오프셋되더라도 직사각형을 형성하며, 빈 공간은 디스플레이 버퍼의 창 색상으로 채워집니다. 이러한 경우 '디스플레이 버퍼 지우기'를 항상 체크해야 합니다.
객체 추적
카메라는 객체 추적 옵션도 있습니다. 특정 객체를 "추적"하고 싶을 때 사용합니다. 이를 위해 메뉴 아이콘을 클릭하고 팝업 목록에서 객체를 선택해야 합니다. 카메라는 이제 해당 인스턴스의 x 및 y 위치를 추적하여 따라갑니다. 카메라의 일반적인 동작은 추적하는 인스턴스가 뷰의 가장자리 주위에 있는 "버퍼" 영역에 너무 가까워질 때만 이동하는 것입니다. 이 영역은 수평 및 수직 경계 값을 사용하여 정의할 수 있습니다.
마지막으로 카메라가 버퍼 영역에 도달했을 때 이동하는 수평 및 수직 속도를 지정할 수 있으며, 기본값은 -1입니다. 이 기본값은 "즉시"를 의미하며, 추적 인스턴스가 수평 또는 수직 경계 버퍼 영역을 벗어나는 순간 뷰가 이동합니다. 이 값이 0이면 뷰가 전혀 이동하지 않으며, 다른 양수 값은 프레임당 이동할 픽셀 수를 나타냅니다.
방 물리학
게임에서 내장 물리학 기능을 사용하기 전에 방이 물리학 방임을 알려야 합니다. 이를 위해 방 물리학 섹션 상단의 '물리학 활성화' 옵션을 선택해야 합니다. 이 옵션을 활성화하면 물리학 인스턴스가 작동할 수 있도록 기본 속성을 설정할 수 있습니다. 물리학 세계에 대한 보다 정밀한 제어는 코드를 사용하여 설정할 수 있습니다.
다음으로 세계의 중력을 설정해야 합니다. 중력의 세기와 방향은 (0, 0) 지점을 기준으로 설정한 x/y 위치의 벡터로 계산됩니다. 예를 들어, x가 0이고 y가 1이면 중력 방향이 아래로 설정되고 힘이 초당 1미터가 됩니다. 마지막으로, 게임 메이커가 모든 물리학 계산의 기준으로 사용할 픽셀 대 미터 비율을 설정해야 합니다. 물리학 기능은 실제 측정값을 기반으로 작동하므로 이 값을 설정해야 합니다.
물리학을 방에서 활성화하면 방 내의 모든 물리학 활성화 인스턴스는 물리학 기능과 변수를 사용하여 이동해야 합니다. "전통적인" 이동 방식은 인스턴스의 X/Y 위치를 설정하거나 속도와 방향을 설정하는 것이며, "물리학" 이동 방식은 물리적 힘과 충격을 사용하여 이동하는 것입니다. 이 두 시스템은 상호 배타적이며, 물리학 인스턴스를 비물리학 함수로 이동할 수 없고 비물리학 인스턴스를 물리학 함수로 이동할 수 없습니다.
활용 예제
// 방 생성 코드 예제
if (room_persistent) {
// 방이 지속적일 경우 실행할 코드
show_message("이 방은 지속적입니다.");
}
// 카메라 추적 예제
camera_set_target(camera, player_instance);
// 뷰포트 설정 예제
view_xview[0] = 0;
view_yview[0] = 0;
view_wview[0] = 640;
view_hview[0] = 480;
// 중력 설정 예제
physics_world_set_gravity(0, 1);
// 인스턴스 생성 순서 예제
instance_create_layer(0, 0, "Instances", obj_player);
// 디스플레이 버퍼 지우기 예제
if (clear_display_buffer) {
window_set_colour(c_black);
}
// 카메라 속도 설정 예제
camera_set_speed(camera, 5, 5);
// 뷰포트 배경 지우기 예제
if (clear_viewport_background) {
draw_clear_alpha(c_white, 1);
}