객체와 인스턴스

지금까지 본 자산을 통해 게임의 자산 브라우저에 멋진 이미지와 소리를 추가할 수 있지만, 게임 내에서 실제로는 아무런 기능이 없습니다. 이를 위해 GameMaker에서 가장 중요한 자산인 객체(Object) 자산이 필요합니다. 객체는 게임의 여러 측면을 제어하고 특정 작업을 수행하는 데 사용되는 특별한 자산입니다. 대부분의 경우, 객체는 게임 방에서 볼 수 있도록 스프라이트와 연결되어 있지만, 때때로 통계 추적이나 컷신 타이밍 설정과 같은 작업을 수행하는 "비하인드 씬" 컨트롤러 객체로 사용되기도 합니다. 객체는 행동을 부여받을 수 있으며, 특정 이벤트나 서로 간의 상호작용에 반응할 수 있습니다. 게임에서 보는 대부분의 것들은 객체와 사용자 및 서로 간의 상호작용을 기반으로 합니다.

인스턴스

이제 객체에 대해 이야기할 때 인스턴스에 대해서도 이야기하지 않을 수 없습니다. GameMaker로 만든 게임에서 캐릭터, 몬스터, 공, 벽 등은 모두 인스턴스로 간주됩니다. 인스턴스는 본질적으로 방에 배치된 객체의 "복사본"입니다(객체를 인스턴스의 템플릿으로 생각하세요). 따라서 인스턴스에 영향을 미치거나 변경하는 것에 대해 이야기할 때, 방 안의 특정 객체 복사본이 영향을 받는 것을 의미하며, 나머지는 영향을 받지 않습니다. 반면 객체에 영향을 미치거나 변경하는 것에 대해 이야기할 때는, 그 객체에 대한 모든 작업이 이후 생성된 모든 인스턴스에 반영된다는 의미입니다.

즉, 객체는 인스턴스의 템플릿이고, 인스턴스는 게임을 만들기 위해 방에 배치하는 것입니다.

객체 편집기

새로운 객체 자산을 만들려면 자산 브라우저의 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 Create -> Object를 선택하면 됩니다. 이것이 객체 편집기 창이며, 현재 객체 속성을 보여줍니다. 가장 먼저 해야 할 일은 객체의 이름을 지정하는 것입니다. 일반적으로 "obj_"와 같은 접두사나 다른 식별자를 사용합니다.

객체가 다른 객체의 인스턴스와 충돌을 등록하고 무언가를 그리려면 스프라이트가 할당되어야 합니다. 스프라이트는 버튼을 사용하여 추가할 수 있습니다. 이 버튼을 클릭하면 자산 탐색기가 열리고 사용할 스프라이트를 선택할 수 있습니다(자산 브라우저에서 스프라이트를 드래그하여 객체 편집기에 떨어뜨려 할당할 수도 있습니다).

적절한 스프라이트가 없는 경우, New Sprite 버튼을 클릭하여 새 스프라이트 자산을 만들고 원하는 대로 편집할 수 있습니다. 이렇게 하면 스프라이트가 자동으로 열려 있는 객체에 할당됩니다.

스프라이트를 선택한 후에는 객체의 다른 속성(예: 보이기 여부, 충돌 마스크 종류 등)을 변경할 수 있습니다. 간단한 게임의 경우 여기서 아무것도 변경할 필요가 없으며, 이제 객체에 이벤트를 추가할 수 있습니다.

이벤트

이벤트는 게임 루프에서 특정 순간에 프로그래밍하여 무언가를 발생시키는 것입니다. GameMaker는 이러한 이벤트의 주기로 작동합니다. 방이 시작되는 순간부터 끝나는 순간까지 게임 루프가 실행되며, 매 프레임마다 일련의 이벤트가 실행됩니다. 이러한 이벤트에 응답하는 GML 코드나 GML 비주얼 작업을 인스턴스에 배치할 수 있습니다(스텝은 게임 시간의 순간으로, 일반적으로 초당 60회 실행됩니다).

이벤트를 추가하려면 Add Event 버튼을 클릭합니다. 다양한 이벤트 카테고리가 있으며, 일부는 다른 하위 카테고리를 포함합니다. 여기서 모든 이벤트를 다루지는 않지만, 가장 중요한 다섯 가지를 간략히 설명하겠습니다.

