게임 프로그래밍 입문이 어려운 이유에 대해서

게임 프로그래밍은 왜 어려울까?

 

프로그래밍
프로그래밍

 

게임을 개발하려면 먼저 프로그래밍을 배워야 하고, 과거 1990년대에 비해 무척 쉬워진 것은

분명하지만 그럼에도 프로그래밍을 하는 것이 어려운 이유는 셀 수 없이 많습니다.

게임 프로그래밍의 초기에는 아무런 정보도 없이 규칙들을 모두 외우고 프로그래밍을 했으며

지금 같은 디버그 모드가 있지 않았으며 문법 오류, 자동 완성, 구글을 통한 학습조차 없었기에

당시의 프로그래머들은 신과 같은 존재였습니다.

세월이 많이 흘러 스크립트 부터 공부를 했던 글쓴이는 ‘*비교적*’ 문법이 쉬운 파이썬이나, 게임 메이커 스튜디오,

자바 스크립트등을 통해서 기본적인 흐름을 반복하면서도 지금도 제대로 원하는 코드를 짤 수 없었기에

문제가 무엇인지 고민을 하던 중 게임을 만들면서 게임 프로그래밍이 왜 어려운지 깨닫게 되면서

이 글을 쓰게 되었습니다.

 

첫 번째 – 흥미롭게 가르치는 사람이 없기 때문

 

대부분 가르칠 여력이 없음
대부분 가르칠 여력이 없음

 

저도 처음에는 다양한 책과 인터넷 정보, 프로그래밍 강좌 같은 것들을 찾아 보았으나,

대부분 게임 프로그래밍이 아닌 ‘프로그래밍’만을 목적으로 가르치고 있었기 때문에 무척 지루한 문법 위주의 내용으로

쉽게 지치고 흥미를 잃게 만들었습니다.

대부분의 사람들이 게임을 만들고 싶기 때문에 찾아보는 것임에도,

제 1장 변수란 무엇인가? 같은 왜 이걸 배워야 하는지 알 수 없게 진행이 됩니다. (물론 나중에는 알게 되지만…)

만약 처음부터 게임에서 아이템 같은 것을 만들어야 하거나 플레이어 캐릭터의 스테이터스에 힘, 스피드, 운, 공격 같은

내용을 넣어야 할 때 쓰는 것이 변수이고 프로그래밍 언어에 따라 다르지만,

1
2
3
4
public int Strong = 10;
public int Speed = 10;
public int Luck = 10;
public int Attack = 10;
cs

 

(몰라 대충 넘어가자)

이렇게 선언하는 것이 변수다! ‘앞에 있는 글자들은 뭐에요?

(어차피 지금 설명해줘도 관심이 없기 때문에 넘어갑시다! OK!)

그런식으로 흥미를 끌며 혹시나 나도 따라하기만 하면 게임을 만들 수 있을까? 하는 기대심리만 주었어도

지금 쯤 훌륭한 프로그래밍 실력을 갖추었을지도 모릅니다. (물론 핑계지만 일단 남 탓을 하고 싶음)

 

두 번째 – 예전엔 직접, 지금은 외우기 힘든 내장 함수들

 

수많은 내장 API
수많은 내장 API일단 머리 아프니 닫자

 

과거에는 예를 들어 플레이어가 이동하는 함수(Class)를 직접 만들어야 했거나 혹은 필요한 시스템들을 생각해서

필요한 부분들을 코드로 묶어 함수로 나눠 사용했습니다.

지금은 그럴 필요 없이 기본적으로 게임에 자주 사용되는 것들은 내장 함수들을 통해서 사용하거나,

게임 엔진에서 사용되는 부분들을 가져와서 쓰면 되는 매우 편리한 세상이 되었지만…

여기서 문제가 생깁니다.

에셋 스토어에서 팔거나 무료로 있지 않을까?! 없으면 어쩌지?!

그리고 코드를 짜기도 모자른 시간에 에셋 스토어를 찾아다니며 자신이 원하는 기능이 나올 때까지

코드를 작성하지 않게 됩니다. (다 편리한 세상 때문임!! 내가 게을러서 그런게 아님!!)

 

이렇게 쇼핑 중독자가 되어버린다
이렇게 쇼핑 중독자가 되어버린다

 

이렇게 과거에 어렵게 공부하던 사람들과 너무나 편해진 세상에서 게임을 만들려고 하는 사람들의 간절함이 다르기에

프로그래밍은 더 하기 어려워졌습니다.

 

세 번째 – 눈이 높아졌으며 거대한 프로젝트만 진행

 

처음 프로그래밍을 공부를 하면 작은 프로젝트를 하면서 실력을 쌓아가야 하는데, 요즘 처럼 바쁜 사람들은

이미 높아진 눈높이 덕분에 숫자 야구, 테트리스, 핑퐁, 블럭 격파, 지렁이 게임 같은 기본적인 학습에 매우 도움이 되는

프로젝트를 전혀 진행하려 하지 않습니다.

이런 프로젝트가 자손 대대로 내려오며 학습이 되는 이유는 각 프로젝트에 따라서

‘충돌 체크가 무엇인지’, ‘배열은 어떻게 다루는 것인지’, ‘각 클래스를 어떻게 효율적으로 다루는지’등

다양한 체계를 배울 수 있음에도 갑자기 디아블로 같은 게임을 만들고 싶어 합니다.

