GameMaker Language (GML) 고급 주제
이 문서에서는 GameMaker Language(GML)의 고급 주제를 다룹니다. GML을 효과적으로 사용하기 위한 몇 가지 최상의 관행과 개념을 제공하겠습니다.
1. 프로그래밍 시 최상의 관행
- 코드 구조화: 코드를 잘 구조화하여 가독성을 높이고 유지보수가 용이하게 합니다.
- 주석 사용: 코드를 이해하기 쉽게 주석을 추가하여 나중에 쉽게 참조할 수 있게 합니다.
- 모듈화: 기능별로 코드를 나누어 재사용성을 높입니다.
2. 객체(Object)와 인스턴스(Instance)
- 객체(Object): 게임의 템플릿으로, 속성과 메소드를 정의합니다.
- 인스턴스(Instance): 객체의 실제 사례로, 게임에서 행동하는 개별적인 요소입니다.
예제 코드
// 객체 생성
var player = instance_create_layer(0, 0, "Instances", obj_player);
3. 값과 참조
- 값(Value): 변수가 저장하는 실제 데이터입니다.
- 참조(Reference): 데이터의 위치를 가리키는 포인터입니다. 두 변수가 동일한 데이터를 참조하게 만들 수 있습니다.
예제 코드
var a = 10; // 값
var b = a; // b는 a의 값을 복사
b = 20; // b만 20으로 변경, a는 여전히 10
var c = a; // c는 a를 직접 참조
4. 비트 연산자(Bitwise Operators)
비트 연산자는 이진 숫자에서 작동하며, 효율적인 데이터 처리를 가능하게 합니다.
주요 비트 연산자
| 연산자 | 의미 |
|---|---|
| & | AND |
| | | OR |
| ^ | XOR |
| ~ | NOT |
| << | Left Shift |
| >> | Right Shift |
예제 코드
var a = 5; // 0101
var b = 3; // 0011
var c = a & b; // c는 1(0001)
5. 타입 테이블(Type Tables)
타입 테이블은 여러 가지 데이터 타입을 저장하는 방법으로, 각 타입의 고유한 특성을 가집니다.
예제 코드
var myTable = ds_map_create();
ds_map_add(myTable, "playerName", "John");
ds_map_add(myTable, "playerScore", 100);
6. 공백 문자(White-space Characters)
공백 문자는 코드에서 가독성을 높이기 위해 사용되며, 필요에 따라 줄바꿈이나 들여쓰기를 통해 코드 구조를 유지합니다.
예제 코드
// 공백과 들여쓰기를 사용하는 예
var x = 10; // 변수 x에 10 할당
var y = 5; // 변수 y에 5 할당
var sum = x + y; // x와 y의 합
7. 벡터(Vectors)
벡터는 2차원 공간에서 위치와 방향을 나타내는 수학적 개념입니다. 게임에서 움직임을 다루는 데 매우 유용합니다.
벡터 연산 예제
var direction = 45; // 45도 방향
var speed = 5; // 속도
var xMovement = lengthdir_x(speed, direction);
var yMovement = lengthdir_y(speed, direction);
x += xMovement; // x 위치 업데이트
y += yMovement; // y 위치 업데이트
이 문서는 GML의 고급 주제를 간단히 설명했습니다. 실습을 통해 이러한 개념들을 잘 이해하고 적용할 수 있길 바랍니다.