NEXT

마지막 수정 시각: 2021-08-02 22:49:29

나는 고등학교를 졸업한 뒤 대학에 진학하지 않고, NEXT라는 이름의 교육 기관으로 진학했다. 앞서 고등학교 시절 편에서 이야기했지만 나는 정보 올림피아드 대회에 나가면서 처음으로 이 기관에 대해 알게 되었는데, 일반인에게 익숙한 기관이 아니다 보니 아마 당연히 이 글을 읽는 사람들 중에는 NEXT라는 이름을 처음 들어 본 사람도 많을 것이다. NEXT를 어떻게 정의해야 할까. 솔직히 한 두 마디로 설명하기가 너무 힘들다. 항상 NEXT에 대해서 이야기가 나오면 어떻게 설명을 해야 할지 막막함을 느끼게 된다. 굉장히 주관적인 견해로 조금 설명을 해 보자면, 게임부터 웹, 모바일 등등 일반적인 사용자에게 가까운 프로그램들을 주도적으로 만들어 나갈 수 있는 고급 인력을 양성하는 걸 목표로 나온 기관이다. 일반적인 취업 목적의 코딩 학원보다는 좀 더 기초 학문과 인문학에도 신경을 쓰지만, 그렇다고 이론에만 치우쳐져 있는 것은 아니며 실제 현업에서 필요한 지식에 대해서도 깊게 다루는 곳. 사실 정 이해가 안 가면 그냥 좀 특이한 대학이라고 생각해도 좋다.

내가 NEXT를 가려고 했던 이유는 다른 것보다는 게임 개발에 필요한 것을 좀 더 직접적으로 배울 수 있다는 점이었다. 일반적인 대학에서는 게임 개발에 관련된 내용을 배우기가 힘들고, 그렇다고 단순한 학원에서 배우면 제대로 된 기초를 쌓기 힘들다. 나는 NEXT의 커리큘럼이나 지향하는 방향이 내가 추구하는 바와 잘 맞아떨어진다고 생각했고, 그래서 NEXT로 진학했다.

NEXT에 대해서는 정말 하고 싶은 이야기가 많지만, 그 걸 다 풀어놓는 건 분량 면에서나 주제 면에서나 별로 알맞지 않은 것 같아 역시나 나 개인의 게임 개발과 관련된 부분에 대해서만 좀 정리해두려고 한다.

첫 학기

아무튼 나는 NEXT에 입학하기 전까지는 프로그래밍을 단 한 번도 제대로 기초부터 공부해 본 적이 없었기 때문에, 겉핥기 식으로 아는 것만 많고 제대로 할 줄 아는 건 없는 상황이었다. NEXT에 입학할 즈음에는 C++도, C#도 안 쓴 지 한참이었기 때문에 사실상 C언어 기초 문법 + 문제 풀이를 하면서 익힌 알고리즘과 자료구조에 대한 경험적인 지식 정도가 내가 갖고 있던 자산의 전부였다. 첫 학기 때는 자료구조, 알고리즘 및 C 언어 등에 대한 기초 공부가 주 과목이었는데, C언어의 경우는 그래도 그럭저럭 알고 있는 편이었지만 나머지 과목들은 거의 알지 못하던 내용이었다. 내가 정말 프로그래밍에 대해서 아는 게 없구나라는 생각이 많이 들었던 것 같다.

1학기 때 있었던 수업 중에서 가장 인상 깊었던 것은 게임 제작 개론이었던 것 같다. 게임 제작 개론 수업의 슬라이드는 여기서 볼 수 있는데, 이 슬라이드는 아직도 가끔씩 참고하고는 한다. 게임에 대한 기본적인 개념과 제작 과정에 대해서 정말 제대로 많은 것을 배울 수 있었던 것 같다. 수업에서 과제로 나왔던 역 기획서 쓰기나 게임 포스트 모템 자료 읽고 정리+발표하기 등에서도 유용한 지식들을 자연스럽게 습득할 수 있었다.

이 수업의 백미는 바로 RPG 게임 만렙 찍기 과제다. 게임 따라 약간씩 기준은 다르지만 WOW, 테라, 아이온 등 게임을 하나 정해서 만렙을 찍은 다음 그걸 인증해야 했는데, 다른 수업들도 다 들으면서 만렙을 찍으려고 하니 진짜 죽을 맛이었다.

어쨌건 이렇게 제대로 각 잡고 최근의 RPG 게임에 대해 만렙을 찍어본 적은 없었기 때문에, 플레이하면서 이런 큰 규모의 게임이 가지고 있는 콘텐츠나 기획의 방향에 대해서 어느 정도 감을 잡을 수 있었던 것 같다. 수업에서 들은 내용들이 테라에서는 어떻게 적용되고 있는가 고민해보는 것도 재미있었고.

