brunch

You can make anything
by writing

C.S.Lewis

by 상윤 Aug 20. 2016

회고록 1. "게임 개발자 되는 법"

지옥문의 시작

 첫 글을 뭐로 쓸까 고민하면서 이런 저런 주제들을 생각해봤는데, 딱히 잘 쓸 것 같지도 않은 것들을 제외하고나니 남는 건 결국 과거 회상밖에 없더군요. 어차피 블로그 대용으로 쓰고 싶었던 거니깐 (제게) 간단한 내용부터 시작해볼까 합니다. 그렇다고 딱히 있지도 않은 어릴 적 무용담을 늘어놓는 건 별로인 것 같더라고요. 거기서 다시 또 고민을 좀 해보다가 맺은 결론은, 제가 공부 중이고 나중엔 일해서 벌어 먹으며 살고 싶은 분야인 컴퓨터를 어떻게 배워왔는지에 대한 얘기들을 늘어놓자는 겁니다.


 사실 별 말 아니고, '그냥 지금까지 배운 내용 얘기해볼게요.' 라는 말인데 제가 워낙에 온갖 서술을 다 해가면서 글을 쓰는 부류다 보니 벌써 문장 수가 상당해졌네요. 이런 것 때문에 주변 사람들은 오히려 제 글을 읽는데 뭐라는지 모르겠다든가 세 줄 요약 해달라는 등 말이 많긴 합니다. 저도 이런 제 방식에 사실 문제가 있다는 건 알고 있고 고칠 생각도 좀 갖고는 있지만 이번 주제 정도는 그대로 쓰겠습니다. 쓸데 없이 길어서 보기 힘드신 분들의 취향은 아닐테지만 제가 그러니 어쩌겠어요, 하핳.


 어쨌든, 고민 끝에 첫 번째로 쓸 내용은 바로 표지인 'C언어 입문' 이라는 책에 얽힌 회고록 정도가 되겠습니다. 서평을 주제로 하기엔 제가 사실 아직도 책 한 권을 제대로 평가할 정도가 됐는가라는 개인적인 반문이 고개를 들이밀기도 하고, 전문적으로 다루고 싶은 생각 자체도 없으니 딱 그 때의 느낌을 되살리는 정도로만 쓰고자 합니다.


 우선 이 책과 처음 만나게 된 계기부터 간단하게 짚고 넘어가죠. 중학생 1학년 가을의 어느 수업 시간, 주요 과목도 아니고 심지어는 그 외 비교과도 아닌 학교 재량시간에 미래에 대해 고민해보자는 주제의, 학년마다 으레 두 번쯤은 하게 되어있는 그런 시간에 저는 너무 간단히도 게임 개발자가 되고 싶다고 정했습니다. 저는 스스로 제 의지라든가 관념따위가 확고한 사람이라고 여기고 있긴 합니다만, 그렇다고 그 때 정한 일이 지금까지의 운명을 결정하리라고는 당시엔 절대로 상상할 순 없었죠. 그저 시켜서 적어 낸다는 느낌도 있었지만, 한편으론 정말로 되고 싶다는 생각도 계속 자리잡고 있었기 때문에 자기 암시적 주문을 건다는 기분도 내면서 별 고민없이 결정했던 것 같기도 합니다. 어쨌든 그를 계기로 삼아 집으로 돌아가선 정말로 인터넷에 검색을 해봤습니다. 네이버를 켜고 검색해봤죠.


