게임제작/강좌

[GML]게임메이커 스튜디오로 게임프로그래밍의 기초를 공부하자 #1

게임코드프리 2018. 11. 5. 09:00
반응형

#게임메이커 스튜디오 강좌 #게임메이커 프로그래밍 #기초강좌


게임메이커 스튜디오로 프로그래밍 기초를 습득하자!



생업이 있다보니 가끔씩 하게되어 자주 잊어버리거나 조금 익숙해졌다 싶으면 업데이트 되어 바뀌는 

게임메이커 때문에 계속 새롭게 공부를 해야되는 상황이 발생했습니다.


이 페이지는 다시 재정비를 할겸 프로그래밍의 기초도 제대로 이해하지 못하는(나같은...)사람을 위해서 작성되었으며

잘못된 정보(?)가 있거나 이해하기 어려운 부분이 있다면 댓글로 알려주시면 감사하겠습니다.

강좌라고 생각하기 보다는 소설책을 읽는다는 기분으로 접근해준다면 더 편할 것 같습니다.

(사실 프로그래밍 하다가 괴로워서 작성하게 되었습니다.)


프로그래밍 강좌가 재미없는 이유부터


어떤 프로그래밍 강좌를 보더라도 결국 진행을 해야하다보니 이미 익숙해져있는 단어들로

초보자를 혼란스럽게 합니다.

예를들어, 변수가 어쩌구, 함수가  어쩌구...이프문...포문, 데이터구조가 어쩌구 저쩌구...

이런 단어들 부터 생소하고 어렵기때문에 포기하게 만드는데, 이러한 폐해에 대해서 너무나 괴로워했던

본인이기에 이 강좌에서는 되도록 쉽게 설명을 하도록 하겠습니다.


GML은 무엇인가?



게임메이커에서 만들어진 언어로 게임메이커 랭귀지의 줄임말입니다.

처음에는 1999년 11월에 델파이 프로그래밍 언어(언어의 종류)로 제작되어 게임을 만들 수 있게 제작되었고 점차 발전하여

지금의 게임메이커 스튜디오2까지 오게되었고 수많은 인디 게임 제작자들을 탄생시킨 게임엔진입니다.

우선, GML은 자체 언어이지만 비교적 쉬운 언어에 속하고 여러가지 언어들의 문법들을 결합시킨 것이 많아

하다보면 다른 언어들도 금새 익힐 수 있는 장점이 있습니다.


게임 프로그래밍을 하기위해 알아야 할 이야기

  • 수학 잘해야 되는거 아닌가?
많은 사람들이 수학을 잘해야 프로그래밍을 할 수 있다는 선입견이 있지만, 

사실 코드를 짧게 하고 완성도를 높이기 위한 자기만족이 더 큽니다. (진짜임)




예를들면, 100이라는 숫자를 완성하기 위해서 프로그램을 짠다고 했을때

10을 10번 더하면 100이 된다는 사실을 모르더라도 코드에 100이 될때까지 더해보면 알 수 있습니다. 

(예시임 그렇게 바보는 아님)

어쨋든 이런식으로 작성을 하더라도 코드가 좀 머리가 나쁜사람처럼 보일뿐이지 결과는 같기때문에

큰 문제는 없으며 어차피 저 계산식 조차도 자동으로 계산해주기에 값이 얼마가 나오는지 암산하지 않아도 됩니다.




이와같이 쓸 경우에는 결과는 100이 같지만 코드는 마치 엘레강스하고 수준높은 교육을 받은사람처럼 보이기 때문에

이렇게 수학의 기호를 멋지게 활용해서 쓰는 것 뿐...큰 의미는 없습니다.



물론...자신이 수학이나 과학을 무척이나 활용해야 하고 게임의 화면안에서 수도없이 계산을 해줘야하는 

복잡한 게임을 만들고 싶다면 수학과 과학에서 나오는 계산식을 공부해야합니다.



다 필요없다 빨리 무언가 하고 싶다


가장 좋은 것이 바로 예제를 따라하면서 기본적인 게임프로그래밍 개념을 배우는 것이 

효과적이고 비쥬얼로 무언가 보여야만 흥미가 생기는 것이 모든이의 소망이기에 빨리 무언가 화면에 

띄워보겠습니다.



  • 게임메이커 스튜디오의 기본 오브젝트 작성



