Spelunky 책을 읽고

평소 읽고 싶었던 스펠렁키 책을 읽었다.

스펠렁키는 Classic과 HD 버전 둘 다 재미있게 했던 게임이다. 특히 Classic 버전은 지금은 애증의 대상이자 나를 게임 개발로 이끌어준 툴 게임메이커로 만든 게임이라 그런지 더 정이 간다.

게임의 개발자이자 책의 저자 Derek Yu 역시 내가 좋아하는 인디 개발자 중 한 명인데, 책을 읽으며 그의 게임 개발 철학을 알 수 있어서 좋았다. 특히 내가 평소에 가지고 있던 생각들과 비슷한 내용이 많아 어떤 면에서는 내 생각을 더 잘 정리할 수 있었다.

빨리 휴가 나가서 Spelunky 2를 하고 싶다!!

인상깊었던 문장들

1. “Make games the right way”

 I’ve tried programming a game engine from scratch before, surrounding myself with books like Tricks of the Game-Programming Gurus in an effort to “make games the right way,” but when days of work yield as much as I could make in Game Maker in a few minutes, it’s hard to stay motivated.

 I accepted that I wasn’t cut out for academia and programming theory. (. . .) This important realization meant I could stop wasting my time trying to be something I wasn’t. Instead of being embarrassed about not being a “real programmer” using “real programming languages,” I vowed to make games whichever way felt good to me.

나는 고등학생 시절까지만 해도 내가 인디게임 개발자로 먹고살 수 있을 거라 막연하게 생각했었다. 컴퓨터 공학부로 진학한 것도 “게임 프로그래밍 -> 컴퓨터 공학”이라는 단순한 흐름의 결과였다. 대학에 입학하기 전까지 게임 개발 외에 다른 분야는 생각해 본 적도 경험해본 적도 없었는데, 막상 대학에 와서야 컴퓨터 공학에도 엄청나게 넓고, 깊고, 많은 세부 분야들이 있다는 사실을 처음으로 깨달았다.

그런 사실을 깨닫고 나니 지금까지 게임 엔진을 가지고 게임을 만들며 나 자신을 프로그래머라고 생각해 왔던 나는 그야말로 우물 안의 개구리 같았다. 그래서인지 게임메이커에 대한 거부감과 “옳은 방식”으로 게임을 만들어야 한다는 강박도 생겼다. 내가 인디게임 개발자로 먹고살 수 있을까? 라는 현실적인 고민을 하기 시작한 것도 비슷한 시기였을 것이다.

하지만 동시에 이런 생각도 들었다. 내가 정말 게임 개발자가 된다면, 내가 만든 게임 그 자체가 중요하지, 어떤 언어, 어떤 기술을 써서 어떻게 만들어졌는지가 뭐가 중요하단 말인가? 이미 다른 이들이 만들어놓은 것들을 다시 만들 시간에 게임 디자인에 대해 조금이라도 더 통찰해 보고 게임을 하나라도 더 만드는 게 낫지 않을까?

나는 아직 이런 모든 고민에 대해 데릭처럼 명확한 해답을 내놓지 못했다. 그 전에 내가 게임 개발의 길을 택할 것인지도 결정하지 못했다. 아직 게임 개발의 꿈은 간직하고 있지만, 지금 당장은 충분한 시간을 가지고 여러 분야를 경험하는 것도 나쁘지 않다. 그래도 데릭 같이 성공한 인디 게임 개발자가 나와 같은 고민을 하던 시절이 있었다는 사실만으로 위로가 되는 기분이다.

2. “Grown too comfortable with being comfortable”

 My worry is that as players we’ve grown too comfortable with being comfortable. (. . .) We’ve gone from asking, “How does this game play?” to asking, “Does this game play the way I want to play?”

 We can’t have everything that we want all at once, though. We can’t know what to expect and also be surprised. We can’t be free from frustration and also be challenged. We can’t go unchallenged and also feel satisfied with our accomplishments.

나는 게임 공략을 미리 보고 게임을 최적화된 방식으로 플레이하는 것을 싫어한다. 또 유튜브에 올라오는 영화를 5분~10분 길이로 요약한 영상도 좋아하지 않는다. 알고리즘을 공부할 때 정당성에 대한 증명도 없이 대충 받아들이는 것도 싫다. 이 모든 것들이 결국 머릿속에서는 하나의 철학으로 이어지는데, 그게 뭔지 언어로 표현하자니 항상 뒤죽박죽이다. 누군가에게 이걸 설명하다 보면 쉽게 내가 남을 무시하거나 깔보는 듯한 느낌이 되어버린다.

책에서 위 내용이 마음에 들었던 이유는, 평소 내가 막연하게 가지고 있던 생각을 잘 정리된 글로 보는 느낌을 받았기 때문이다. 인용된 문장 이후로도 데릭은 자기 생각을 게임뿐만 아니라 삶 전체로 확장하며 설명하는데, 내가 좋아하는 인물이 나와 비슷한 철학을 가지고 있다는 사실이 신났다. 또 그 기저에 남을 깎아내리는 뉘앙스가 전혀 없다는 점도 좋았다.

3. “Being too much of a perfectionist”

 At some point in any project, you will look back on everything you’ve done and feel like you could do it all better. Perhaps the code seems like a tangled mess. (. . .) They obviously learned a lot from reiterating on the same early sections, but they never learned how to navigate that wasteland or overcome that consummate destroyer of dreams: being too much of a perfectionist.

데릭이 한 프로젝트를 마무리 짓는 것에 대해 얼마나 중요하게 생각하는지는 익히 알고 있었다. 그가 옛날에 쓴 “Indie game dev: death loops”라는 글을 이미 읽어 봤기 때문이다. “끝내는 법을 배우려면 끝내보는 수밖에 없다.” 나도 게임을 여러 개 중도 포기하고 몇 개 완성해 본 사람으로서 크게 공감하는 말이다.

데릭은 많은 인디 개발자들이 쉽게 빠지는 두 가지의 무한루프 loop of restarting과 loop of polishing을 소개한다. 첫 번째 loop of restarting은 계속해서 미완성인 게임을 남겨두고 새로운 프로젝트를 시작하는 것을 말한다. 두 번째 loop of polishing은 작은 디테일에 집착해 끝없이 polishing 하거나 예정에 없던 필수적이지 않은 기능을 계속 추가하는 것을 말한다.

이미 예전에 읽어봤던 내용임에도 불구하고, 스펠렁키 책에서 이 부분을 다시 읽었을 때, 마음을 다잡고 블로그 완성하는 데 큰 도움이 되었다. 이번에 블로그를 만들면서 한번은 다시 시작하기도 했고, 중간에도 몇 번 다시 처음부터 만들면 더 잘할지도 모른다는 생각이 들었다. 또 글 목록의 디자인을 며칠 동안이나 조금씩 수정하고 원상 복구하는 것을 반복한 적도 있다. 그러나 결국 나를 지쳐 나가떨어지게 하는 이 루프들을 인지하고 빠져나옴으로써, 포기하지 않고 블로그를 완성할 수 있었다.