"게임 개발자 되는 법"


 수 많은 지식인 검색 결과들이 나타나고, 첫 번째 결과부터 차근차근 읽기 시작했습니다. '저는 누구입니다. 게임 개발자가 되고 싶은데 어떻게 할까요?', '게임 만드려면 뭘 이용해서 만들어요?', '게임 개발하는데 얼마나 걸리나요?' 등등의 지금 봐선 정말 시덥잖은 질문과 답들이 많았습니다. 학원 알바같은 질문 답들이 주를 이루는데, 일부는 왜 그런 선택을 하느냐고 뜯어 말리는 정말 진심어린 충고도 덧붙인 사람들도 많았죠. (뭐, 사실 저는 그와 관련해선 약간 생각이 다르긴 하지만 그 주제는 나중에 기회가 닿으면 다시 다뤄보죠.) 대략 몇 가지 글들을 읽어본 결과 그 모든 내용들을 관통하는 답은 'C언어를 배우면 된다'는 것으로 귀결되고 있었습니다. C언어라니? 컴퓨터의 맨 앞 철자를 따서 C인가?


 이후로 몇 가지 추가적인 검색을 해보면서 C언어라는 게 있고, 그런 걸 가르치는 학원도 있다는 정보 따위를 얻을 수 있었습니다. 하지만 학원은 영 성미에는 안 맞아 보였고 대신 책들이 시중에 많아서 사서 그걸 공부하면 된다는 정도는 이해하게 됐습니다. 그렇지만 딱히 당장 무슨 책을 사서 공부해야한다 그런 생각은 없었죠. 가진 돈도 없었고, 돈이 생겨도 게임 정액권을 결제하거나 게임 잡지를 사야하는 등 쓸 곳은 이미 대부분 정해져 있었거든요. 당장 책 사서 보지 않는다고 꿈으로 가는 길이 미뤄질 것 같지도 않았고 말이죠. 그렇게 적당히 나중에 돈이 생기면 그 책들을 사서 공부를 해보자 하다가 중학생 2학년이 되기 직전인 설날을 맞이합니다.


 게임 잡지도 사고, 결제도 했는데 돈이 한 십만원 정도 남았습니다. 그러자 한 두어 개월 정도 묵혀둔 생각이 스멀스멀 삐져나오면서, 당시 쓰던 말로, 지름신이 강림해오며 'C언어'와 '게임 개발'이라는 키워드로 검색했을 때 나타난 몇 가지의 책들을 바로 구매하게 됐습니다. 그 순간의 결정은 너무도 순식간에 일어났고, 귀한 세뱃돈을 그렇게 한 순간에 퍽 써버렸다는 것도 잘 실감하지 못했습니다. 책이 집으로 박스 째 배송되어 책장에 진열되는 순간에도 그냥 별 생각이 없었습니다. 그게 뭘 의미하는지 조차도 이해하지 못한 채, 당시엔 그저 뭔가 뿌듯한 일을 했다는 정도였습니다. 책을 한 뭉텅이 샀으니 칭찬을 들으면 들었을 일이었고 말이죠.


 '게임 코딩 컴플리트', '게임 프로그래머를 위한 C++' 같은 책들도 당시에 같이 구매하게 됐는데 아무 것도 모르는 백지같은 뇌를 가졌던 수준에서 알면 뭘 얼마나 알았을까요? 그 책들은 정말 거의 외계어 수준이었다는 것만 기억에 남아 있습니다. 그래도 당시엔 C언어를 어느 정도 하고 나면 이런 책들도 읽을 수 있겠지 하는 정도의 기대감이 있었습니다. 그 기대에 부응하기까지 몇 년씩이나 더 필요하리는 것 또한 전혀 예상엔 없던 일이었습니다. 막연히 당장 할 수 있는 것(책 사기)부터 실천하는 게 전부였으니까요. 아무튼 그렇게 저는 'C언어 입문'이라는 인생 첫 C언어 책을 읽기 시작했습니다.


 무려 int의 크기가 2바이트라고 가르치던 이 책은 저자가 일본인인 번역 서적으로써 제게 번역체라는 것이 뭔지를 본격적으로 이해시켜준 고마운(?) 책이기도 합니다. 고작 중학생이었던 당시에도 느껴질 정도의 직역 문체는 일본어를 번역한 것이었기에 다행이었죠. 만약 어순이 다른 언어, 멀리 갈 것도 없이, 영어의 번역 서적을 처음 읽었다면 바로 몇 번 읽지도 못하고 때려쳤을 것 같습니다.


 처음 며칠 동안 한 3장인가 4장? 즈음까진 열심히 읽을 수 있었으나, 실제로 따라해봐야 했던 예제 코드의 컴파일은 전혀 할 수 없었습니다. 이 책에선 커맨드 라인 상에서 코드 편집기를 열어 코드를 작성하고 컴파일 하는 명령어들을 직접 수행하는 방법들을 가르쳐주었는데, 흔히 요즘 C언어 입문서들이 가르쳐주는 방식들에 비하면 너무 어려웠던 기억이 납니다. 나중엔 다른 책을 뒤져보다가 Dev-C++ 이라는 프로그램의 존재를 알게 되고 나서야 예제들을 본격적으로 따라해볼 수 있었죠.


 처음 printf()와 scanf()를 배워서 콘솔 화면 위에서 예제를 실행했던 기억이 납니다. 사칙연산도 해보고, 내가 입력한 문자열이 그대로 나오는 것도 해보면서 꽤나 재밌었던 것 같아요. 하지만 분기문, 반복문에 대한 내용을 지나 곧 함수 챕터를 읽을 즈음이 됐는데, 이게 수학시간에 배운 그 함수같긴 한데 뭔가 생긴 것도 다르고 어떻게 해야 잘 만드는 거다에 대한 자각도 없고, 쓰임새도 당시엔 난해하기 짝이 없어서 제대로 이해할 수가 없었습니다. 특히 중2였던 저는 열심히 게임도 해야 했고, 본격적으로 생각이 비슷했던 친구들을 모은 직후라 계속 만들려고 생각했던 보드 게임을 만드는 일도 해야 했습니다.  관심가는 것들이 이것 저것 들쭉날쭉이다보니 C언어는 슬슬 뒷전이 됐고 한동안은 관심 저 뒤편으로 묻히게 됩니다.


 다시 'C언어 입문'책을 꺼내기 시작한 것은 두 번째 보드 게임을 만들던 중반 즈음이었습니다. 첫 번째는 열심히 만들어서 규칙 따위를 정하려다가 당시의 역량으론 도저히 감당할 수 없어서 접게 됐던 터라 두 번째 게임만큼은 어떻게든 만들어내고 싶어서 여기 저기 손을 많이 벌렸죠. 손을 벌린만큼 저도 더 박차를 가해서 열심히 해야한다는 생각이 컸는데, 첫 번째를 계획없이 중구난방으로 만들어서 망했다는 생각에 이번만큼은 만드는 과정에 있어서 체계 따위를 갖고 싶었습니다.


 특히 그 때 만들던 보드 게임은 캐릭터를 굉장히 다양하게 만들려고 했었는데, 그 많은 캐릭터들의 설정을 모두 일일이 손으로 정하는 것보단 적절한 규칙을 놓고 설정값을 얻을 수 있는 프로그램을 만들면 좋지 않을까 하는 것에 생각이 미치게 됐습니다. 마침 C언어도 조금 할 줄 알게 됐고 말이죠. 그렇게 프로그램을 짤 수 있단 생각에 신나서 열심히 캐릭터 생성 규칙을 만들었습니다. 생성될 캐릭터들의 이름과 등급을 정해주면 등급에 따라 무작위의 캐릭터 설정 수치들이 화면에 결과로 출력되는 간단한 프로그램을 만들 생각이었죠. 프로그램이라고 하기에도 부끄럽네요, 사실.


 하지만 다시 책을 읽어봐도 역시나 함수의 벽은 높고 험난해서 제대로 이해할 수가 없었습니다. 사실 당시엔 반복문조차도 제대로 이해하고 있다고 할 수 없었죠. for문은 그저 0부터 4까지, 총 5번 똑같은 일을 할 수 있는 장치였을 뿐, 그 안에 쓰인 변수를 어떻게 해야한다는 개념이 없었습니다. 프로그램 구성의 기본인 무한 루프 또한 이해가 없어서 이전 화면으로 돌아갈 방법을 쉽게 생각해내지 못했죠. 결국 맨 처음 화면에 띄워주는 내용을 표시하기 위한 printf()와 scanf(), switch의 조합으로 구성된 코드 조각을 그대로 복사해서 뒤로 갈 경우의 실행할 내용에 붙여넣는 끔찍한 방법을 이용했습니다. 물론 그렇게 했을 때, 다시 루틴이 무언가를 하려면 그 안의 switch에 또 내용을 복사해 넣는 일이 필요했죠.


 결국 말도 안 되는 방식으로, 두 세 번 캐릭터를 생성하면 당연히 종료되게 되는 이상한 프로그램을 만들게 됐는데 그 코드 수는 2천줄이 넘어가게 됐습니다. 당시의 저는 뭣도 모르게 굉장히 뿌듯해하며 만들어진 프로그램을 당시 쓰던 블로그에 기록한답시고 올리고, 같이 보드 게임을 만들던 친구에게도 넘겨주는 등의 만행을 저질렀습니다. 특히나 친구에겐 코드까지 넘겨줘서 아직까지도 그 친구와 만나면 이불킥 역사로 몇 년에 한 번쯤 거론되곤 합니다.


 다시 돌아와서, 필요해서 프로그램을 만들어보긴 했는데 역시나 뭔가 부족한 느낌이 너무 강해서 이번엔 정말 책을 한 번은 완독을 해야겠다는 마음을 먹게 됐습니다. 그리고 시험 기간이 다가와서 열심히 미루다가 겨울 방학이 됐고 정말로 완독을 했습니다. 이해가 되고 안 되고를 떠나서 그냥 읽어 나갔습니다. 예제를 실행시켜봐도 모르겠고, 알려주는 사람도 없어 모르겠고 그냥 다 몰랐지만 그냥 읽었습니다. 포인터를 읽을 땐 정말 이게 무슨 헛소린지, 왜 배우는 건지, 어디에 쓰는 건지 알 길도 없었고 써보지도 않았죠. 그냥 아, 그렇네. 딱 그 정도의 감상이었습니다.


 읽어도 모르겠던 탓에 책이 문젠가 싶어 책을 바꿔 다른 것들 읽어보기도 했는데 기껏 익숙해진 번역체에서 벗어나니 오히려 더 눈에 안 들어오기도 하고 결국엔 며칠 또 읽다가 다시 책을 덮어두게 됐습니다. 개학하거든, 그 때 다시 생각하기로 하고, 열심히 방학을 즐겨야했죠. 눈사람도 만들고, 게임도 하고 말이죠.


 그렇게 중3이 됐고, 중2 때 결성된 무리들과 여전히 보드 게임을 만들 궁리를 하는 한 편으로는 (여담이지만, 이 때까지도 여전히 만들고자 했던 그 보드 게임은 만들어지지 못했습니다. 만들어서 친구들과 해보기라도 해본 것은 6개월은 더 지난 후였던 것 같네요.) 고등학교 진학을 하기 위한 전략에 몰두해야 했습니다. 여전히 게임을 만들고 싶었던 터라 관련 고교에 진학하고 싶어 했거든요. 그런 이유로 시험 공부도 나름대로 열심히 하려고 노력하는 한 편, 위에서 다짐한대로 개학도 했겠다 C언어 또한 계속 공부하려고 했습니다. '내가 요즘 이런 거 공부한다' 티도 내보고 싶어서 책도 학교에 가져가서 읽었죠. 그렇게 주변 친구들에게도 충분히 어필했던 덕분에, 위에서 코드를 받았던 친구로부터 자기가 이미 소속하고 있던 컴퓨터반에 와보라는 제안을 받아 컴퓨터반에 입부하게 됐고 거기서부턴 나름대로의 피드백을 받는 공부를 할 수 있게 됐습니다.


 돌아보면 거기서 뭔가 엄청난 공부를 하게 됐고 그런 건 아니었습니다. 당시에 부장은 별찍기라든가 3x3 행렬 회전시키기 따위를 워낙에 시켜댔었습니다. 그 땐 제대로 이해도 못하고, 이중 for문을 써보면서 그 안에서 쓰이는 변수였던 i와 j에 대한 조건을 이렇게 바꾸고 저렇게 바꾸면서 간신히 결과만 맞게 내놓는 등, 어떻게든 해내는 정도였죠. 하지만 그런 것들을 해본 덕분에 고등학교 진학 후 처음 있던 전공 등급 배치 고사를 보는 도중에 갑작스럽게 for문의 참 의미를 득도하여 상급반에 배치가 될 수 있었고, 이런 저런 테크를 밟아 지금까지 오게 됐습니다.


 나비효과란 말이 새삼 떠오르는 과거네요. 말미에 가선 책에 대한 감상은 거의 없었지만 뭐, 사실 이 책으로 시작한 공부 덕분에 이렇게 오게 됐다는 내용이니 아예 상관없는 건 아니지 싶습니다. (하지만 역시 두서가 없긴 하네요.) 아무튼 자서전 쓰는 기분으로 기억들을 하나 둘 떠올려보니 마음 안에서부터 뭔가 차오르는 듯한 기분이 듭니다. 지금 바로 옆 모니터에서 쓰고 있는 코드들을 괜히 되짚어보게 되기도 하고요. 처음을 되돌아보는 것이라 더욱 그런 기분이 강한 것 같기도 합니다. 아님 뭐, 새벽 감성에 쓰는 글이라 그럴 수도 있겠죠


 적당히 첫 번쨰 글은 여기서 마치고, 다음에 또 기분 적적하거나 할 때 즈음 두 번째 글 쓸 주제를 생각해서 조금씩 쓰도록 하겠습니다. 마무리 하기가 굉장히 어색한데요, 역시 다음엔 문체를 제 편한대로 써야같다는 생각과 함께 이만 줄입니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari