게임제작/강좌

[GML]게임 프로그래밍 코드를 작성하는 요령과 게임의 개념의 이해

게임코드프리 2019. 5. 23. 09:00
반응형

#프로그래밍 코드 작성법 #프로그램 짜는법 #게임만들기 #게임메이커


코드를 배우고 싶은데 어떻게 해야 할지 막연할때



게임은 만들고 싶지만 뭐부터 해야 할지 어떻게 해야 할지 또 게임은 어떻게 만드는지에 대해서

궁금하지만 막연히 어렵게만 느끼는 사람들은 무척 많습니다.

오늘은 코드를 어떻게 작성해야 할지 조차 모르는 초보자들을 위해 글을 준비했으며

이 글은 개념을 알기 위한 글이므로 코드 작성을 할 줄 아는 중급자는 읽지 않으셔도 됩니다.



게임의 개념부터 익혀야 한다



게임에 반드시 필요한 핵심 3요소


우리가 한번쯤 해본 모든 게임들은 그냥 자동으로 만들어지는 것이 아닙니다.

프로그래밍을 배우기 전에 게임이 어떻게 작동하고 또 어떤 것들을 해야 하는지에 대해서 알아야 하며

기본적인 개념에 대해 설명드리겠습니다.

놀라운 것은 앞으로 설명할 모든 것들이 다 아는 것이지만 게임에 필요한 요소들을 설명해 보라고 하면

묵묵 무답을 하는 것이므로 안다고 해도 한번쯤 읽어보시기 바랍니다.



  • 조작체계

게임에서는 유저로부터 입력단계를 받는 조작체계가 필요합니다.

유저가 어떤 키를 입력했는가에 따라서 어떻게 게임안에서 피드백을 줄 것인지는 나중 문제이고

기본적으로 현재까지 대중적으로 사용되는 조작체계는 3가지 입니다.

키보드 + 마우스 + 게임패드.


이 세가지로 모든 게임들이 만들어지며 화면을 터치하는 스마트폰 역시 결국 마우스와 동일하다고

생각하면 됩니다.


  • 디스플레이

게임의 디스플레이라고 하면 우리가 어떤 도화지에 얼만큼의 크기에 게임을 표현 할 것인지

준비해야 하고 만약 게임을 만들어야 하는 해당 기기가 어떤 디스플레이의 해상도를 지원하고 어떤 화면 출력방식을

가졌는지에 대해 미리 알아봐야 합니다.



  • 사운드

게임에서의 사운드는 가장 중요하면서 플레이어에게 오감을 이끌어내기 위한 핵심적인 시스템입니다.

지금시대에는 사운드가 다양하게 지원을 하고 게임엔진에서도 대부분의 사운드 파일포멧이나 

게임을 발매해야 하는 해당 플랫폼이 사운드를 지원해주기 때문에 특별히 옛날처럼 신경 쓸 필요는 없지만

과거에는 디스플레이 만큼 어떤것을 지원하고 소리를 틀어주기 위해서 특별한 코드가 필요할 만큼 

쉬운 부분이 아니었습니다.



하얀 도화지에 스케치 한다고 생각하자


게임엔진의 개념은 도구라고 생각하고 이 도구는 마치 이런 모습입니다.



게임을 보여줄 도화지가 있고 그리고 그것을 그릴 연필이나 물감들 그리고 정확한 선을 그어줄 자같은

도구들을 이용하여 무언가를 만들 수 있도록 되어있는 것이 게임엔진입니다.


이제 화면을 구성해야 한다면 게임안에서 어떤것들이 등장할지 미리 상상해봅시다.


1. 게임안에는 배경이 존재한다.

2. 게임안에는 캐릭터가 존재한다.

3. 게임안에는 이펙트가 존재한다.

4. 게임안에는 인터페이스가 존재한다.

5. 게임안에는 아이템이 존재한다.


대충 이런정도는 생각이 들거라 생각되며, 그럼 이 것들을 어떻게 표현하고 어떻게 넣어야 할지에 대해

고민하게 되는데 이런 고민들이 바로 개념이 잡혀있지 않기 때문에 어렵다고 느끼는 것입니다.



자신이 설정한 디스플레이 크기 (총 게임의 화면크기) 안에서 여러가지 새로운 도화지에 겹겹이 쌓아둔 것이

바로 게임 화면이라는 구성입니다.


이처럼 모든 것들이 하나하나 자신의 손으로 구현해야 하는 것이 프로그래밍이며 

우리가 흔히 좋은 게임이다 라고 생각하거나 편안하다 라고 느끼는 것은 바로 프로그래머가

모든 상황에 대한 대처를 훌륭하게 해냈기 때문입니다.