화면 오른쪽(게임메이커 스튜디오2 기준)에 있는 폴더같이 생긴 것들에서 오프젝트라고 써있는 폴더에

마우스 오른쪽클릭을 하여 새로운 오브젝트 (Create Object)를 만듭니다.



원하는 이름을 작성하고 저는 draw_lecture라 이름을 정했으며, 정말 부탁하건데...

모든 이름을 작성할때는 한글로 적지 말아주십시요.(에러의 원인)



자동으로 보이는 이벤트라는 창을 보면 하단에 Add Event라는 버튼이 보입니다.

눌러보면 Create , Destroy, Clean UP, Step등 여러가지 메뉴가 보이지만 우선 여기서 알아야 할 것은 Create입니다.

  • Create가 뭐지?


이 것이 무언인가 하면 바로 이 오브젝트가 생성되었을때 가장 먼저 하는 일을 주관합니다.

그리고 단 한번만 컴퓨터가 실행하기 때문에 이 부분에 대부분 설정에 대한 코드를 작성하기도 합니다.


이제 공부해야됨


위의 부분을 설명하기 위해서는 이제부터 등장하는 단어들에 대해서 이해를 해야합니다.

  • 변수?


처음 이 이름을 들었을때부터 생소하고 짜증나고 뭔지 이해하려고 하니 

답답한 마음만 들었지만 사실 별거 아닙니다. (파생되는게 많아서 그렇지...)


변수는 변하는 수를 줄여놓은 줄임말이라 생각하면 되며 언제든지 바뀔 수 있습니다.

그리고 프로그래밍이기 때문에 이런 단어가 등장할때마다 어려운 부분이 

내가 마음대로 쓸수 있는 것인지, 특별한 규칙대로 써야 하는지에 대한 불안감(나만 그런가?)들이 괴롭히지만

이 변수라는 것은 마음대로 써도 됩니다.


a=1;

벌써 변수를 선언했습니다. (한글빼고 다됨)

aabb = 2;

이런식으로 막 써도 되지만 이게 뭐였는지 본인이 차후 프로그래밍 할때 알아 들을수 있어야 하기에

이름을 정하는 것입니다.

변수에는 숫자 혹은 문자를 넣어 보관하는 것으로 나중에 변경할수도 있고 그것을 더하기도 합니다.



이런식으로 결과를 얻기까지 하려면 , 지금 만들어진 오브젝트를 화면 오른쪽에 있는 폴더들 중

Rooms 라는 폴더에서 새로운 룸을 오브젝트 만들듯 마우스 오른쪽 버튼을 눌러 생성해줍니다.

새롭게 만들어진 룸에 드래그하여 오브젝트를 아무곳에 배치하여 F5를 눌러 실행하면 위와같은 화면이 보입니다.


위와 같이 변수끼리 더해줄수도 있고 혹은 자신이 설정한 변수에 다시 계산식을 넣어줄수도 있습니다.

예를들어 , 

make_word = number1 * 100

이라는 변수를 만들었다면 값은 100이 나옵니다. (1 곱하기 100이니까...당연)


즉,

변수 = 무언가를 설정

그리고 그 변수끼리 더하거나 합쳐서 또 새로운 무언가를 만들어 낼 수 있는 요술도구입니다.

그래서 어떻게 게임을 만드냐고 한다면 바로 이런것들이 여러분들이 보고 있는 게임의 모든 수치들입니다.


level = 1

str = 100

def = 90

speed = 80

money = 100000

exp =0


이런 변수들은 직접 게임을 만들면서 얼마나 많이 필요하고 어떻게 활용하는지에 간단하게 설명하자면,


[스토리 텔링]


플레이 캐릭터가 길을 가던 중에 나쁜 적을 만나 킬 하였습니다.

그랬더니 무려 exp 를 500 주었어요.

(코드 안에서는 exp+=500)

경험치를 500이나 얻은 주인공은 앞으로 한번만 더 킬 하면 레벨업 할 수 있는 기회가 온 것이었습니다.

온 맵을 찾아 보았지만 더이상 적들이 보이지 않았고 게임제작자는 만들기 귀찮았는지 그냥 다시 경험치를 주었습니다.

그러나 이게 왠일? 경험치가 1000이 되자 레벨업을 하였습니다.

( level +=1 )


이런식으로 이해를 돕기 위해 스토리 텔링을 하였고 다음 번에는 진짜로 화면에서 움직이는 방법에 대해 

알아보도록 하겠습니다.

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