(와 씨…그게 되면 나도 이러고 안 살고 있지)

 

네 번째 – 이젠 엔진까지 배워야 하는데 엔진들이 너무 많다

 

20년 전에만 해도 지금처럼 게임 엔진이 보급화 되지 않았고 개인이 쓰기에는 매우 무겁고 비싸다는 인식이었지만

지금은 개인들도 많이 게임 엔진을 사용하고 학습하며 그것들로 1인 개발을 하거나 게임을 만들기 시작했습니다.

너무나 많은 게임 엔진들로 인해서 오히려 선택의 기로에 서기도 하며 대체 어떤 엔진을 사용해야 할지 고민하다가

끝이 나는 경우도 많습니다. (내가 이것 저것 찍먹만 하다가 망한 케이스)

무슨 엔진이 어떻게 필요하고 좋은지 판단하기 어려운 이유도 애초에 내가 무슨 프로젝트를 진행하고 싶은지,

혹은 어떤 기능들이 필요한지 조차 모르고 일단 쇼핑하듯 남들이 좋다고 하면 고르기 때문에 망하는 경우도 많았습니다.

 

애초에 그냥 라면 끓이려고 하는데 남들이 ‘이거 티타늄 리프팅 된 젓가락인데 이걸로 먹으면 맛있어요’라는 말에

비싼 젓가락을 사용한다고 해서 라면의 맛이 깊어지거나 일류 요리사가 만든 라면이 되는 것은 아님에도

혹시나 하는 마음에 자꾸 엔진을 바꾸는 사람이 되고 맙니다.

어떤 엔진을 사용하더라도 당신의 첫 프로젝트는 똥 게임이 되면 다행이고 완성 시키기도 어려울 겁니다.

 

다섯 번째 – 게임에 들어가는 프로그래밍 자체가 어렵다

 

지친다...
지친다…

 

대부분의 사람들이 화면에 자신이 만든 캐릭터가 움직이고 그것을 실제로 구현을 해냈을 때에는

만감이 교차하고 뿌듯해 하지만 점차 그래서 이제 대화창은 어떻게 만들지?

대화 할 때 타이핑 치는 효과는 어떻게 만들지? 이제 퀘스트는 어떻게 구현하는 거지?

퀘스트를 만들었으니 이제 보상은 어떻게 해야 하는 것인가…

보상을 받으려면 인벤토리가 있어야 겠는데 인벤토리는 또 어떻게 만들지?

겨우 겨우 움직이고 공격까지는 했는데 이제 레벨업 시스템이나 성장 시스템은 어떻게 구현해야 할까…

이렇듯 한 걸음 떼는 것이 무척 어렵고, 프로그래밍을 하는 시간 보다 구글에서 검색해서 다른 사람이 구현한

코드를 보며 고민하고 따라해 보지만 결국 얻는 것은 자신의 프로젝트와 똑같지 않기 때문에

수 많은 에러 코드가 뜨는 것을 지켜보며 이제는 디버깅이나 버그를 잡는 방식을 또 배워야 합니다.

 

여기까지 왔는데 이 글을 보고 있는 이유는 뭐죠?

 

이런 수 많은 난관을 헤치고 넘어서 게임도 만들어 보고 완성한 사람이 이 글을 읽는 사람이 있다면

아마도 글쓴이와 똑같은 마음으로 지쳐서 머리가 멍해져 있기 때문일 것입니다.

뭔가 배우고 싶어서 검색을 통해 한참을 공부를 하더라도 어느새 버전업이 되어버려 엔진이 구조가

바뀌어 과거의 강좌들이 모두 쓸모없는 일이 되어버려 다시 새롭게 공부를 하고,

또 익숙해지려고 하면 새로운 기능이 나오거나 지금까지 만들어 놓은 시스템들이 모두 엉키거나

문법이 달라져서 하나하나 뜯어 고쳐가며 다시 작성했더니, 이번에는 게임 엔진의 가격 정책 문제로

게임 엔진을 바꿔야 하는 고민을 하는등…(유니티 말고도 엔진마다 한번씩은 이슈가 있었음)

프로그래밍만 생각하기에도 바쁜데 진척은 안되고 지쳐있기 때문이라 생각합니다.

 

대체 어디까지가 프로그래밍 입문일까?

 

[개그를 이해하면 이제 초급 프로그래머]

  • 프로그래밍을 했을 때 가장 무서운 순간은? = 버그 없이 실행 될 때(왜 되는 거지?!)
  • 프로그래머가 블랙 테마를 쓰는 이유는? = 밝으면 버그가 꼬이니까
  • 친구도 없고 시간도 없으며 돈도 없고 에너지도 없는 것은? = 프로그래머
  • 다른 사람과 메세지를 주고 받을 때 자신도 모르고 세미 콜론을 찍는다;
  • 객체 지향적으로 부자가 될 수 있는 방법은? 상속
  • 와 당신의 코드 정말 멋지네요! = 나도 다른 사람꺼 쓴건데…

 

사실 개그도 폭소 할 만큼 웃기지도 않고 밋밋한 이유는 대부분 의욕이 없고 지쳐있거나

만약 움직이고 있다면 현재 코드 상에 오류를 어떻게 처리 해야 하는지 고민하는 사이

자신이 무슨 행동을 하고 있는지 의식하지 못한다면 축하합니다!!

이제 당신은 초급 프로그래머!

Comment