게임에는 무엇이 필요할지 생각해보자


어린시절에 종이로 만든 놀이들을 해봤거나 보드 게임같은 놀이를 해왔음에도 실제 게임은 

어떻게 만들어야 할지 모르는 사람이 태반이지만 조금만 감각이 있는 사람들은 

프로그래밍이 아니더라도 오리고 잘라서 플레이어를 만들고 배경을 만들어 게임의 룰과 함께 창작을 해냅니다.



다시 재확인겸 이 물건을 보고 그저 멍하니 바라보기만 하고 아무생각이 없다면... 게임제작은 애초에 의지가 없는 것으로

판단하고 포기해야 합니다.


뭔가 어렴풋이 내가 만들 게임에 무엇이 있어야 겠구나 정도라도 생각이 든다면

다음 글로 넘어갑시다.


코드를 몰라도 우선 상식적이고 논리적인 사고를 키우자


게임의 프로그램 코드는 순차적이고 반복적으로 이루어져 있는데, 이런 시스템적인 개념은

집어치우고 우선 배워야 하는 것이 바로 상식적이고 얼마나 논리적인 사고로 "글"을 작성 할 수 있는지가 관건입니다.



하나의 예시로 위의 이미지는 단 한개도 코드를 작성하지 않았습니다.

그저 게임 안에서 일어나는 일을 예측해서 논리적으로 나열을 했을 뿐이고 우선 이런 상식적인 글을

작성하는 것부터 프로그래밍의 개념이라고 생각하면 됩니다.


이제 개념의 뼈대를 작성했다면 실제로 컴퓨터가 이해할 수 있는 언어로 번역을 하는 것이

코드의 시작이며 만약 내가 생각하지도 못한 일들이 게임을 테스트 하면서 일어난다면

그것에 대한 반응을 다시 코드를 통해 추가해주고 고쳐가는 것이 코딩이라고 이해하면 됩니다.




위의 코드는 최대한 초보자들이 이해하기 쉽게 직관적으로 작성하였지만, 그럼에도 어렵다고 느끼는 분들이 있을 것같아

다시 설명합니다.


프로그래밍 코드를 작성하기 위해서는 외국어를 배운다고 생각하고 사전을 보면서(Document 문서)

아...이 프로그래밍 언어는 이렇게 써야 하는구나. 하고 번역을 할 뿐입니다.


(이에 도움이 될만한 과거의 포스팅을 참조)

2019/05/01 - [게임제작/강좌 ] - [초보강좌]어려운 프로그램용어 파헤치기 대체 뭐라는건지 일반인 용어로 설명

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

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

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



프로그래머 이상과 현실



많은 미디어를 통해서 사람들이 프로그래밍 하는것이 마치 외계어를 다루고 컴퓨터와 접신하여 미친듯이 

키보드를 두드리는 모습으로 그려지고 있는데 실상은 위와 같은 유투브 영상처럼

보잘것 없는 모습을 너무나 재치있게 그려내어 웃음을 자아내고 있습니다.


코드를 한줄도 짜지 못하는 이유는?


너무나 명확하게 코드를 한줄도 짤 수 없는 이유는 게으르기 때문입니다.


1. 생각하기 귀찮다.

2. 알아서 해줬으면 좋겠다.

3. 그거까지 내가해야해?

4. 알아보기도 귀찮다.


이런 생각들 때문에 논리적인 사고는 커녕 모든것들을 다 알아서 해줬으면 하는 게으름때문이며

단어 하나하나(언어 하나하나)를 배우려는 노력이라도 했다면 코드를 한줄도 짜지 못하는 것은 말도 안되는 이야기입니다.


  • 코딩은 누구나 할수 있다


코딩은 도화지에 그림을 그리거나 글을 쓰는 것과 마찬가지로 코딩은 코드를 나열해 보는 것이기에

누구나  코딩을 할 수 있습니다. 다만!

그 코딩이 명확한 결론에 도달하는 코드가 되어 프로그래밍을 할 수 있는 것은 아닙니다.


마치며...


수도없이 많은 다른 사람들이 짠 코드를 이해해가며 분석하고 노력했지만 개념이 없는 상태로 코드를 봐봤자

무용지물이었으며 좀 더 쉽게 설명해줄 누군가가 없을지 한탄해가며 공부했던 기억이 있습니다.

최대한 초심때를 생각하며 작성을 했지만 난이도라는 것은 역시 사람마다 느껴지는 체감이 다르므로

이해가 가지 않는 것에 대해서 부끄러워 할 필요는 없습니다.


오히려 부끄러운 일은 모르는데 이해하고 아는척 하는 것임을 잊지 말아야 합니다.

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