초보 개발자를 위한 노하우 - 게임 프로그래머가 되어 볼까? [Bottom] [Top]
참고> 이 글은 마이크로소프트웨어의 마소Jr 에서 퍼왔음을 알려드립니다. |
심경환
마이크로 소프트웨어 2003년 6월호
특히 필자가 미국 현지에서 EA (Electronic Arts) 와 함께 일했던 경험들은 여러분들에게 흔히 접하기 힘든 산 지식이 될것이라 생각됩니다. 일부는 여러분들이 익히 알고 있는 내용일수도 있고 혹은 여러분들과 여건이나 주변 환경이 맞지 않아 적용될 수 없는 내용이 있을 수도 있습니만 다양한 환경에서 일하는 프로그래머들의 입맛에 맞게 구성했으므로 크게 무리는 없을거라 생각하며 기초 상식부터 글을 시작합니다.
몇가지 기초 상식들 [Bottom] [Top]
프로그래머 특히 게임 프로그래머가 되기 위해선 몇가지 내용을 숙지해야 합니다. 먼저 어떠한 언어를 중점으로 배울 것인가 입니다. 몇 년전만 해도 게임 프로그래머들이 반드시 알아야 할 언어는 단연코 'C' 였습니다. 간결한 문장과 빠른 컴파일 속도, 게임 프로그래머들의 입맛에 딱 맞는 포인터라는 개념 등이 세상에서 가장 빠른 프로그램의 생성이라는 지상 과제를 수행해야 하는 게임 프로그래머에겐 딱이였던 거죠. 거기에 기계어를 좀더 인간이 알아 볼 수 있도록 (사실은 전혀 알아 볼 수 없는 경우가 더 많습니다) 제작한 어셈블리 (Assembly) 라는 언어를 알고 있다면 게임 프로그래머로서의 모든 준비를 완벽히 갖추고 있다고 봐도 과언이 아니었습니다.
하지만 근래 들어 OOP (Object-Oriented Programming) 의 개념이 중요해지면서 C++ 의 위상이 높아졌습니다. C 보다는 복잡하고 간결하지도 읺을 뿐더러 상대적인 실행속도의 저하를 가져오는 C++ 가 C 를 이길 수 있었던 것은 갈수록 거대해지는 프로그램의 덩치와 관련이 있습니다. 마이크로소프트의 윈도우가 기본 OS 로 자리잡기 시작하면서 응용 프로그램들의 크기가 커지기 시작했고 그 크기에 맞게 코드들 역시 비약적으로 방대해지기 시작했습니다. 코드들의 크기가 커지면서 코드 재활용과 유지 보수의 중요성이 높아졌고 이를 해결하기 위해 대안으로 제시된 것이 C++ 입니다.
코드 재활용과 유지 보수를 높여라 [Bottom] [Top]
현재 현업에서 제작하고 있는 3D 게임 프로그램들의 대부분이 C++ 로 제작되어 있습니다. 여기에 몇몇 속도를 요하는 중요한 병목코드 부분만이 어셈블리로 제작되어 사용되고 있지요. 또한 게임 프로그래머들은 하드웨어와 친해져야 합니다. 그냥 친해지는 정도가 아니라 하드웨어의 성능과 기능들을 속속들이 꿰뚫고 있어야 합니다. 비록 기판들의 구조나 복잡한 다이어그램은 이해하지 못할지라도 그 하드웨어들이 각각 어떤 일을 하며 어떤 식으로 서로에게 영향을 줄 수 있는지는 반드시 알아야 합니다.
만약 콘솔 게임 제작을 목표로 공부하고 있는 게임 프로그래머들이라면 더욱 더 중요한 부분이 될것입니다. 콘솔 게임은 해당 하드웨어의 성능을 극한까지 끌어올리는데 목표를 두고 프로그램을 구성합니다. 물론 요즘엔 언리얼(Unreal) 를 위시한 렌더웨어(Renderware), 리스텍(LithTech), 네틀머스(NetImmerse) 등 뛰어난 미들웨어들이 존재해서 하드웨어에 직접 접근하지 않고 게임 제작을 가능하게 해주고는 있지만 진정한 게임 프로그래머라면 여기에 만족하지 않고 자신만의 엔진을 제작할 수 있어야 할 것입니다. 이에 대한 이야기는 뒷부분에 좀더 자세하고 심도있게 다루도록 하겠습니다.
- C 를 기초로 공부한 후 C++ 를 익혀 OOP 에 대한 공부를 하도록 합니다.
- 하드웨어에 대한 해박한 지식이 필요하며 하드웨어과 소프트웨어의 상관관계를 정확히 인지하고 숙지하여야 합니다.
- 자신만의 게임 엔진을 구축할 수 있어야 합니다. 물론 게임 프로그래머가 여러 파트로 나누어지긴 하지만 간단한 엔진을 구축할 수 있는 것과 없는 것의 차이는 크다고 할 수 있습니다.
코더와 엔지니어 [Bottom] [Top]
우리가 통상 호칭하는 프로그래머란 단어는 우리나라에서 일반적으로 '컴퓨터용 응용 프로그램을 제작하는 언어를 다루는 기술자' 를 일컫습니다. 하지만 진정한 프로그래머의 의미는 각종 이벤트 혹은 쇼를 기획하고 제작하는 사람들뿐만 아니라 미팅을 주선하고 알선하는 사람들에게 이르기까지 보다 광범위한 의미를 가지고 있습니다. 때문에 미국에서 게임 프로그래머들은 명함에 '프로그래머 (programmer)' 란 단어 대신 '엔지니어 (engineer)' 라는 단어를 사용합니다. 즉 엔지니어가 프로그래머와 같은 단어로 쓰이는 것은 아닙니다. 미국에선 엔지니어와 다른 의미의 단어로 코더 (coder) 라는 단어를 사용합니다. 코더는 코드를 직접 작성하는 사람이라는 의미입니다.
그렇다면 엔지니어와 코더를 구분짓는 가장 큰 잣대는 무엇인가가 궁금하리라 생각됩니다. 코더는 말 그대로 엔지니어가 구성해 준 프로그램의 설계와 알고리즘대로 코드를 생성하는 (짜는) 컴퓨터 코드 프로그래머입니다. 반대로 엔지니어들은 물론 직접 코드를 생성하기도 하지만 코드만을 짜는 것이 아니라 프로그램을 설계하고 알고리즘을 생성합니다. 즉 그들이 생각하는 게임 프로그래머들이란 단지 코드를 짜는 것이 아닌 효율적이고 안정적인 코드를 설계하고 이를 바탕으로 알고리즘을 작성한 후 비로소 이를 컴퓨터의 언어로 코딩하는 사람들입니다. 여기서 중요하게 생각해야 할 점이 있습니다. 여러분은 단지 코더가 되어서는 안된다는 것입니다. 여러분은 코더가 아니라 엔지니어가 되어야 합니다.
<화면 1> 타이거우즈 PGA 투어 2000 스크린샷
엔지니어로서 마인드를 가져야 하는 이유 [Bottom] [Top]
이제까지 (필자를 비롯하여) 1세대 게임 프로그래머들은 전문적인 교육을 받지 않은 단지 게임이 좋아 게임을 직접 만들어 보겠다고 컴퓨터 언어를 배운 마니아들이었습니다. 때문에 엔지니어적인 사고 접근 방식보다는 직접 코드를 짜 넣어가며 게임이 실행되는 것을 즐겼고 이런 습관이 남아 현재까지 게임 프로그래머들은 엔지니어보다는 코더에 가까운 프로그래머들이었다고 생각됩니다. 물론 최근 들어서는 좋은 학교에서 전문적인 전산관련 교육을 이수하고 게임 프로그래머에 입문한 사람들이 많습니다. 이들 역시 게임 프로그래밍 엔지니어로서의 역할을 수행해 나가는 데 일익을 담당하고 있긴 하지만 많은 수의 게임 프로그래머들은 여전히 게임 마니아로서 출발하는 경우가 많습니다. 따라서 엔지니어적인 마인드보다는 코더적인 마인드를 갖기 쉽습니다. 때문에 처음으로 게임 프로그래머에 입문하는 초보 독자들은 엔지니어로서의 마인드를 가지고 프로그래밍에 임하는 자세가 매우 중요합니다.
- 한 줄의 코딩보다는 한 문장의 알고리즘이 더욱 더 중요합니다.
- 체계적으로 사고하고 분석하는 능력을 기르는 것 역시 중요합니다.
게임 프로그래머와 게임 제작자 [Bottom] [Top]
여러분은 게임 프로그래머로서 언제까지 일할 생각입니까? 나이가 들어서도 계속해서 게임 프로그래머로서 제작에 참여할건지 아니면 종래에는 게임 제작자 (Project Manager) 로서 게임 제작을 진두지휘하고 싶은건지 생각해 본 적이 있으습니까? 흔히 게임 프로그래머의 역할은 어느 정도 경력이 쌓이면 끝이 나고, 많은 사람들이 게임 제작자로 돌아서게 됩니다. 필자 역시 게임 프로그래머로 시작하여 게임 제작자가 된 경우에 속합니다. 물론 필자는 게임 제작자를 겸하면서 테크니컬 디렉터로서 직접 엔지니어와 코더의 역할을 겸하고 있습니다. 회사에 돈이 없고 인력이 부족하여 그런 것이 아닙니다. 게임 제작자는 적어도 하나 이상의 스페셜티 (Specialty) 를 가지고 있어야 하며 이것이 프로그래밍일 때 가장 이상적인 것이라 생각합니다. 따라서 필자의 스페셜티인 프로그래머로서의 감각과 실력을 잃어 버리지 않기 위해 직접 현장에서 팀원들과 같이 땀을 흘리고 있는것입니다.
- 자신만의 스페셜리티를 유지/보수 및 발전시켜 나가야 합니다.
미국 게임 프로그래머에게서 배운다 [Bottom] [Top]
필자가 미국에서 제작한 게임은 EA 의 '타이거우즈 PGA 투어 2000 (Tiger Woods PGA TOUR 2000)' 이라는 골프 게임입니다. 이 게임은 3년동안 계속해서 해마다 업그레이드 되어 시장에 나오고 있습니다. 지금은 타이거우즈 PGA 투어 2003 의 타이틀을 달고 풀 3D 로 제작되어 판매되고 있습니다.
그 당시 필자가 미국에 있는 테크니컬 디렉터와 대화하던 중에 한국과 미국 프로그래머간의 인식 차이에 대해 극명하게 느낀 점이 하나 있었습니다. 그 당시만 해도 국내의 게임 프로그래머들은 새롭게 시작되는 프로젝트엔 아무리 이전에 개발되어 있던 코드가 있다 하더라도 새롭게 엔진부터 다시 디자인하여 사용하는 것을 즐겨했습니다. 이는 지금도 마찬가지입니다. 즉 프로그래머들의 피와 땀으로 생성된 코드들은 1회성에 불과하여 프로젝트가 끝나면 사장되어 버렸던 것입니다. 이런 사실을 미국의 게임 프로그래머들은 이해하지 못했습니다. 왜 이전의 코드들을 전부 무시하고 어떻게 매번 새로운 코드들을 짤 수 있는가, 그렇다면 기술의 발전과 그때까지의 노하우들은 전부 사라져 버리는 게 아닌가. 자신들의 게임에 사용되는 엔진의 코드들은 5년동안 축적되어 온 것이며 초기에 생성되었던 코드들 역시 지금도 계속해서 사용되고 있다는 것입니다.
그 당시 필자는 그 의견에 100% 찬성하지 못했었습니다. 새롭게 코드를 짜면 좀더 효율적이고 자신의 입맛에 맞는 코드를 생성할 수 있다는 국내에서의 일반적인 생각에 동의하고 있었기 때문이었습니다. 하지만 이제서야 그네들의 생각이 맞다는 것을 몸소 체험하고 있습니다. 계속해서 재사용되는 코드들은 여러 사람들을 거쳐가며 그 견고함과 성능이 향상되고 프로그램의 구조 역시 많은 프로그래머들의 손을 거쳐 새롭게 태어납니다. 하지만 이러한 과정에서도 프로그램의 기본적인 철학과 방향을 서로 공유해가며 진행하므로 해가 바뀔수록 더욱더 단단하고 뛰어난 성능을 가진 코드들이 탄생하게 된다는 것을 알게 되었습니다. 아마도 현재 시중에서 판매되고 있는 타이거우즈 PGA 투어 2003 의 코드를 살펴보면 필자가 3년 전에 작업했던 코드들이 존재하고 있으리라 생각됩니다.
- 코드의 재사용은 더욱더 견고하고 효율적인 코드 생성의 기본입니다.
- 코드를 재사용하기 위해 설계 단계부터 세심한 주의와 검증이 필요합니다.
3D 엔진 프로그래머란 [Bottom] [Top]
3D 엔진 프로그래머란 풀 3D 클라이언트 프로그래밍에 핵심이 되는 코드를 설계하는 사람입니다. 설계 후 완성된 코드는 클라이언트 설계에도 지대한 영향을 미치며 엔진이 어떻게 설계되어 있느냐에 따라 클라이언트의 성능이 좌우됩니다. 요즘 게임 제작 회사들은 3D 엔진을 자체 제작하는 추세에서 점점 구입하여 사용하는 추세로 전환되고 있습니다. 리니지로 유명한 엔씨소프트 역시 자사 브랜드인 리지니 2를 제작할 때 자체 엔진을 사용하지 않고 전 세계적으로 유명한 언리얼이라는 엔진을 구입하여 사용하고 있고 다른 게임 제작사들 역시 점차 안정된 성능을 자랑하는 유수의 엔진을 구입하여 사용하고 있는 추세입니다. 하지만 제아무리 좋은 엔진을 구입하였다고 하다라도 엔진에 대한 기초적인 지식이 없다면 구입하지 않으니만 못한 결과를 초래할 수도 있습니다.
엔진을 구입하는데 필수적으로 점검해야 할 사항을 몇가지 알려 드리겠습니다. 엔진을 공부하거나 엔진을 구입할 예정이 있는 독자들에겐 유용하리라 생각됩니다.
- ■ 호환성입니다. 특히 요즘처럼 PC 게임과 PS2, X박스와 같은 콘솔 게임을 동시에 제작하는 원소스 멀티유즈 (One Source Multi Use) 전략을 사용하는 추세에서는 더욱더 그렇습니다. A 라는 엔진을 사용하여 PC 용으로 제작된 게임은 별다른 수정 사항을 거치지 않고 다른 플랫폼으로 용이하게 포팅될 수 있어야 합니다. ■ 기술 지원 (Technical Support) 이 어떤 방식으로 얼마나 잘 원할히 이루어지는가 입니다. 원래 엔진이라는게 다른 사람이 제작한 것이면 아무리 머리를 싸매고 봐도 잘 활용한다는 것이 쉽지만은 않습니다. 더군다나 상용 엔진을 구입하여 상용 게임을 제작할 때는 해당 엔진의 성능을 100% 사용하는 것 뿐만 아니라 현재 진행중인 프로젝트에 맞게 엔진을 재구성하고 수정하는 것이 무엇보다 중요합니다. 물론 라이선스의 계약에 따라 수정여부가 달라질 수도 있겠지만 기술적인 지원이 원활히 이루어지지 않는다면 엔진을 구입하는 가장 큰 이유중에 하나인 제작기간 단축을 달성하기는 커녕 돈은 돈대로 들고 제작기간은 제작 기간대로 들어가는 이중고를 겪을 수도 있기 때문입니다. ■ 자신의 프로젝트에 얼마나 적합한가를 따져야 합니다. MMORPG (Massively Multi-player Online Role Playing Game) 를 제작하려 하는데 성능이 뛰어나고 가격이 합리적이라는 이유만으로 FPS (First Person Shooting) 게임을 제작하는 데 최적화되어 있는 엔진을 구입한다면 이 역시 자체 제작하는 편이 더 시간과 비용을 줄일 수 있는 것입니다. ■ 사용하기 편리하고 좋은 자체 툴을 가지고 있어야 합니다. 아무리 성능이 뛰어난 엔진이라 할지라도 실제 사용하는 엔지니어들이 숙지하는 데 많는 시간과 노력이 소모되다면 제작 초기부터 힘든 난관에 부딪히게 될 수 있습니다. 또한 엔진에서 자체적으로 제공하는 툴이 직접적이며 사용하기 편하고 호환성이 뛰어나지 않다면 제작에 맞는 툴을 따로 제작하여야 하므로 역시 이중부담이 되는 것입니다. 예를 들어 현재 우리 나라에서 가장 많이 사용하는 그래픽툴 중에 하나인 A 사의 소프트웨어를 지원하지 않고 잘 사용하지 않는 B 사의 소프트웨어를 지원하게 툴이 제작되어 있다면 A 사의 소프트웨어를 지원할 수 있게 엔진을 분석한 후 자체적으로 제작해야 합니다.
그렇다면 좋은 엔진을 제작하기 위해선 어떠한 사항이 필요할까요? 좋은 엔진에 대한 개념은 전단락에서 설명했던 좋은 엔진을 구입하기 위한 필수 사항이 모두 포함된다고 할 수 있습니다. 즉 엔진 제작의 초기에 필자가 전 단락에서 언급했던 내용들을 충분히 숙지하고 설계한다면 뛰어난 엔진이라는 평가를 받을 수 있을 것입니다. 다시 한번 이야기하지만 엔진은 하나의 독립적인 애플리케이션이 아닌 응용 애플리케이션이나 게임을 제작하는 데 가장 기초가 되는 설계이며 성능이 뛰어난 코드들의 모임입니다. 이점을 염두에 두고 엔진 제작에 임한다면 뛰어난 게임 엔진 프로그래머가 될 수 있으리라 생각됩니다.
- 뛰어난 상용 엔진을 구입하여 공부하는 것도 실력을 빠르게 키울 수 있는 가장 좋은 방법 중에 하나입니다.
클라이언트 프로그래머의 역할 [Bottom] [Top]
우리 나라에서 가장 많은 사랑을 받고 있고 가장 많은 제작사들이 제작하고 있는 장르는 MMORPG 입니다. 흔히들 PC 게임, 콘솔 게임, MMORPG 로 크게 분류하여 게임의 장르를 나누곤 합니다. 이는 네트워크를 사용하여 게임을 진행하는가 아닌가로 구분짓기도 하며 특히 MMORPG 는 방대한 인원이 제한된 공간에서 서로 커뮤니티를 생성하며 진행하는 게임인 만큼 다양한 하드웨어와 네트워크 환경을 극복하면서도 최근 트랜드에 맞게 제작하여야 하는 힘든 장르입니다. 따라서 성능이 뛰어난 게임 엔진이 반드시 있어야 하며 이 게임 엔진을 잘 활용하여 가장 효율적으로 사용할 수 있는 뛰어난 프로그래머가 필요합니다. 우리는 이를 '클라이언트 프로그래머' 라 부릅니다.
클라이언트 프로그래머들은 특히 네트워크에 대한 지식과 경험이 풍부해야 합니다. 물론 서버 관련 프로그래머들에 비하면 아무 것도 아닐 수 있지만 엔진에서 제공하는 그래픽 카드와 CPU 의 파워를 잘 사용할 수 있게 네트워크 모듈을 구성하지 않는다면 제 아무리 뛰어난 엔진이라 할지라도 네트워크의 벽에 부딪혀 자신의 성능을 100% 활용할 수 없기 때문입니다. 또한 각종 인터페이스 및 데이터베이스를 다루는 작업에도 능숙해야 합니다. 먼저 논리정연한 사고방식이 필요합니다.
하드 코딩은 금물! [Bottom] [Top]
많은 클라이언트 프로그래머들은 제작기간에 쫓기다 보면 흔히들 하드 코딩 (hard coding) 이라 부르는 손쉬운 코딩 기법의 유혹에 빠질 수밖에 없게 됩니다. 일단 한번 이 유혹에 빠지게되면 클라이언트 프로그램은 물이 흐르듯 자연스러운 논리의 전개에 따른 진행보다는 기능 구현에 맞게 뒤틀려 마지막에는 종잡을 수 없을 정도로 흐름이 꼬이게 됩니다. 이렇게 되면 각종 버그들은 어디서 나왔는지조차 알 수 없게 되며 하나의 버그를 수정하면 10개의 새로운 버그가 발생하기 십상인 엉터리 프로그램이 됩니다. 이를 피할 수 있도록 초기에 잘 설계된 엔진에 의한 논리정연하게 구성된 플로우차트에 따른 클라이언트 프로그램이 필요하며 이는 전적으로 클라이언트 프로그래머들의 책임입니다.
- 네트워크에 대한 기본 개념과 데이터베이스와 프로그램 성능과의 상관관계를 체계적으로 이해하고 설계하는 것이 중요합니다.
- 하드 코딩은 프로그램의 구조를 망치는 결과를 가져올뿐만 아니라 절약했다고 생각했던 제작기간이 예상치 못한 버그와 수정 사항으로 오히려 더 길어질 수도 있어 제작비에 막대한 손실을 가져올 수 있습니다.
서버 프로그래머의 역할 [Bottom] [Top]
여기까지 필자의 글을 읽어온 독자들은 필자가 게임 프로그래머에게 가장 강조하는 것 중에 하나가 코딩보다는 잘 짜여진 설계라는 것을 숙지했으리라 생각합니다. 물론 설계의 기본은 풍부한 경험과 체계적으로 구성된 기초 지식에서 기인합니다. 서버 프로그래머만큼 설계에 민감한 결과를 가져오게 하는 프로그래머도 없으리라 생각합니다. 특히 MMORPG 에서 서버 프로그래머는 게임의 서비스를 좌지우지할 수 있는 위치에 서있습니다. 아무리 훌륭하고 재미있는 기획, 뛰어난 성능을 가진 엔진과 안정적인 구조로 짜인 클라이언트 프로그램이 있다 하더라도 실제 유저들이 플레이할 수 있는 공간을 제공하는 것은 서버 프로그래머들이기 때문입니다. 통상 여러 대의 PC 혹은 워크스테이션으로 구성되는 서버 머신 (server machine) 들은 어떻게 구성되어야 하는지, 구성된 서버군에서 최고의 트래픽이 몰렸을 때 처리할 수 있는 접속자는 몇 명인지, 네트워크로 몰려드는 트래픽을 어떤식으로 분산시켜 처리하여야 하고 클라이언트와 주고받는 패킷은 어떤 방식으로 가공하여 처리하여야 하는지 등 이 모든 것들이 안정적이며 효율적으로 구성되어 있지 않다면 유저들의 믿음이 떨어지고 따라서 제작된 게임은 실패할 위험이 높아지는 것입니다.
서버 프로그래머는 SQL 등의 각종 데이터베이스 검색 프로그램도 잘 다루어야 합니다. 가장 빠르고 효율적으로 유저 데이터와 게임 데이터를 검색하고 적용시킬 수 있는 노하우를 보유하고 있어야 하며 기획자와 밀접하게 연관되어 최적의 데이터베이스 테이블을 구성할 수 있어야 합니다. 때문에 서버 프로그래머들은 경험과 경력이 쌓여갈수록 여타 프로그래머에 비해 실력보다는 믿음과 안정감을 줄 수 있도록 하는 것이 중요합니다.
- MMORPG 에서 유저들에게 재미와 신뢰를 심어주는데 가장 결정적인 역할을 하는 사람이 프로그래머들입니다.
- 하드웨어와 코드를 적절히 튜닝하여 최상의 성능을 끌어올리는 데 집중하여야 합니다. 물론 안정성은 기본 중의 기본입니다.
왜 게임 프로그래머인가? [Bottom] [Top]
왜 게임 프로그래머인가? 이 물음을 던지기에 앞서 난 진정 게임을 좋아하는가에 대한 물음을 던져보도록 하겠습니다. 게임을 진정으로 좋아한다면 여러가지 직업을 선택할 수 있을 것입니다. 게임을 열심히 플레이할 수 있는 프로 게이머 혹은 게임을 기획하여 게임의 모양을 갖추게 하는 게임 기획자, 게임에 아름다운 생명력을 불어 넣어주는 게임 그래픽 디자이너, 게이머들의 귀를 즐겁게 해주고 게임에 더 몰입할 수 있게 해주는 사운드 디자이너 등 게임에 관련된 작업과 직업은 무척이나 다양합니다.
모든 업종들이 그렇지만 특히 게임 쪽에 종사하는 인력은 게임에 대한 열정과 기호가 맞아 스스로 뛰어든 인력이 대부분이라 생각됩니다. 스스로 마니아라고 자처하며 자신이 즐겼던 게임을 동경하며 혹은 자신이 재미있다고 생각되는 게임을 창조하기 위해 게임업계에 뛰어들어 사람들에게 많은 즐거움을 주고 있는 사람들 중 자신은 왜 꼭 게임 프로그래머이어야 하는가에 대한 본질적인 물음에 대한 답을 가지고 있다면 당신은 게임 프로그래머로서 대성할 준비가 되어 있는 사람임에 틀림없습니다. 게임 프로그래머들은 단지 프로그램을 프로그래밍하는 코더나 엔지니어의 역할뿐만 아니라 기획과 그래픽, 사운드를 넘나드는 멀티 플레이어가 되어야 합니다. 이 부분이 여타 프로그래머들과 확연히 구분지어지는 게임 프로그래머들만의 특징입니다.
나만의 독특한 세계를 구축하자 [Bottom] [Top]
이상으로 간략하게나마 게임 프로그래머들에게 알려주고 싶은 몇가지 사항들에 대한 글을 마칠까 합니다. 몰론 이 글에서 다루기엔 게임 프로그래머들의 세계는 너무나 방대하지만 기초적인 지식이나 대략적인 게임 프로그래머들의 세상을 이해하는 데 많은 도움이 되리라 생각합니다. 언젠가는 세부적이고 전문적인 내용들로 여러분과 다시 만나길 바랍니다. 끝으로 이 글에 나오는 모든 생각은 필자의 오랜 경험에서 나온 개인적인 생각으로써 다른 사람들과 의견이 다른 부분이 존재할 수도 있습니다. 여러분도 많은 경험과 실력을 쌓아 자신만의 독특한 세계를 구축해 나가기 바랍니다. 게임 프로그래머라면 무엇보다 독창적이고 창의적인 세계를 만들어가는 게임이라는 세계의 개척자가 되어야 할 사람들 이니까요.