그리고 첫 번째 학기가 끝난 방학쯤에, 상당히 인상 깊었던 일이 하나 있었다.

바로 어떤 분이 코딩을 배운 지 3개월밖에 안 됐는데 Swimming smith라는 게임을 만든 것. 내게는 이게 정말 어찌 보면 충격적인 일이었다. 나는 훨씬 긴 시간을 게임을 만들기 위해 고민하고 프로그램과 씨름했지만 그동안 내가 만든 게임 중에 이 게임보다 더 퀄리티가 좋다고 말할 만한 게 단 하나도 없었다. 대부분의 게임을 만들다 말고 제대로 완성하지도 못했고. 나는 그동안 과연 최선을 다 하고 있었던 걸까? 내가 게임 개발에 제대로 열정을 갖고 있지 않기 때문에 게임을 못 만들고 있는 건 아닐까? 그런 회의감이 많이 들었다. 그래서 이 사건이 이후에 나에게 많은 동기부여가 됐던 것 같다.

두 번째 학기

두 번째 학기에는 드디어 제대로 C++을 배울 수 있었다. 이때쯤에는 C++을 안 쓴 지 오래돼서 문법도 가물가물한 상태였었다. 수업은 배틀쉽이라는 단순한 게임을 기반으로 프로젝트를 진행하며 C++ 문법을 배우는 식이었는데 그 덕분에 객체 지향이 왜 필요한지 몸으로 제대로 느끼면서 잘 배울 수 있었던 것 같다. C++ 문법에 대해서도, 어떻게 코드를 짜는 게 좋은 코드인지에 대해서도 많이 배웠었고. 그리고 중학교 때 배우다 포기했던 템플릿 문법이나 STL에 대해서도 제대로 알게 돼서 이후로 정말 잘 써먹었다. 이렇게 좋은 걸 몰랐다니!!라는 기분.

그 때 만들었던 배틀십 AI 프로그램. 위 스크린샷처럼 그래픽을 단순하게 띄워서 AI를 돌렸었다.

이때 수업에서 마지막에 네트워크까지 붙여 사람들끼리 경기를 했었는데, 열심히 만든 AI가 우승을 해서 엄청 기분이 좋았다(우승하면 학점 A 보장인 시스템이었다). 그때 AI 어떻게 만들었는지에 대해서도 블로그에 길게 정리를 했었는데, 개인적으로는 많이 배웠었고 재밌었던 경험이었지만 여기에 적으면 너무 기술적인 내용이 될 것 같기도 하고 개발자가 아닌 사람들에겐 재밌는 내용도 아니니 생략.

게임을 만들다 보면 이런 알고리즘적인 문제들과 씨름을 하게 될 때가 꽤 많다. 그리고 이런 게 또 관심 있는 사람들에겐 꽤나 재미있는 주제이긴 하기 때문에, 언젠가 따로 그런 주제의 글을 모아서 쓰게 될지도 모르겠다.

그리고 이때쯤에 위의 GPG(Game Programming Gems) 시리즈 스터디도 했었다. 이 책이 게임 쪽에서는 꽤 유명한 책인데, 조금 내용이 옛날 내용이기는 하지만 그래도 적당히 걸러서 보면 배울 만한 내용이 상당히 많은 책이다. 당시에는 내 실력이 이 책을 제대로 이해할 만한 수준은 아니었기 때문에 그렇게 많이 배우지는 못 했지만, 어쨌거나 이런 책이 있다는 사실을 안 것(공부해야 할 것을 안 것)만 해도 꽤 도움이 됐던 것 같다. 스터디 자체는 역시나 바빠서 조금 진행하다가 흐지부지되긴 했었다.

그 외에도 이때 모든 개발자가 언젠간 반드시 알아야 할 버전 관리 시스템에 대해서도 배웠다. github이라는 오픈 소스 사이트가 상당히 좋고 그때 git이 꽤 대세로 떠오르고 있던 상황이었기 때문에 git을 배웠었다. 이 후로 차근차근 써 가면서 git의 다양한 기능들과 필요성에 대해 점차 알게 되었던 것 같다.

세 번째 학기 때부터는 본격적으로 게임 개발에 관한 수업을 듣게 되는데, 중요한 수업으로 게임 개발 경험 프로젝트라는 게 있다. 세 번째 학기에 관한 내용은 사실 거의 이 게임을 개발하는 것에 관한 이야기가 될 것 같은데, 쓸 내용이 정말 많기 때문에 여기서 끊고 세 번째 학기에 대한 내용을 따로 써야겠다.

다음 편은 이 게임에 대한 이야기.