이벤트 종류 설명
생성 이벤트 객체의 인스턴스가 처음 생성될 때 발생하며, 인스턴스가 방에 배치될 때 가장 먼저 실행됩니다.
스텝 이벤트 게임 시간이 스텝으로 나뉘며, 게임 속도에 따라 초당 스텝 수가 결정됩니다.
충돌 이벤트 두 개 이상의 객체 인스턴스가 충돌했을 때 발생합니다.
그리기 이벤트 매 게임 프레임마다 호출되며, 객체의 스프라이트를 그리거나 사용자 정의 그리기를 수행합니다.
파괴 이벤트 인스턴스가 파괴될 때 마지막으로 실행되는 이벤트입니다.

이벤트를 추가하면 GML 코드 또는 GML 비주얼 편집기가 열리며, 이 창에서 이벤트가 발생할 때 수행할 코드나 작업을 추가할 수 있습니다.

활용 예제

// 생성 이벤트에서 변수 초기화
score = 0;
lives = 3;

// 스텝 이벤트에서 점수 증가
score += 1;

// 충돌 이벤트에서 적과 충돌 시 생명 감소
if (other.object_index == obj_enemy) {
    lives -= 1;
}

// 그리기 이벤트에서 점수와 생명 표시
draw_text(10, 10, "Score: " + string(score));
draw_text(10, 30, "Lives: " + string(lives));

// 파괴 이벤트에서 점수 추가
if (instance_exists(obj_enemy)) {
    score += 100;
}

이러한 예제들은 객체와 인스턴스를 활용하여 게임의 다양한 기능을 구현하는 방법을 보여줍니다.

Read more

기술 문서 해설 및 활용 예제

이 문서는 특정 기술에 대한 설명과 활용 방법을 다룹니다. 아래에서 내용을 쉽게 이해할 수 있도록 해설하고, 다양한 활용 및 응용 예제를 추가로 제공합니다. 기술 개요 이 기술은 게임 개발에서 자주 사용되는 기능으로, 특정 작업을 자동화하거나 효율적으로 처리하는 데 도움을 줍니다. 주로 게임의 로직을 구성하거나 사용자 인터페이스를 제어하는 데 사용됩니다. 주요

By 이재협/실장/시스템개발실/PHYSIA

키워드 설명서

이 문서는 특정 키워드에 대한 설명과 사용법을 제공합니다. 문법 (arguments); 인수 인수 이름 유형 설명 argument_name 인수에 대한 설명을 여기에 작성합니다. 반환값 (선택적 설명) 예제 code_example() { // 여기에 코드 예제를 설명합니다. } 코드 예제 설명 위의 코드 예제는 특정 기능을 수행하는 함수의 기본 구조를 보여줍니다. 이 함수는 인수를 받아들이고, 특정

By 이재협/실장/시스템개발실/PHYSIA

GameMaker 환경 설정 및 기능

이 문서에서는 GameMaker의 환경 설정 및 다양한 IDE 기능에 대한 정보를 제공합니다. 다음은 주요 항목들입니다: IDE 환경 설정 IDE(통합 개발 환경) 설정은 GameMaker의 전반적인 사용 경험을 조정하는 데 도움을 줍니다. 여기서 사용자는 개인의 필요에 맞게 다양한 옵션을 설정할 수 있습니다. 주요 설정 항목 설정 항목 설명 테마 IDE의 색상

By 이재협/실장/시스템개발실/PHYSIA

GameMaker IDE 설명서

GameMaker IDE는 게임을 만들고 소프트웨어에서 제공하는 모든 기능을 활용하는 주요 인터페이스입니다. 이 프로그램은 시작 화면부터 게임을 만들기 위해 사용하는 모든 편집기 창까지 포함되며, 매뉴얼과 다양한 튜토리얼에서 IDE라고 언급됩니다. IDE의 구성 요소 다음 섹션에서는 IDE에 대한 정보를 다룹니다: 1. 설정 및 기능 IDE의 설정 및 기능은 사용자가 게임 개발을 보다 효율적으로

By 이재협/실장/시스템개발실/PHYSIA