게임제작/강좌

[GML]게임메이커에서 깨알같이 유용한 코드 활용 팁들

게임코드프리 2019. 4. 29. 07:34
반응형

#게임메이커 #GML코드 팁 


자주 쓰이지만 가끔 잊어버리는 게임메이커 코드들



게임메이커 스튜디오2로 오면서 다양한 기능들이 바뀌기도 했지만 여전히 유용한 코드 활용 팁에 대한

이야기를 하려고 합니다. 

실제로 게임 제작 방법 보다는 코드를 좀 더 깔끔하고 긴 코드를 보다 간략하게 할 수 있는 방법들 등

코드 활용법에 대한 깨알 같은 팁들에 대한 내용입니다.



  • 긴 코드를 보기 쉽게 줄여주는 Region


Region  이라는 함수는 게임메이커로 프로젝트를 진행시 방대해지는 코드의 정리가 되어 있지 않다면

코드를 다시 분석해야 할 때 천줄이 넘어가는 코드들을 하나하나 다시 살펴봐야 한다면 상상만 해도 끔찍한 사태가

벌어집니다. 이때 코드를 자신이 함축적으로 정리하고 마치 블로그에서 글을 접어두는 식으로

볼 수 있는 기능을 하고 있으며 사용 방법은 아래와 같습니다.


[REGION]

//레기온의 활용 방법


#region 코드 정리


(내용)


#endregion


이를 통해서 시작 #region (코드 내용의 제목) ~ #endregion 으로 단락을 지정하면

지금 당장 보지 않아도 될 코드를 접어둘 수 있기에 코드 정리에 매우 유용합니다.


  • 변수의 온 오프 쉽게 하자



이벤트를 호출 할 때에는 키를 눌러서 키고 꺼야 하는 코드를 작성해야 하는 일이 빈번하게 발생합니다.

예를 들어 인벤토리 창을 호출하고 다시 같은 키를 눌렀을 때는 사라져야 하는 경우에 주로 활용하거나

게임에서 스위치를 조작하여 온 오프를 구현해야 할 때에도 단지 코드 한줄로 구현이 가능합니다.


우선 게임메이커 코드를 어느정도 이해한다는 가정하에,



//이벤트 호출 온 오프

var event_name = true;

if keyboard_check_pressed(vk_enter)

{

event_name = !event_name;

}


여기서 온 오프 시킬 변수 이름을 이벤트 네임으로 정했고 그것을 엔터 키를 누를 때 마다 키고 꺼지는 형태로

반환합니다.

여기서 느낌표는 ~무엇 무엇이 아닐 경우 혹은 not 과 같은 연산자이며 true 혹은 false를 반환하기에 이처럼

코드 한 줄로 온 오프를 구현 할 수 있게 됩니다.


  • 자신이 만든 스크립트의 사용법 추가하기


기억의 문제일 수 있겠지만 워낙 자신이 만든 스크립트가 많아 질 경우에도 대체 이걸 어떻게 쓰는지...

스크립트에 넣어야 할 인자는 뭐였는지... 주석도 안 달아 놓았다면 더 까다로워 지는데, 

이를 스크립트 내에서 바로 사용 헬퍼를 만들어 줄 수 있습니다.


예를들면, 

///스크립트에서의 코드 이고 이것을 scr_item_create라고 정의

///@argument0 item_name

///@argument1 item_price

///@argument2 item_description

///@argument3 item_sprite


var i_name = argument[0];

var i_price = argument[1];

var i_description = argument[2];

var i_sprite = argument[3];


...(생략)...


위와 같이 아이템을 만들때 넣어야 할 인자들을 구성한 스크립트 파일(scr_item_create)을 만들고 나서

코드에서 위의 스크립트 파일을 작성 할 때 인자값을 모르면 매번 확인을 해야 하는데, 

///@argument0 설명

혹은 줄여서 ///@arg0 설명 , 으로 스크립트의 사용법을 코드 작성시 미리 보기가 나와 도움을 줍니다.


(스크린샷은 그냥 다른 스크립트의 예제)


  • 반복적으로 써야 하는 이벤트는 페어런츠와 칠드런으로 상속


예를들어서 대화창을 지속적으로 생성하고 연출하는 오브젝트를 만들고 그 기능을 매번 같은 코드를 

다른 오브젝트에서도 계속 써야 한다면 그것도 비효율적인 방법이며 이것을 스크립트로 대체 할 수 있겠지만

이벤트 내용을 조금씩 변경해야 하는 경우에는 상속을 활용하여 대체가 가능합니다.


여기서 모든 코드는 같지만 오브젝트가 생성 되었을 때의 이벤트만 바뀌는 talk system이라는 오브젝트를

만들었습니다.

그리고 나서 아래와 같이 npc라는 오브젝트가 이 대화창을 불러오고 각 npc가 대사만 바뀔 뿐이기에

활용하기 좋은 예라고 할 수 있습니다.



npc 오브젝트에서는 Parent 를 눌러서 부모 역할을 하게 되는 오브젝트를 선택합니다. 

예제에서는 부모 역할을 할 오브젝트가 obj_talk_system 이므로 선택을 했다면 위와 같은 화면이 나오며

이 때 변경을 할 create 이벤트에서는 마우스 오른쪽 클릭을 통해서 Override 를 선택하여

덮어 쓰기 할 내용으로 수정합니다.


이렇게 하면 다양한 npc들이 쉽게 대화를 할 수 있는 상태가 되며 이를 프로그래밍 언어로 상속이라고 합니다.



마치며...


게임 코드 강좌들은 대부분 관심이 없는 사람에게는 그저 지루한 내용이며, 코드를 배우려고 하는 사람들에게는

무슨 말인지 몰라서 지루한 내용입니다.


이 블로그에서도 몇가지 기초적인 강좌를 하고 있으므로 관심이 있으신 분들은 다른 포스팅도 읽어주시기 바랍니다.


2018/11/05 - [게임제작/강좌 ] - [GML]게임메이커 스튜디오로 게임프로그래밍의 기초를 공부하자 #1

2018/11/06 - [게임제작/강좌 ] - [GML]게임메이커 스튜디오로 게임프로그래밍의 기초를 공부하자 #2

2018/11/07 - [게임제작/강좌 ] - [GML]게임메이커 스튜디오로 게임프로그래밍의 기초를 공부하자 #3

반응형
facebook twitter kakaoTalk kakaostory naver band shareLink
人気ブログランキングでフォロー