티스토리 뷰

지껄이기

게임 개발자의 자질 [ 프로그래머 편 ]

알 수 없는 사용자 2008. 3. 23. 22:54

  프로그래머의 경우는 그냥 컴퓨터라는 것을 잘하면 된다라고 착각하는 경우가 많습니다. 실제로 게임 프로그래머 지망생이나, 게임 프로그래머라고 뽑히는 사람들을 보면, 그런 사람들이 많습니다.

  하지만, 프로그래머라면 반드시 잘 해야 하는 학교 과목이 있습니다. 수학과 물리입니다. 의외일지 모르지만, 사실입니다.

  컴퓨터가 일반적으로 할 수 있는 일, 계산, 문서작업, 음악, 영화플레이, 게임, 그림보기, 인터넷, ...  이것은 컴퓨터가 음악을 이해하고, 색깔을 이해해서 할 수 있는 것이 아닙니다. 전부가 숫자를 이용해 그것을 처리하는 것입니다.

  컴퓨터가 아는 것은 10진수도 아닌 2진수입니다. 즉, 1과 0을 조합한 복잡한 숫자( 000101, 0001011101 등 )를 이용해서, 어디로 옮기고, 어떻게 계산하고, 등의 작업을 통해, 모든 일을 합니다.

  예로, 스타크래프트의 적의 움직임 인공지능 역시도 숫자를 이용합니다. 적의 위치가 x, y좌표 어디에 있는가, 거기까지 가는 동안에 장애물이 있는 좌표는 어디고, 그 좌표를 피해서 거기까지 가려면, 어떤 좌표를 지나가야 하는가? 적이 얼마나 가까이에 있는가? 가까이에 있으면, 어떤 공격력으로 공격할 것인가? ( 전부 숫자입니다. )

  음악도 마찬가지입니다. 모든 음을 숫자로 나타내는 겁니다. 간단히 가정을 하면, 도는 0, 레는 1, 미는 2, 파는 3, ... 등으로 만들고, 그걸 사운드카드가 플레이 하기 위해 명령어( 이것도 숫자 )를 보내고, 그리고, 사운드카드가 원하는 메모리 공간에 음을 연주할 숫자를 넣어주면 됩니다.

  그림도 음악과 마찬가지입니다.

  3차원 그래픽은 진짜 수학 천지입니다. 기본적으로 행렬부터, Sin, Cos, ... 만약 물체의 움직임을 리얼하게 표현하겠다 싶으면 물리의 공식이 잔뜩 들어갑니다. 레이싱 게임의 경우, 물체와 바닥사이의 마찰계수, 가속, 미끄러짐, ... 심지어, 비가 오는 날의 마찰력, 가속, 미끄러짐 모두 프로그래머가 계산해야 하는 것 천지입니다. ( 기획자나 그래픽 디자이너가 해줄 수 있는 문제는 절대 아닙니다. )

  조금 구체적으로 이야길 해보죠.

  수학은 크게, 문제 분석력, 문제 해결능력, 공식 조합능력, ... 등 을 요구한다고 합니다. 이 모든 것이 사실 수학에서 지겹게 하는 겁니다. 어떤 특정한 문제가 있을 때, 그것을 분석하고, 그걸 해결하기 위해 필요한 공식들을 찾고, 그 공식을 이용해 조합하고, 마지막으로 문제를 종합적으로 해결하는 능력입니다.

  또한 버그가 발생했을 때, 찾아가는 순서도, 수학에서 사용하는 검산과 똑같은 방식을 사용합니다. ( 다시 풀기, 대입법, ... )

  간단한 프로그램은 수학을 못해도 할 수 있습니다. 하지만, 앞으로 갈수록 게임은 간단한 프로그래밍 기술로는 불가능합니다. 특히, 간단한 모바일 게임의 경우 누구나 할 수 있는 프로그램이라고 착각하고 한 때, 그렇게 프로그램을 했었지만, 점점, 복잡한 기술과 이론을 사용하기 때문에, 점점 더 수학을 잘 하는 사람을 필요로 할 겁니다.

  수학 못하는 사람 중에 게임 프로그래머로 잘 나가는사람이 있던데요. 그 사람은 크게 3가지 중 하나 입니다. 학교 공부에 적응하지 못해, 수학을 일부러 공부 안한 천재 또는 게임 프로그래머지만 복잡한 프로그램이 아닌 작은 게임이나 알고리즘만 만든 사람 아니면, 말만 그럴듯한 허풍쟁이.

  그 외에 C언어를 완벽히 활용할 수 있을 정도의 능력. ( 다른 자바나 베이직, 플레쉬로도 게임을 만들 수 있지만, 분명히 한계가 있습니다. C#이 차세대 언어가 될 거라는 소리가 있었지만, 역시나 향후 5년 동안도 C언어로 게임을 제작하는 것이 주류가 될 겁니다. 왜냐면, 어셈블리나 기계어와 똑같은 속도를 구현할 수 있는 최적화가 되어 있기 때문입니다.

[ 에이 그럼 느린 게임만 만들면 되지. ]

라고 말하고 싶은 사람도 있을지 모르겠지만, 그럴려면 차라리 빠르게 게임 만들어서 거기에 화면 효과나 다양한 시각효과를 하나라도 더 주자가 게임의 흐름입니다. 단순히 게임만 되는 게임과 스코어나 미니맵 그리고, 타격에 효과처리가 되어 있는 게임은 차원이 다릅니다.

  그리고 영어. 프로그래밍 최신 기술은 영어로 먼저 나옵니다. 알고리즘이나 하드웨어 개발시 프로그래밍 방법은 모두 영어로 먼저 나오기 때문에 빠른 기술 습득에 영어를 잘 하는 것이 좋습니다만, 저는 영어를 못하고도 프로그램을 했었습니다. ( 프로그래밍하면서 영어 잘하는 사람들이 부러웠답니다. )

  또 완벽주의자의 경향이 있어야 합니다. 이것은 게임 개발자의 공통된 자질에서 설명하려고 했습니다만, 여기서 언급하는 이유는 다른 분야 사람들보다 프로그래머는 가장 완벽주의자여야 하기 때문입니다. 완벽하지 못하면, 생기는 문제가 첫째 버그, 둘째 버그, 셋째, 버그, 넷째, 일정 차질입니다.

  첫째부터 셋째가지 버그라고 말장난 한 이유는, 버그가 프로그래머들의 최대 적입니다. 그리고 완벽하게 프로그래밍을 하지 못하면, 항상 생기는 것이 버그기 때문입니다. 일반 업무용 프로그램처럼 [ 판매 후에 패치하지 뭐. ] 이런 생각이라면, 게임을 말아먹겠다는 뜻입니다. 소프트맥스의 [ 마그나카르타 ]사건의 예를 보더라도, 버그가 얼마나 게임에 대한 흥미를 떨어뜨리고, 회사에 얼마나 심한 타격을 주는지 알 수 있습니다.

  C언어를 못하면 배우면 됩니다. 영어 못하면, 국내에 알려진 기술이나, 영어 잘 하는 사람의 도움을 받으면 됩니다. 수학 못하면, 작은 게임만 개발하던가, 보조 프로그래머로만 일하면 됩니다. 하지만, 완벽하게 만들려고 하지 못하는 사람은 게임 개발에 전혀 도움이 안됩니다. 오히려, 개발과 일정에 방해만 됩니다.

  마지막으로 게임 프로그래머로 성공하고 싶으시다면, 수학부터 완벽히 공부하십시오. 완벽히