2010년 12월 30일 목요일

쉐이더 입문 책을 쓰고 있습니다.

예전에 북미취업 시리즈 쓸 때, 잠깐 언급했었죠. 쉐이더 입문 책.... 현재 쓰고 있습니다. 이미 출판사와 계약은 마쳤구요. 지금은 열심히 쓰고 있습니다. 지난 몇주간 밤낮으로 썼더니 절반 이상은 쓴 것 같군요. (초고만요)

일단 제가 지난 3년간 캐나다의 Art Institute 대학에서 쉐이더 강의를 했던 내용을 책에 담는 것을 목표로 하고 있습니다. AI 대학의 게임프로그래밍 학과에서 몇년 동안이나 가장 훌륭한 과목으로 손꼽혔을 정도니 아무래도 쉐이더 초보/입문자들에게 크게 도움이 될 거라 생각합니다.

제가 생각하는 대상 독자는

  • 프로그래머인 경우: C++, DirectX를 마친 프로그래머, 3D 수학을 마친 프로그래머.
  • 테크니컬 아티스트: 특별한 사전 요구사항 없음

제가 이 책을 내는 이유는 아직 이런 책이 시중에 없어서입니다. 강의를 하면서도 적당한 책이 없어서 아예 교재 없이 강의를 했다죠. 그렇게 하다가 이 자료를 개발한 것이고요. 시중에 나와있는 대부분의 책은 중급/고급자를 위한 겁니다. 따라서 초보자가 그대로 보면 뭔소리진 몰라서 그냥 포기하고 말죠. 초보자 내용이 간간히 DirectX 책에 소개되는 경우가 있지만 그 중에서도 마땅히 된 책이 없다고 생각하는 이유가

  • 너무 수박 겉핥기 식이다.
  • 또는 너무 이론이나 문법에만 치우쳐져 있다.
  • 또는 실무에서 그다지 도움이 안 되는 내용만 너무 많이 담고 있다. (따라서 지면수가 많다. 책값도 쓸데없이 비싸다.)

등 입니다.

따라서 이 책은 쉐이더 프로그래밍에만 초점을 맞추고, 정말 실무에 써먹을 수 있는, 아니면 실무에서 다른 기법을 써먹는데 기반이 되는 내용만을 다룹니다. 아무래도 테크니컬 아티스트와 쉐이더 입문에 입문하는 프로그래머가 모두 볼 수 있도록 하다보니 ShaderX나 GPU PRO등에서 볼 수 있는 고급기법들은 들어있지 않습니다. 저 책들하고 경쟁할 생각도 없습니다. 제 책은 순수히 입문자를 위한 책이고, 제 책을 읽고 쉐이더에 재미가 붙으신 독자분들이 ShaderX 등의 책을 즐겁게 보실 수 있다면 전 행복합니다. 그리고 쓸데없이 지면수를 늘리지 않으려는 것도(따라서 책값도 줄이는게) 제 목적 중 하나입니다.

모든 내용을 한 권에 담은 무거운 책들이 난무하는 상황에서 어찌보면 모험을 거는 건죠. 그래도 출판사 측에서 흔쾌히 그러자고 해줘서 한 숨 놓았습니다.

현재 제가 써놓은 초고를 따라하시면서 테스트를 해 주시는 프로그래머 분들이 두 분 계십니다. 한 분은 경력이 꽤 있는 게임프로그래머지만 HLSL 쉐이더 프로그래밍을 해보진 않으신 분이고, 다른 분은 경력이 거의 없으신 분이죠. 두 분다 이 책의 내용에 흡족해 하시고 있으니 기대를 좀 해보셔도 좋을 듯 합니다. (그리고 현재는 이분들이 주시는 피드백을 기초로 모자란 부분을 계속 더해가는 중입니다).

몇 주만 더 밤낮으로 일하면 초고는 다 끝납니다. -_-;

업데이트(2010년 12월 31일):

  • 한글판으로 나옵니다. (물으시는 분들이 많으셔서)
업데이트(2011년 11월 18일):

2010년 12월 26일 일요일

두 블로그를 하나로 합쳤습니다

글쓰는 블로그와 개발관련 블로그를 따로 운영했으나 두개 다 관리하기가 귀찮아짐에 따라 그냥 여기로 다 합쳤습니다. 그 대신 오른쪽에 분류를 개발/글/잡담 등으로 분류해놨으니 그나마 괜찮을지도 모른다고 제 맘대로 생각해봅니다.

2010년 11월 12일 금요일

Unlimited Detail 기술의 현재상태

한 때, Unlimited Detail이라는 3D 그래픽 테크를 광고하던 유투브 비디오를 본적이 있었습니다. 한마디로 폴리곤으로 모델링을 하는 개념을 버리고 3차원 상에 존재하는 점 하나하나를 그리자는 개념이었는데요. 뭐 구현방법은 틀리지만 근본적으로는 Sparse Voxel Octree하고 비슷한 개념이라고 이해했었죠. 어차피 두 기술 모두 1) 폴리곤의 사용을 지양하고 2) linear LOD를 추구하니까요.

이미 레이트레이싱이 당장 게임에 적용가능성이 없는 기법으로 전략해버린 현재 상황에서 결국 Unlimited Detail의 경쟁대상은 Sparse Voxel Octree인데... Sparse Voxel Octree를 이용한 렌더링은 이미 Id 소프트웨어의 차세대 엔진인 Id Tech 6용으로 개발중이니 과연 Unlimited Detail의 현재 상태가 어떻게 되나 궁금해서 한번 뒤져봤다죠.

Unlimited Detail의 웹사이트를 가보니 2010년 9월 17일자로 나온 언론보도자료가 있는데 이미 투자를 받았고 12~16 개월 사이에 데모를 공개할 거라고 하네요. 그리고 처음으로 그 개발자의 이름이 Bruce Robert Dell이란 걸 알게 되었는데 어떤 사람인가 궁금해서 LinkedIn을 뒤져보니 별거 없고 Unlimited Detail에서 CEO를 한게 15년이라고 되어있네요. -_-..... 기술 자체만 봐서는 불가능한 건 아닌데 (어차피 3D Scanning 알고리듬만 제대로 작성하면 가능하니까요), 이 사람의 이력을 보면 왠지 Project Offset처럼 왠지 그냥 허풍만이 아닐까 하는 걱정도 되네요. -_-;;;;

뭐 일단 12~16개월이 지나서 데모가 나오면 알겠죠. 뭐가 진실인지... 정말 그래픽 업계를 홀딱 뒤집어 놓을런지....

또 다른 생각이 드는 것은 결국 Sparse Voxel Octree이던 Unlimited Detail이던 폴리곤기반의 모델링에서 다음 단계로 넘어가는 것은 시간 문제인것 같은데 과연 그렇게 되면 폴리곤 모델링을 중심으로 해서 발전되온 아티스트들의 교육은 어떻게 바뀔지.... ZBrush처럼 sculpting 기반으로 다 바뀔까요?

2010년 11월 2일 화요일

NVIDIA Texture Tools 2.1 출시 임박

NVIDIA 텍스처 툴의 개발자이자 유지보수자인 Ignacio님과 대화를 통해 알아낸 사실입니다. 새 버전 2.1의 출시가 임박했다는군요. (이번주에 나온다고 들었습니다). 2.0.8 버전과는 달리 제가 원하는 기능이 하나 들어있는데요. 바로 이 페이퍼에서 다뤘던 YCoCg 텍스처 압축이죠. DXT 텍스처의 품질저하를 줄일 수 있는 방법입니다.


YCoCg 변환을 하기전에 sRGB 텍스처를 linear 스페이스로 변환하는지가 궁금해서 Ignacio님께 물어봤더니 2.1은 API 설계원칙 자체에 커다란 변화가 있었다고 하더군요. 영어로는 Imperative API라고 하는데 (한국말로는 잘 모르겠음.. 뭔지) 대충 설명하면 모든 API 함수 호출을 일일이 해주는 방식이랄까요. 즉, 프로그래머로써는 모든 parameter들을 직접 제어할 수 있으니 매우 좋은 방법이죠. sRGB를 Linear로 변환한뒤 사용하고 싶으면 스스로 하면 된다.. 정도랄까요. 어쨌든 2.1 버전은 매우 기대가 되는군요.


참고로 이미 Ignacio님의 회사에서 2.1 버전을 꽤 오랬동안 사용해왔다고 합니다. 버그도 그리 많지 않을듯 하네요.

2010년 9월 8일 수요일

게임개발자 북미취업 가이드 7편: 질문/답변

안녕하세요. 포프입니다. 벌써 마지막 편이군요. 처음에 이 시리즈를 계획할 때, 글을 쓰다보면 상당히 많은 질문들을 받겠구나 했는데, 사실 그렇게 많은 질문들은 없었습니다. 제 글이 별로여서 읽으신 분들이 별로 없었거나, 아님 제가 너무 글을 잘써서 질문할 거리들이 없었던 거겠지요. (제 맘대로 후자로 생각하겠습니다. ^^)

원래는 이번 글에서 질문에 답변을 드린 다음에 생각나는대로 제가 드릴 조언들이 있으면 올릴려고 했는데 글을 쓰면서 제가 당장 생각할 수 있는 조언들은 이미 다 드린듯 합니다. 그래서 일단 이번 편에 마지막으로 올리고, 나중에 뭔가 생각나는 게 있으면 그제서야 올리겠습니다. 일단 이 글이 마지막이라고 생각하세요. ^^

그럼 몇 안되지만 제가 받았던 질문들에 대한 답변들을 다시 정리해 올리면서 이 시리즈를 마무리 짓겠습니다.

질문 1: 북미쪽은 신입개발자들의 나이가 어떻게 되나요?
짧은 답: 대중 없습니다. 상관도 없습니다.
긴 답: 이 쪽 노동법상 면접을 보거나 원서를 받을 때 나이를 물으면 그 자체로 노동법 위반입니다. 성별 나이에 상관없이 동등한 취업기회를 제공하는 것이 헌법의 정신이기 때문입니다. 물론 대부분은 대학을 졸업하고 취업을 하는 경우가 보통이라 만 22살 정도의 사람들이 신입이 좀 많습니다. 하지만 그 외에도 나이가 차서 취직하는 경우도 허다하지요. 저같은 경우도 만 28살 정도나 되어서 이쪽에서 신입으로 취직한 거나 다름 없으니까요. 심지어는 저희 회사에 50대에 신입 프로그래머로 취업한 분(미국인)도 한분 계십니다. 헐리우드 쪽에서 영화제작에 주로 참여하다가 게임쪽으로 전향하셨죠.

질문 2: 실력은 어느정도 되야 하나요?
짧은 답: 기본이 탄탄하고 기본적인 C/C++ 질문들은 컴퓨터 없이 프로그래밍을 할 수 있을 정도면 됩니다.
긴 답: '3편: 취업을 위한 필수/선택요건 - 면접절차'의 젤 아래에 보면 "프로그래머 면접문제들 예제'를 올려놨습니다. 그 질문들 무난하게 푸실 수 있으면 됩니다.

질문 3: 영어 공부는 어떻게 해야 하나요?
짭은 답: 공부가 아니라 생활이 되어야 합니다.
긴 답: 매우 긴 답이 될 거 같습니다. 생각보다 이 부분에 걱정하시는 분들이 너무 많으셔서요. 영어를 공부하려고 공부하면 역시 안되더군요. 짜증만 나고 스트레스만 쌓이고, 괜히 영어 잘못쓸까봐 고민만 하게 되고... 저도 사실 영어를 잘해야지 라는 생각을 안한 뒤부터 영어가 많이 늘었습니다. 물론 저는 BCIT다니면서 캐나다 본토인들과 거의 동고동락 하는 친구사이가 된게 컸지요. (그 친구들 제 영어가지고 참 많이도 놀렸다죠. ^^) 

하지만 한국에 계신분들은 이런 경험을 하기가 쉽지 않을 것입니다. 그래서 제가 추천하는 방법은 일단 좋아하시는 분야의 책을 영어로 읽으시라는 겁니다. 소설도 좋고 기술서도 좋죠. 어차피 게임개발자들 최신기술들은 외국자료에서 얻으시잖아요? 그냥 그거 읽으시길 바랍니다. 근데 한가지 당부하실것은 한영사전을 끼고 한단어 한단어 분석해가면서 읽지 마시길 바랍니다. 그냥 문장이 해석이 되던 안되던 처음부터 끝까지 한 두번정도는 그냥 읽으세요. 그러다보면 앞에서 해석이 안되었던 문장이 뒤의 문장을 읽으면서 저절로 해석이 되는 경우가 많습니다. 정확한 뜻은 모르지만 문맥상 이해가 되는 경우죠.

한국말로 된 소설책 읽어보셨나요? 그런 책 읽을 때 모든 단어 하나하나의 의미를 다 아세요? 전 모르겠더군요. 근데 재미있는건 그 단어 하나 모른다고 사전찾아보지 않아도 글 전체를 이해하는데는 아무 하자가 없다는 것입니다. 영어도 그렇게 하면 익혀지더라고요.

또 이렇게 사전을 안보고 한두번 읽으면 좋은 것중에 하나가 몇번이나 계속해서 나오는 단어들을 기억하게 된다는 겁니다. 이해가 안되는 단어 하나가 한 5~6번 반복되다 보면 '아, 이 단어 앞에서 봤는데 이게 뜻이 뭐지? 아, 답답해.'라는 생각이 들면서 그 단어를 확실히 기억하게 됩니다. 그리고 나중에 3번째 정도 읽으실 때 그 단어의 뜻을 사전에서 찾아보면 머리에 확실히 기억됩니다.

이렇게 하는게 처음부터 사전을 찾는 것과 뭐가 다르냐고 하실 분들이 계실거 같은데, 저의 경우에는 확실히 달랐습니다. 글을 읽으면서 중간 중간 멈춰서 사전을 찾아보다 보면 글 읽는 흐름이 끊겨서 글의 전체내용을 이해하기 어려워지면서 영어 느는 속도가 더뎌지더군요.

이 외에도 영어 듣기를 늘리고 싶으신 분들은 정찬용씨가 저술하셨던 '영어 공부 절대로 하지마라' 책에서 소개한 내용을 따라해보시기 바랍니다. 이 방법을 간단히 요약하면 그냥 영어로 된 영어든 드라마던 강의던.. 영어로 된 자료들을 자막 없이, 사전 없이 그냥 듣고 읽으라고 하지요. 그것이 바로 어린이들이 새로운 언어를 습득하는 방법과 같다고 하시더라고요. 저도 이 주장에 절대 공감합니다. 저도 영어듣기를 공부에 의해서가 아닌 그냥 사람들하고 어울리면서 익힌 케이스거든요.

하지만 '3편: 취업을 위한 필수/선택요건 - 면접절차'에서 말씀드렸듯이 영어 아주 잘하시지 않으셔도 취직엔 크게 문제가 없습니다.

질문 4: 포프님이 추천하는 북미취업방법은 무엇인가요?
짧은 답: 실력을 보여줄 수 있는 가장 확실한 방법을 택하세요.
긴 답: 첫째, 한국에서 게임프로그래머로서 경력을 최소 2~3년 쌓으세요. 둘째, 경력을 쌓으시면서 실력을 충분히 올려놓으시기 바랍니다. 셋째, 캐나다에 있는 회사에 취업을 하세요. (캐나다는 미국보다 비자가 좀더 쉽게 나옵니다. 하지만 원래 가시고자 하는 회사가 미국에 있고 곧바로 미국에 지원해서 취업이 되시고 비자도 받으시면 그게 더 좋죠. ^^) 넷째, 캐나다에서 2년정도 경력 쌓으시면 영주권 받는게 가능할 겁니다. (더 빨리도 될 수 있죠.) 영주권 받고 2~3년 더 계시면 캐나다 시민권도 받으실 수 있습니다. (캐나다 시민권자는 또 미국비자가 쉽게 나오죠.) 다섯째, 가시고 싶은 회사에 가십니다. (미국이던 캐나다던).




요 4가지 질문이 끝입니다. 더 이상은 받은 질문이 없네요. ^^ 왠지 시리즈 하나를 끝내니 뿌듯하면서도 조금 시원섭섭한 맛이 있는데 앞으론 어떤 글을 올려야할지 모르겠습니다. 그냥 예전처럼 "이것저것" 시리즈를 올릴 수도 있고, 게임 프로그래밍 관련 글을 생각나는 데로 올릴 수도 있고요. 아니면 그냥 다이어리 형식으로 1주간 한 일을 올릴 지도 모르겠네요. 음.. 뭐가 제일 나을까요?

그리고 이제 북미취업 가이드 시리즈를 끝냈으니 전에 잠깐 말씀드렸던 HLSL 입문서적을 저술하는 계획도 좀 세워봐야 겠네요. 출판사쪽에서 관심은 있다고 자세한 저술 계획서를 제출해달라고 했더라구요. ^^

그럼 그동안 북미취업 가이드 읽으시느라고 수고하셨습니다. 나중에 제가 글 올리는 거 보실려면 RSS 구독하시면 될것 같네요. ^^.

모두 집중적인 현명한 노력을 통해 원하시는 바 꼭 이루세요. ^^

-포프 올림


p.s. 글 즐겁게 보셨고 다른 사람들에게도 도움이 되겠다 싶으시면 View On(Daum)이나 좀 눌러주세요. ^^



2010년 8월 25일 수요일

게임개발자 북미취업 가이드 6편: 실제 취업사례 - 다른 사람들

지난 주에는 제 취업사례 -- 사실 거의 인생담이었지만 -- 를 소개해 드렸습니다. 이번 주에는 제가 제3자의 입장에서 목격했던 다른 분들의 취업사례들을 알려드리겠습니다. 조금 더 객관적이 되겠죠? ^^

한국에서 경력쌓고 캐나다 어학연수 뒤 취업하신 프로그래머 H님
제가 예전에 Blue Castle Games에서 일할 때 렌더링 프로그래머로 취직해오신 한국분이 계셨습니다. H님이라고... 한동안 바로 옆 책상에서 일하시긴 했지만 딱히 친해질 기회는 없었네요. 워낙 조용하신 분이었고 다른 렌더링 프로그래머랑 잘 어울려 놀지도 않으셔서 저하고 친해질 기회는 없었습니다.

이분은 연세대 수학과(94학번이신듯)를 졸업하셨고요. 그 뒤에 한국에서 경력을 한 7년정도 쌓으셨죠.  한국에서 마지막에 몸담으셨던 곳은 웹젠인데 '뮤'  개발에 참여하지는 않으셨던 거 같고요. 차기작에서 클라이언트 팀장을 하셨답니다. 그 뒤에 캐나다로 어학연수 한 6개월 오셨다가 어학연수동안에 Blue Castle Games에 원서를 넣으셨다죠. 잘 기억나진 않는데 곧바로 면접을 보지는 못하셨고, 한국에 돌아가신 뒤에야 연락와서 면접받고 취업하신 걸로 기억합니다. 그리고 비자는 Blue Castle Games에서 취업비자 스폰서를 해줬다는군요.

직급은 시니어 프로그래머 급은 아니였고요, 한 중급(intermediate)정도였던 듯 합니다. 북미 경력으로 치면 한 3~4년 쳐주지 않았나 싶네요. (죄송스런 말씀이지만 한국에서 쌓는 경력은 북미에 비해 좀 실력향상이 더디더라구요.)

모범적인 케이스죠? 한국의 경력을 기반으로 실력보여주고 면접으로 실력인정받아서 해외취업한 케이스. 심지어는 회사에서 취업비자 스폰서까지 해줬으니까요. 이 분 이제 해외 경력만도 한 4년 넘게 되니까 이민을 하셨거나 준비중이지 않을까 싶네요. ^^

VFS에서 3D모델링 공부 뒤 취업하신 H님
어라? 또 H 님이네요. 당연히 다른 분이십니다. 이 분은 제가 예전에 KoolHaus Games에 다닐 때 만났던 분인데요. 사실 한국에서 뭐 하셨던 분인지는 잘 모릅니다. 한국에서 특별한 경력이 없었던 걸로 알고 있고요. 캐나다로 유학와서 Vancouver Film School 하고 Capilano 대학에서 3D 모델링과 애니메이션을 총 2년 공부하신 뒤에 포트폴리오 잘 만들어서 위 게임회사 취직한 케이스입니다. 그리고 한 6개월 뒤엔가 다른 애니메이션 회사로 가신 분입니다. 현재는 Rainmaker라는 꽤 유명한 애니메이션 회사에서 리드(팀장)을 하신다는군요.

전에도 말씀드렸듯이 아티스트들은 포트폴리오 하나면 끝입니다. 프로그래머보다 실력을 증명하기가 정말 쉽지요. 이분 포트폴리오는 제가 직접 보지 못했지만 3D모델링 실력은 꽤 괜찮았던 걸로 기억합니다. 그리고 그 당시에는 신기술이었던 ZBrush도 잘 다뤘지요. 아마 그런 부분들이 취업에 도움이 되지 않았나 싶습니다.

이 분에 대해 인상깊었던 점이 두가지 있는데요. 첫번째는 이 분 영어 참 못하셨다는 겁니다. -_-;;;  한 번은 세들어 살던 집주인하고 뭔가 분쟁이 있었던 거 같은데, 정식으로 서류제출한다면서 영어로 편지쓴 것을 회사 사람들에게 한 번 보여줬었죠. 회사사람들 이 편지 읽고나서 대체 뭔소린지 이해하는 사람이 한명도 없었다는.....-_-;;  이정도로 영어못해도 실력 좋으면 취업된다는 걸 보여주는 좋은 예였죠.

두번째로 인상 깊었던 점은 이 분 꽤나 캐나다 문화에 잘 적응하셨다는 겁니다. 그 당시 캐나다인 여자친구도 있었어요. 그리고 한국에서 학벌이니 나이에 따라 계층을 두는 거를 참 싫어하셨던 거 같더군요. 한 서너달 같이 일한 뒤에 저한테 한말씀 하시는게 제가 맘에 들었던 점이 다른 한국인하고 다르게 처음보자마자 "한국 이름이 뭐냐?", "나이가 몇살이냐?", "학교 어디나왔냐?" 이런 질문 안했다는 거라더군요. (사실 처음 보자마자 이런 질문 하는거 참 에티켓 없는 짓 같아요.)

이 분 비자문제는 저 위에서 소개드렸던 프로그래머 H님과는 다르게 취업비자가 아니라 회사보조 BC주 특별이민이었던걸로 기억합니다. 6개월만에 캐나다 영주권 따셨을껄요?

어쨌든 아티스트들은 실력만 있으면 취업은 매우 쉬워집니다. ^^

고졸로 한국 경력 6년 후에  EA에 취직하신 프로그래머 M님
이 분은 한국에서 고등학교 졸업하신 뒤 곧바로 현업에서 경력 쌓으신 뒤에 EA에서 지원해서 전화면접만 보고 취업되신 분이십니다. 예전부터 FIFA 축구게임 만드는게 꿈이었다고 하셨는데 현재 FIFA 게임의 게임플레이를 담당하고 있다고 들었지요. ^^ 자신만의 운영체제를 만들어보려고 이리저리 쑤셔도 보신 분이시고, 한국에서 게임개발 관련 서적도 한 권 다른분들과 공동집필하셨더라고요.

제가 같이 일해본 경험은 없어서 실력이 어느정도신지는 모르겠지만 실력은 둘째하고서라도 운영체제 만들려고 시도해보고, 책도 저술하실 정도면 얼마나 열심히 사신 분인지 딱 보이시죠? 저한테 한번 자신은 고졸인게 컴플렉스라고 말씀하신 기억이 있는데 그런거 상관없이 실력만으로 취직이 된다는 거 보여주시는 참 좋은 예입니다. ^^

예전에 영어를 너무나 못하셔서 호텔에서 체크아웃할 때 엄청 고생하셨다고 소개드린 분이 계셨죠? 바로 이분입니다. 그래도 실력 인정받아서 취업하셨고, 처음 봉급도 한 7~8만불 받으셨으니까 한 경력 4년정도는 인정받으신듯. ^^

<Y님 이야긴 본인 요청에 따라 삭제했습니다. 그 대신 제 책을 보고 힘을 얻으셔서(?) 해외취직 성공하신 분들의 사례를 책에 업데이트 하겠습니다.>





위의 사례들을 보면 아시겠지만 한국에서 경력이 있으신 분들이 그나마 쉽게 취업을 합니다. 따라서 제가 추천해드리는 방법도 한국에서 경력을 쌓으신 뒤, 북미쪽으로 취업하시라는 것이지요. 물론 경력없이도 실력이 매우 뛰어나신 분들은 무경력으로도 잘 취직할 수 있으실 겁니다. 하지만 보통 자기가 잘났다고 하시는 분들 중에 한 10프로 정도만이 정말 잘나셨더군요.  (90프로는 그냥 현실감각 없으신 분들이에요 -_-;;;) 본인이 그런 케이스가 아닌지 한 번 잘 생각해보시고 가능하면 장기적으로 길게 보시고 차근차근 준비하시기 바랍니다.


p.s. 위에 다른 한국분들의 사례를 들면서 생각해보니 사실 저 분들중에 연락하고 지내시는 분이 하나도 없네요. 원래부터 인간 사귀는 폭도 그리 넓지 않고, 정말 친해지고 잘 맞으면 아주 친한 친구가 되지만 그렇지 않으면 대충 어울리지를 못하는 성격이라 그런 것 같습니다. 그리고 위에서 소개드렸던 아티스트 H님의 말처럼 나이나 출신 따지는 분들과 잘 어울리지 못해요.  ^^ (한국 분들 좀 그렇더라고요. 서로 한국출신이니 반드시 친구 먹어야 한다고 생각하시는 분들 ^^)  저는 그냥 인종/국적 상관없이 서로 잘 맞는 사람하고만 친구먹는 성격이랄까요.

p.s.2. 글 즐겁게 보셨고 다른 사람들에게도 도움이 되겠다 싶으시면 View On(Daum)이나 좀 눌러주세요. ^^


2010년 8월 18일 수요일

게임개발자 북미취업 가이드 5편: 실제 취업사례 - 포프


사실 북미취업 가이드의 핵심적인 내용들은 '제4편: 실전가이드'로 끝났습니다. 하지만 그냥 이론만 주루룩 늘어놓는 것보단 실제사례를 통해서 배우시는 분들이 꽤 되시므로 이번 주와 다음주를 통해 제 취업사례와 다른 분들의 취업사례를 늘어놓으려 합니다. (제 취업사례는 무지 주관적이고 다른 분들의 취업사례는 객관적이 될듯요.)

사실 한국에서 평생살꺼라고 생각했던 제가 이렇게 캐나다까지 건너와서 게임개발을 하게 된 사연(?)을 공개하는 것, 상당히 주저스러웠습니다. 제 삶에서 지난 20년 간의 이야기를 이렇게 한번에 정리해서 올리는 것이 처음인데 제 과거중에 상당히 부끄러운 부분이 많기 때문이기도 하고, 어찌보면 이젠 한국을 등지고 사는 제 모습을 곱지 않게 보실 분도 계실 것을 알기 때문입니다. 그래도 제 이야기를 통해 제정신 차리시는 분들이 한분이라도 있길 바라며 제 숨겨진 이야기를 여기에 올립니다.

현재 포프의 상태 - 북미경력 6년차의 그래픽스 프로그래머
일단 현재 게임프로그래머서의 제 상태를 살펴보면 다음과 같군요.
  • 현재 Relic Entertainment스페이스마린 팀에서 렌더링 프로그래머로 재직중입니다.
  • 북미 경력 6년, 한국경력 포함 대략 10년입니다.
  • 내년쯤에 Senior Graphics Programmer 타이틀을 달 가능성이 높습니다. (현재 Senior 바로 아래 직급)
  • 한달에 한 번씩은 세계 유수의 게임개발회사로부터 러브콜을 받습니다. (오늘도 Ubisoft에서 전화왔었습니다.)
현재 문화적으로는 솔직히 한국인이라고 하기 부끄러운 수준입니다.
  • 영어가 주(primary) 언어입니다. 생각도 영어로 하고 꿈도 영어로 꾸는 상태가 되었죠. 북미가이드 쓸 내용을 일주일내내 전철타고 출근하면서 노트에 끄적이는데 그 끄적이는 것조차 영어로 합니다. 한국말은 일주일에 한번 부모님하고 통화할 때 하는게 전부입니다. (한글 트위터 및 블로그 연 뒤로는 오히려 좀 더 자주합니다만 아직도 영어가 조금 더 편합니다. 영어로 먼저 생각한뒤 한글로 번역하는 수준이랄까요.)
  • 친구도 대부분 캐나다인고 한국친구는 1명밖에 없습니다. 저란 인간 알고보니 캐나다인들하고 문화적으로 더 잘 맞더군요. 캐나다인이 좀 더 사생활 존중도 잘해주고 실용적/논리적인 것 같습니다. 저도 그렇고요.
  • TV/영화/음악/뉴스 등의 한국 문화 및 소식과는 단절된지 오랩니다.

그럼 제가 어쩌다 이꼴이 되었을까요. 이 모든 스토리는 제가 처음 게임프로그래머 일을 시작했던 고등학교 시절부터 시작됩니다.

첫 게임개발 시도 - 그리고 실패
제가 게임을 만들 꿈을 꾸기 시작한건 중2 때부터 입니다. 1991년 쯤이죠. 이 당시 게임개발사들은 사실 매우 소규모였습니다. 한 4~5명이 모이면 게임 하나 만들던 때랄까요? 이 당시만해도 "전 컴퓨터 게임 만들거에요."라고 하면 무슨 소린지 이해못하시는 분들이 대부분이었습니다. 절대 사회적으로 인정 못받는 직업이었지요.

어린 마음에 뭔가 큰 미래를 본 것이었을까요? 아니면 그냥 여기에 본능적으로 끌린 것이었을까요? 전 이 때부터 몇몇 친구들과 함께 게임을 만들거라는 꿈을 꾸기 시작했습니다. 그리고 원래부터 프로그래머 체질이었던 저는 게임개발을 하려면 터보C를 해야한다는 말을 듣고는 중3때 C를 독학으로 마칩니다. (매 교시 쉬는시간마다 10분씩 공부했죠.) 그리고 고등학교를 다니면서 친구 너다섯 명과 게임개발을 시작합니다. 쉬는 시간, 점심시간동안 게임디자인/레벨 디자인하고 밤과 주말에 열심히 프로그래밍을 했었죠. 주경야독이랄까요.....

이렇게 말씀드리면 그냥 친구들끼리 장난삼아 놀이삼아 게임개발을 했다고 생각하실 분들도 계실듯 한데.. 그것보다는 조금더 진지했었습니다. 강남역에 사무실(오피스텔)까지 하나 있었으니까요. 그리고 실제 여기에 퍼부은 시간도 왠만한 전문 게임개발자 못지 않았습니다.. 주경야독 맞죠? ^^

이렇게 큰 야망의 결과는........ 실패였습니다. 게임을 내놓고 실패한것도 아니고, 1996년 모든 팀원들이 대학 진학한 지 얼마 안되서 내부불화로 팀이 해체 되었습니다. (사실 제 탓이 젤 컸죠. 팀장이고 리드 프로그래머이기까지 했는데 성격이 모나서 저하고 다른 핵심멤버하고 대판 싸우고 해체되었으니까요.)

법학도 - 방황의 시절
팀이 깨졌을 때, 전 이미 연세대 법학과에 재학중이었습니다. 왜 컴퓨터 과를 안갔냐고요? 가고 싶었습니다. 못갔죠. 제가 문과/이과를 선택해야했던 고2초 때까지만 해도 색약(색맹보다 조금 약한 놈. 하지만 사회적으로 여전히 무시받는 놈 ^^.. 그래서 제가 Blind Renderer죠. 색맹은 Colour Blind니까...)은 이과진학이 거의 불가능했습니다. 그게 가능해 졌을때는 이미 제가 고3이 된 이후였고, 그 때 다시 이과로 전향해서 모든 학업을 따라잡는게 너무 벅차게 느껴졌습니다. 그래서 그냥 문과에 머물렀고 결국 법대에 가게 된거죠. 어차피 모든 걸 독학으로 배우는 걸 좋아하는 저에게 무슨 과를 가는지는 크게 중요하지 않았습니다. 그냥 게임 만들어서 성공하면 전공은 크게 중요하지 않다고 생각했죠. (덕분에 '법대출신 게임프로그래머'라는 멋드러진 타이틀을 달고 다닙니다. 이젠....)

근데 게임 팀이 해체되었습니다..... 많이 힘들었죠. 다른 멤버들은 대부분 공대나 컴퓨터과에 진학했던지라 알아서들 또 다른 팀에 들어가곤 했는데 전 그러기가 쉽지 않았습니다. 법대에서는 게임을 만드려고 하는 사람들이 없더군요. -_-;;;; 혹시나 하는 맘에 연세대 컴퓨터 동아리에서 맘 맞는 새 멤버들을 찾아볼까 해서 찾아가보기도 했는데.... 그 후진 386 컴퓨터 한대 앞에 학생들 10여명이 우르르 모여서 '오오 신기하다~'라고 감탄하고 있는 꼴을 보곤 그냥 돌아서 나왔습니다. -_-;;;; 그렇게 대학교 초창기를 그냥 아무 의미없이 방황하며 살았죠. 그냥 힘들었던 기억만 많이 나고요. 그래서인지 단편 따위의 글도 많이 쓰고 노래도 꽤 만들고/부르고 그랬었네요.

그래서 그냥 다 잊고 군대나 갈려고 했는데 부모님들이 아들이 두명 다 군대에 가있는 건 쓸쓸하다시면서 형 제대하면 군대 가라고 만류하셔서 그것도 뜻대로 못했습니다. 그래서 그 대신 사법고시 공부를 시작했죠.

고시생 - 가족의 캐나다 이민 결정
사법고시 공부... 결국엔 이 것밖에 할 게 없나보다 하고 시작했었죠. 대학교 2학년, 97년이었을거에요. 그리고 법대 동기들이 거의 전부다 하니까 나도 해야하나 보다 따라한 것도 있고요. 나름대로 열심히 한 기간도 있었는데 결국 제가 정말 정열을 가지고 한 일이 아니다보니 계속 실패하더군요. 지금 뒤돌아보면... 나중에 제가 게임프로그래머가 되려고 퍼부은 노력에 비하면 정말 허접한 노력이었습니다. (그래서 제가 언제나 하는 말이 '정말 하고 싶은 일을 해라'입니다.) 또한 그리고 좋아하지 않는 일을 하다보니 전 언제 터질지 모르는 시한폭탄처럼 불만투성이었고, 성격도 꽤나 드러웠죠... (그 때 제 더러운 성격에 학 때신 분들 ... 혹시 보시고 계시면 미안해요...)

전 이 때만 해도 그냥 전 고시패스하고, 군복무관으로 몇 년 근무하고 나와서 판/검/변호사가 될줄 알았습니다. 그래서 97년 초인가에 가족이 캐나다로 이민가겠다고 결정하고 이민서류를 넣었을 때만 해도 좀 놀랐었죠. 부모님들이 혹시나 해서 제 이름까지 포함해서 전가족 이민서류를 넣어 놓긴했지만(아들 2명 넣나 1명 넣나 가격 차이가 별로 없었다는군요), 이 때만 해도 부모님들도 그렇고 저도 그렇고, 전 한국에서 고시패스해서 그냥 한국에서 눌러 살거라고 생각했죠. 따라서 이민 허가가 나면 가족들은 캐나다 가서 영주권 취득하고, 전 한국에 남아서 그냥 영주권을 자동포기할 생각이었습니다. 명문대에 다니고 있던 저에게는 확실히 새로운 나라보단 한국에서 사는거 좀 더 편했으니까요. 사실 뒤돌아보면 한국에서 남았으면 확실히 돈을 더 많이 벌었거나 보다 높은 사회적 지위에 있을거라 생각합니다. 뭐 정서적으로 지금보다 훨씬 불안하고 훨씬 덜 행복했을테지만요.

캐나다 이민... 이거 사실 1년안에 끝났어야 정상이었습니다. 98년이면 가족들이 절 버리고(?) 캐나다로 갈 예정이었지요. 근데 IMF가 터집니다..... 캐나다에서 이민수속 처리도 잘 안해줬죠.

캐나다 영주권 취득, 대학졸업 그리고 영구이민
결국 이민허가는 99년에 났고 가족들은 2000년 4월에 캐나다 이민을 갑니다. 전 이미 정신이 피폐할때로 피폐해 진 고시생이었고, 2001년 2월 졸업 예정이었죠. 제가 2000년 11월말까지 캐나다 입국안하면 영주권이 자동포기가 되는 상황이었는데, 가족도 한번 볼 겸 영주권도 그냥 받아둘 겸(어차피 포기하는 건 쉬우니까요.) 2000년 11월초에 캐나다로 와서 영주권을 땄습니다. 그리고 1주일만에 다시 한국에 나왔죠. 학교 졸업도 해야했고 사법고시도 봐야했으니까요. 당연히 그 해 사법고시 실패했고요. 2001년도엔 그냥 가족들과 있으면서 공부할 생각으로 캐나다에서 반 년 넘게 있었습니다. 

근데 이때부터 캐나다 문화를 좋아하게 된 것 같아요. 돈과 학벌과 사회적 지위로 한 인간의 모든 걸 판단하지 않는 사회적 분위기도 점차 맘에 들었던 것 같고요. 그러면서 제가 정말 좋아했지만 한 번의 실패에 상처받아서 그냥 포기해버렸던 게임제작에 대한 꿈이 얼마나 소중한지 점점 깨닫게 되었죠. 그래서 마음을 먹었습니다. 사법고시 한 번만 더 시도하고 안되면 다 때려치고 캐나다 들어와서 새출발 해보겠다고... 전 이 당시만해도 아버지가 절 집에서 내쫓을 거라고 생각을 했기에 접시닦이를 하던 뭘하던 어떻게든 입에 풀칠하고 살아가면서 결국엔 게임개발자가 될 거라고 다짐을 했답니다.

그리고 2002년, 하늘의 뜻대로 사법고시 실패... 그리고 전 캐나다로 영구이민합니다. 2002년 3월이었습니다.

영어 공포증, 하지만 번역가 인생
부모님께 더이상 사법고시 공부안하겠다고 말씀드렸을 때, 전 집에서 쫓겨날 각오를 하고 있었습니다. 하지만 다행히도 그러진 않으시더군요. 그래도 더 이상 부모님께 손벌리는 것이 죄송스러워서 돈 벌 궁리를 했습니다. 접시닦이라도 하려고 했는데 생각해보니 번역 일을 해볼 순 있겠더군요.

솔직히 저 영어라면 담쌓고 살았었습니다. 대학교 신입생때도 영어로 발표준비해오라는 영어강사님에게 싫다고 대들었다가 쫓겨날 정도였고요. 심지어는 캐나다 정부에서 제공하는 기초 영어학교에 들어가는 것조차 실력부족으로 거절당할 정도였었죠. (사실, 처음에 지원하러 갔을 때 제 실력 테스트 하려고 면접관이 질문을 하는데 질문이 '내일 뭐할꺼냐? What will you do tomorrow?'였죠. 듣긴 들었는데 쫄아서 한 마디도 안나오더군요. 그래서 거부당했습니다 -_-;  저 이 정도로 영어 공포증을 가지고 있던 인간입니다...(한숨...) 그런데도 이런 제가 번역을 할 생각은 한 이유는 다음과 같습니다.
  • 영어는 개뿔이지만 한글 글쓰기엔 자신이 있었습니다.(단편소설따위 썼으니까요.)
  • 영어 개뿔문제는 그냥 영한사전으로 해결할 수 있다고 생각했습니다. (수시간이 걸려도 사전 뒤질 각오되어있었습니다. 이내력과의 싸움.)
  • 캐나다 이민자라면 출판사에서 별 생각없이 확인조차 번역일을 줄 수도 있다고 생각했습니다.
제가 번역을 하겠다고 할 때, 저희 형을 비롯해서 많은 분들이 비웃었습니다. 말도 안되는 짓 하지 말라고... 전 그래도 가능할거란 생각이 들더군요. (제가 원래 입장바꿔 놓고 생각하는 거 잘합니다. 제가 출판사 사장이라도 '나 캐나다 이민자요'라고 하는 오는 인간 넙죽 받아줄거 같더라구요.) 그래서 무조건 출판사에 이메일을 보냈습니다. 그리고 두드리면 열린다고... 번역일을 받았고 그때부터 주로 컴퓨터 서적 및 게임개발 서적들을 번역하기 시작했습니다. 제가 번역한 책보고 게임개발 공부하신 분들 은근히 꽤 계실 겁니다. Programming RPG Games with DirectX... 많이들 보셨죠? 그 외에도 게임아카데미하고도 일했고, 코리아 헤럴드 통번역 센터를 통해서 정말 많은 번역일을 했습니다. 가마수트라 기사들도 번역 좀 했죠. 그 와중에 갈렉산드리아도 열었고요.

사실 번역일을 하려고 했던 또 다른 이유 중의 하나는 게임개발 서적을 번역하면서 96년이후부터 손놓아버려 이미 시대에 뒤떨어져버린 제 게임프로그래밍 실력을 다시 늘려볼 심산이었습니다. 그리고 시간 나는대로 저 스스로 게임프로그래밍 공부를 한 뒤에 캐나다 게임회사에 지원할 생각이었죠. 그래서 저희 형이 BCIT라는 컴퓨터 쪽으로는 나름대로 평가가 좋은 대학을 가라고 했을때도 '학교에서 배우는 건 하나도 없어. 나 혼자 할꺼야'라고 한마디로 거절하기도 했습니다.

근데 시간이 갈수록 정작 제가 게임프로그래머가 되기 위한 공부를 하는 대신에 번역일로 돈 버는 것에만 몰두하는 모습이 보이더군요. 그래서 저에게 보다 중요한 것들에 집중하기 위해 저에게 덜 중요한 것들을 포기하기 시작했습니다. 단편소설 및 시를 쓰는 것도 이 때 어느정도 포기했고(그 때 썼던 글들을 다른 웹사이트에 올리고 있습니다), 음악도 이 때 포기했죠. 그리고 번역, 게임 프로그래밍 공부, 그리고 영어(이미 정부에서 지원해주는 학교를 다니고 있었어요)에만 집중하려고 했죠. 근데 이것 저것 포기했는데도 정작 게임프로그래밍 공부는 뒷전이더군요. 그래서 결국 BCIT를 가기로 결정했습니다. BCIT에서 뭔가 배울 게 있어서 가기로 한게 아니라 1) 학교를 다니면 스케줄 따라 무언가를 해야하니까 어찌되었든 프로그래밍 공부를 할거고, 2) 당장 제 실력을 증명할 방법이 없으니까 대학을 수석으로 졸업해서 '나 이만큼 실력있소.'라는 걸 보여주면 취업이 조금은 더 쉽겠다는 생각이 들어서였습니다.

다행히 2년치 학비는 번역으로 어느정도 벌어놨었습니다.

BCIT 생활
BCIT의 CST란 프로그램에 입학했습니다. 2003년 9월이었습니다. 2년짜리 과정인데 여길 들어간 이유는 일단 여기가 제대로 빡세게 가르치기로 악명(?)이 높았고, 4년짜리 대학에 들어가기엔 더이상 낭비할 인생이 없다고 생각해서였습니다.

위에서도 말씀드렸듯이 여기 들어갈 때 목표는 수석졸업이었습니다. 어차피 남들보다 영어도 못하고 캐나다 출신도 아니니 내가 취업할 수 있는 방법은 내가 남들보다 뛰어나단 걸 보여주는 게 유일하다고 생각해서였습니다. 하지만 그러면서도 언제나 저 자신에 대한 의문이 생기더군요. 그 이유는:
  • 과연 내가 그 수년간의 공백기간 이후에도 컴퓨터를 잘할 수 있을까?
  • 과연 내가 영어 강의를 이해할 수 있을까?
  • 과연 내가 수석을 할 정도의 실력이 될까?
였습니다.

영어강의... 생각보다 어렵더군요. BCIT 들어오기전에 영어과정에서 영어쓰기와 읽기는 엄청나게 공부해서 A-로 졸업하긴 했지만(역시 빡세게 했습니다 -_-) 역시 듣기/말하기는 참 힘들었습니다. 심지어는 학교친구들하고도 의사소통이 잘 안되었으니까요. 한 몇주간 영어때문에 스트레스 한참 받다가 거의 포기했습니다. 영어 잘하는걸...

그래도 다행이었던 건 제 프로그래밍 실력이 보통사람 이상이었단 겁니다. 그리고 성격적으로 캐나다인들하고 잘 맞다보니, 캐나다 친구들이 절 잘 받아주었고, 결국 캐나다인 3명과 같이 팀을 이뤄 학교 프로젝트 및 과제를 하게 되었습니다. (남에게 도움을 줄 수 있는 인간이 되면 그만큼 돌아오는게 있습니다.). 그리고 팀원들과 거의 밤과 낮을 동고동락할 정도로 학교과제가 빡세었던지라 그렇게 어울리면서 저절로 영어를 익히게 되었습니다. '영어는 포기하면 잘하게 된다.'란 말 들은 적 있었는데 정말 그렇더군요.

정말 주말도 없을 정도로 열심히 공부했습니다. 학교 다닐동안에 어디 놀러가거 쉰 기억 거의 없습니다. (한 학기 끝날 때마다 학교 Pub에 가서 술마시고 노는 정도) 그 결과 제가 전공했던 Digital Processing에서 수석으로 졸업했습니다. 2005년 5월이었습니다.

사기꾼 게임회사 취업, 잠시 방황, 그리고 Dream Came True. Really.
졸업후에 한 3개월간 취업 못하다가 Relic도 떨어지고 KoolHaus라는 악덕회사에 취업을 합니다. 게임개발자가 되려고 하는 졸업생들을 착취해 먹는 회사였죠. 보다보다 못해 5개월만에 때려치고, 다른 게임회사에 당장 취직도 안되서, 데이터베이스 프로그래머로 한 3~4개월 일했습니다. 이 때 다닌 회사 꽤 안정적이고 복지도 좋아서 어머님이 좋아하시긴 했는데, 업무가 너무 지루하고 게임을 너무 만들고 싶었기에 어머니 몰래 게임회사에 원서넣고 면접보고 취업을 했습니다. 이 때부터가 제 꿈을 다시 이룬 때죠. 2006년 6월일 겁니다.

이 회사 이름이 Blue Castle Games입니다. EA에서 야구게임 만들던 사람들이 나와서 만든 회사고 전 여기서 Xbox 360, PS3, Wii, PS2, PSP용으로 야구게임 3개(플랫폼 별로 따지면 10개)를 출시했습니다. 사실 이 회사 다니면서 전 다른 일돌다 많이 했습니다. 거의 5가지 일을 동시에 했던듯 한데요(five jobs족?). 1) BCG에서 그래픽 프로그래머로 일했고. 2) AI 대학에서 HLSL 강사를 했고, 3) BCIT에서 Computer Graphics 전공으로 학사과정을 마무리지었고, 4) BCIT에서 CST학생들 채점을 했고 5) 번역도 했습니다. 거의 미친 짓이었죠. -_-;;;

이렇게 여러가지 일을 몰아서 한 이유는 제가 과거에 방황하느라 낭비한 삶을 좀 만회해보고 싶었기 때문입니다. 정말 바쁘게 살았죠. -_-;;; 남들 full-time으로 2년동안 마치는(CST 2년에 2년 추가해서 학사 받습니다) 학사과정을 전 part-time으로 2년에 마쳤으니까요. 이 때 스케줄이 어땠냐하면요....
  • 월요일: 회사 업무. 회사업무 후 BCIT 수업들음
  • 화요일: 회사 업무. 회사업무 후 AI에 가서 강의
  • 수요일: 회사 업무. 회사업무 후 BCIT 과제 
  • 목요일: 회사 업무. 회사업무 후 BCIT 수업들음
  • 목요일: 회사 업무. 회사업무 후 BCIT 과제
  • 금요일: 회사 업무. 회사업무 후 BCIT 과제
  • 토요일: BCIT 수업들음. BCIT 채점. 번역
  • 일요일: BCIT 채점. AI 수업준비. 번역
정말 미쳤었죠 -_-;

그리고 AI에서도 학생들이 언제나 최고강사로 칭해줬고, 아직까지도 학생들을 길거리에서 우연히 만나면 저에게 정말 고맙다고 술사주고 그럴 정도입니다. 뭐든 열심히 했죠. 고시생 시절하고 비교하면 정말... 그때가 부끄러울 정도죠. 

(이제 제가 왜 싱글인지 아시겠죠? ^^)

그리고 현재
그리고 2008년 5월에 전 Relic으로 옮겼고.. 아직까지 여기서 일하고 있습니다. 그리고 2009년 12월을 끝으로 좀더 게임 프로그래밍에 전념할려고 AI의 강사직을 사임하고, BCIT에서 채점하는 것도 관뒀습니다. 번역도 관둔지 꽤 되었죠.

그럼 다시한번 제 현재상태가 어떤지 볼까요?
  • 현재 Relic Entertainment의 스페이스마린 팀에서 렌더링 프로그래머로 재직중입니다.
  • 북미 경력 6년, 한국경력 포함 대략 10년입니다.
  • 내년쯤에 Senior Graphics Programmer 타이틀을 달 가능성이 높습니다.
  • 한달에 한 번씩은 세계 유수의 게임개발회사로부터 러브콜을 받습니다. (오늘도 Ubisoft에서 전화왔었습니다.)
(그냥 복사해서 붙였습니다 -_-)

지난 15년간을 돌아보면... 
  • 한 5~6년 쓸데없이 방황했습니다. 괜히 남 탓, 세상탓을 했었습니다. 사실 제가 실패가 두려워서 그랬을 뿐인데요. 그래도 그 때의 경험이 많이 도움이 됩니다. 그 뒤로 다시는 그렇게 인생 낭비하지 않으려고 매일매일 최선을 다했습니다.
  • 게임프로그래머가 다시 되려고 마음먹고 노력할 때는 정말 제가 즐겼지만 제 꿈보다는 덜 중요했던 것들(음악, 글쓰기 등) 다 포기하고 이짓만 했습니다. 주어진 시간은 한정되어 있습니다. 세상의 모든 것을 다 즐기면서 자신을 꿈을 이루는 것은 불가능합니다. 그건 자기합리화일 뿐입니다.
  • 제가 할 수 있는 것 다 이루고도(수석졸업) 게임 프로그래머로 취직하는 거 쉽지 않았습니다.
  • 주변에서 '넌 안돼'라고 말하는 사람 꽤 많았습니다. 그래도 '난 돼'라는 거 보여주기 위해 더 노력했습니다. 그리고 그러기 위해 나 자신에게 솔직하고, 내가 정말 원하는 것을 찾기위해 노력했습니다.
  • 운이란 건 확실히 없었습니다. 기회가 왔을 때 준비가 되어있기 위해서 빡세게 노력하는 것만이 성공하는 유일한 방법입니다.
  • 그리고 지금은 확실히 행복합니다.



p.s. 매우 주관적/감정적인 글이 되어버렸습니다. 죄송합니다. -_-;;;
p.s.2. 글 즐겁게 보셨고 다른 사람들에게도 도움이 되겠다 싶으시면 View On(Daum)이나 좀 눌러주세요. ^^


2010년 7월 28일 수요일

게임개발자 북미취업 가이드 3편: 취업을 위한 필수/선택요건 - 면접절차

    안녕하세요.  포프입니다. 이제서야 좀 본격적인 내용으로 들어가게 되서 다행이고 그동안 기다려 주셔서 고맙습니다. ^^ 이번 편을 읽으실 때 아래의 교훈(?)을 반드시 기억하시기 바랍니다. 이것이 이 편의 중심 주제입니다.

    성공하는 유일한 방법은 중요한 소수의 것에 한정된 자원(시간, 돈, 노력 등)을 집중적으로 쏟아붇는 것입니다.

    누구 말을 인용한 것이 아니라 제 스스로의 생각을 담은 것입니다. 북미에 게임개발자로서 취업을 하기위해 갖춰야 할 요건들이 꽤 됩니다. 하지만 그 많은 요건들이 모두 다 동일하게 중요하진 않습니다. 따라서 정말 중요한 것에 집중하는 대신, 모든 요건 전부를 대충 수박 겉핥듯이 갖추려고 하면 절대 성공하지 못합니다. 언제나 중요한 요건을 갖추기 위해 최대한의 노력/시간/돈/인생을 투자하시고 나머지 것은 대충 중간정도만 맞추시길 바랍니다.

    그렇다면 북미에서 취업을 할 수 있을 정도의 훌륭한 개발자가 되려면 어떤 요건들을 갖춰야 할까요? 우선 북미의 면접(interview) 절차에 대해 알아보도록 하죠. 각 면접 단계에서 어떤 요건/자질 등이 중요한지를 알면 전체적으로 어떤 요건들을 준비해야하는지가 보이거든요. ^^

    (일반적인)북미 게임개발자 면접절차
    위에서도 말씀드렸듯이 면접절차를 알면 뭘 준비해야할지가 보입니다. 일반적이라고 써드린 이유는 회사따라 기술면접 및 대인면접의 횟수나 시간이 조금씩 다르기 때문인데 뭐 그래도 아주 큰 차이는 없습니다. 그럼, 더이상 딱히 뭔가 멋지게 소개를 드릴 방법이 없으니 곧바로 본론으로 들어가죠. -_-;;;;

    1. 구인공고를 읽은 뒤 지원
    간단합니다. 일단 구인공고를 찾습니다. 구인공고가 한군데에 전부 나오는 곳은 가마수트라 구인공고란 외에는 딱히 아는 바가 없고 여기에 올라오지 않는 구인공고도 많습니다. 보통은 각 회사의 웹사이트에 직접 가시면 구인공고가 거기에 올라있습니다. (참고로 대규모 공채따윈 없습니다. 실력따라 뽑는 시스템에선 대규모 공채가 존재하기 어렵습니다.) 따라서 각 회사의 웹사이트를 방문하시고 거기서 일자리를 찾아서 지원하시면 됩니다. 북미 게임회사의 목록은 "2편: 북미 게임개발 근무환경/취업시장"에서 이미 소개드렸습니다. 지원은 보통 이메일이나 웹폼으로 합니다.

    이 단계에서 요구되는 자질은 '끈기'와 '노력'밖에 없습니다.

    2. 인사부(HR)의 추리기(Screening) 절차
    대규모 공채가 아니라 특정한 위치 하나에 지원을 하는거라 그만큼 경쟁률도 언제나 높습니다. 따라서 제일 첫번째 절차는 인사부 직원이 지원자들의 이력서를 읽으면서 그 중 면접을 할 사람을 골라내는 것입니다. 참고로 인사부 직원은 게임개발에 대해서는 쥐뿔도 모르는 사람들이므로(-_-) 그 사람들이 봤을때 '오! 이 지원자는 실력이 있어보이는데?'라는 느낌이 들 정도의 이력서를 내야 합니다. (참고로 여기의 이력서는 한국처럼 정형화된 서식이 아닙니다. 자세한건 '4편: 실전 가이드'에서 다룹니다.)

    따라서 이 절차를 통과하려면 옆집 아주머니 같은 분들에게 실력을 뽑낼만한 무언가가 필요합니다. 즉 '실력을 보여줄 방법'이 필요합니다. 경력자시라면 '경력' 및 '출시한 게임목록'이 당연히 도움이 되겠고, 딱히 경력이 없다면 '개인 프로젝트로 만든 게임'도 도움이 됩니다. 또한 '컴퓨터학과를 나왔다는 증명'도 도움이 될 수도 있습니다. (될 수도 있다고 한건 워낙 아시아권의 대학교육이 개판인게 많이 뽀록이 난 판이라... 별로 신뢰를 안두는 회사들이 꽤 생겼습니다.)

    만약에 실력을 증명할 방법이 아무것도 없다면... 여기서 걸려나가실 겁니다. 최소한 개인 프로젝트라도 하셔서 포트폴리오라도 구축하세요. (이에 대한 자세한 사항은 다시한번 '4편: 실전 가이드'에서 다룹니다.)

    3. 인사부 직원과의 전화면접
    인사부직원과의 추리기 절차를 통과하셨다면 가장 큰 골칫거리를 통과하신 겁니다. 사실 인사부 직원들은 게임개발에 대해 아는 게 별로 없으므로 이 사람들 통과하는게 가장 난해합니다.  힘든게 아니라 난해하죠. -_-;;; 본인이 가진 실력을 직접 보여줄 방법이 없으니까요. 어쨌든 추리기 절차를 통과하셨다면 아마 요 밑의 단계들을 거의 전부다 거치는 경우가 더 많을 겁니다. (중간에 엄청 개판치시지 않는한 말이죠..-_-;;;)

    인사부 직원이 이메일을 보내서 언제언제 전화면접을 하자고 약속을 잡고, 그 시간되면 지네들이 전화합니다.(국제전화비 걱정마시길 -_-;;) 시간은 15분에서 30분 정도 걸립겁니다. 인사부 직원들이 전화면접에서 보는건 두가지입니다.

    a) 이력서를 다 진실되게 썼는가? - 이력서에 열거한 내용들을 하나씩 물어보며 그 때 한 일(혹은 공부한 것)에 대해 좀 더 자세히 물어봅니다. 그냥 솔직하게 말씀하시면 됩니다. (여기선 거짓말 했다가 들키면 매장이라고 생각하셔도 됩니다. -_-)

    b) 인성이 어떤가? - 몇가지 질문을 통해 지원자의 인성이 어떤지 대충 알아보려 합니다. 완전히 지 혼자 잘나고 매우 거만한 사람들만 아니면 무사할 겁니다. 이 때 보통 묻는 질문들은 "전에 있던 프로젝트에서 어떤 문제가 있었냐? 그럴 땐 어떻게 해결했냐? 다음엔 어떻게 해결할 거냐?", "본인의 장점이 무엇이라 생각하나?", "본인의 단점이 무엇인라 생각하나?" 등입니다. 역시 별로 크게 문제될 질문 내용은 아닐듯 합니다.

    따라서 이 과정에서 정말 중요한 자질은 '인성'외에는 없습니다. 저는 인성도 실력(skills)중에 하나라고 생각합니다. 게임개발자가 되려면 프로그래머라면 기술적인 실력(technical skills), 기획자라면 창의적인 실력(creative skills), 그리고 아티스트라면 예술적인 실력(artistic skills)이 있어야 하지만 이 외에도 모든 개발자들은 대인관계 실력(people skills)가 필요합니다.  따라서 '인성'도 '실력'으로 보겠습니다.

    4. 개발자들과의 전화면접
    인사부와의 전화면접이 큰 무리 없이 끝났다면 또 다른 날에 전화면접 예약을 잡고, 그 날에 그 회사에 근무하는 개발자 2명 정도가 전화를 줄 것입니다. 이 면접에서도 역시 이력서에 쓴 내용을 중심으로 이전 경력(또는 학교공부)에 대해 짧게 논한 뒤에,  주로 기술적인 내용들을 많이 물어보지만 전화상으로 면접을 보는지라 아주 구체적인 내용을 묻기보다는 전반적인 이해도를 묻습니다. 일반적으로 묻는 질문들은 "추상 함수가 무엇인가?", "행렬의 용도는 무엇인가?", "쿼터니언을 왜 쓰는가?" 등의 질문입니다. 이 면접은 보통 1시간 정도 될 겁니다.

    이 단계에서 중요한 것은 무엇일까요? 당연 '실력'이죠. 다른 것 없습니다.

    5. 개발자들과의 대인면접
    개발자와의 전화면접까지 통과하셨다면 이제 대인면접을 봅니다. 비행기값 100~200만원 별거 아니니까 그냥 내시고 날라오시면 됩니다. -_-;;;;..........는 농담이고 ^^.... 해외에 있는 개발자들을 구인할려고 맘 먹은 회사정도 되면 비행기값/숙박비 정도는 다 제공합니다. 그리고 회사 입장에서도 이 정도 돈을 내고 사람불러다 면접 볼 정도면 이미 채용할 생각을 많이 하고 있단거죠. 따라서 그냥 떨지 마시고 담담하게 면접 보시면 됩니다.

    보통 하루에 개발자들 2명씩 2번이나 3번(총 4명~6명) 면접을 볼 텐데요. 각 면접은 1시간 정도 됩니다(총 2~3시간). 당연히 처음에 다시 이력서에 쓴 내용들에 대해 좀 더 자세히 짧게 물어보고, 곧바로 화이트보드 테스트(칠판 테스트요 -_-)를 합니다. 즉 면접관들이 "이런~ 이런~ 코딩을 해봐라." 라고 하면 화이트보드에 마커로 코딩을 합니다. 따라서 좀 어설픈 프로그래머들은 이거 통과하기 어렵습니다. ^^ 주로 물어보는 주제는 다음과 같죠.

    • C관련
      • 포인터
      • 비트 연산자
    • C++관련
      • virtual 키워드의 의미
      • 다형성(polymorphism)
      • 상속
      • 추상 클래스(abstract class)
      • static 키워드의 의미
      • const 키워드의 의미
      • 포인터와  reference의 차이
      • malloc/free와 new/delete의 차이
    • 일반
      • 2진수 다루기
      • 일반적인 논리력
    • 기타 해당직에 관련된 질문들

    한마디로 C/C++ 프로그래머라면 반드시 기초로 집고 넘어가야한다고 무수히 강조하는 내용들입니다. 기초가 안되면 좀 프로그래머 하시기 어렵습니다. ^^

    아, 참고로 모르시는 질문이 나오더라도 당황하지 마세요. 이 면접관들이 보는 것은 문제를 푸는 과정입니다. 따라서 면접관들에게 힌트를 좀 달라고 해도 되고, 확실하지 않은게 있다면 면접관들에게 물어보면서 문제를 풀면 됩니다. 그리고 문제를 푼 뒤에도 면접관들과 대화를 하면서 좀더 최적화된 방법을 찾거나 하게 됩니다.

    실제 질문 예들은 이 글의 마지막에 실고 보시는 분들 풀어보라고 시키겠습니다 -_-+;

    6. (추천인 체크)와 채용
    대인면접도 무사히 끝났다면 추천인(reference)들 목록을 달라 하기도 할 수도 있고 안할수도 있습니다. 매우 형식적인 절차라고 보셔도 되는데요. 그냥 현재나 과거직장동료, 친한 친구, 선생님 등등을 한 3명정도 보내면 됩니다. 그냥 '이 인간 믿을만한 인간이요?', '당신이 나라면 이 인간 채용하겠소?'라는 정도 질문입니다. 따라서 철천지 원수나, 예전에 칼부림 내고 헤어진 애인 등은 절대 추천인으로 쓰지 마시길 -_-;

    뭐 추천인 체크도 끝났다면(아니면 아예 체크조차 안했다면 곧바로) 채용계약서가 이메일로 날라올겁니다. 연봉 얼마에 언제부터 시작하고 등등, 여기에 적힌 모든 내용은 협상이 가능합니다. 시작날짜는 매우 유동적일거고, 연봉은 그보단 덜하겠지만 협상하면 더 받으실 수도 있습니다. 뭐 협상 안하셔도 한국에서 받는것보단 훨씬 많을 테지만 그래도 시작 연봉에 따라 나중에 연봉인상도 좌우되니 적당히 협상하세요. ^^

    7. 그 외 잡다한 것들
    이제는 오셔서 일하시기 위해 한국정리좀 하시고, 회사에서는 주는 서류 받아다 취업비자 신청하고 기타 등등 입니다. 뭐든간에 궁금한게 있으시면 회사나 미영사관/캐나다 영사관 등에 물어보면 다 하실 수 있을 겁니다. 저는 대학졸업한 뒤에야 먼저 와있던 가족따라 이민온 뒤에 취업한 뒤라 이 부분에 대해서는 잘 모릅니다. 그냥 그렇게 취업비자 받아서 온 한국, 영국, 콜럼비아 분들 몇 분 알 뿐입니다.

    비자 문제는 면접 통과하는 거에 비하면 그다지 어려운 일이 아닙니다.

    취업을 위해 갖춰야할 필수요건 / 선택요건
    위에서 면접절차를 설명드리면서 갖춰야할 이런 저런 자질들을 말씀드렸습니다. 그럼 이 자질들을 중요한 순서대로 나열해보겠습니다. 목록의 위에 있을수록 필수요건이고 아래쪽에 있을수록 선택요건입니다. 처음에도 말씀드렸듯이 중요한 요건(즉 위에 있는 것들)에 집중적으로 자원을 투자하셔야 합니다!!

    1. 실력
    실력이 없으면 운좋게 인사부 면접 통과해도 채용까지 가지 못합니다. 쓸데없이 인사부랑 면접보느라 시간만 낭비하실 겁니다. 따라서 실력이 우선입니다. 며칠전에 실력이 어느정도나 되야 하냐고 물어오신 분이 계셨습니다. 제가 위에서 열거한 대인면접 질문주제들을 빠삭하게 아실 정도면 아무 문제 없습니다. 그리고 아래에 제가 나열할 프로그래밍 질문들을 (어디서 배껴오지 않으시고) 풀 실력정도 되시면 역시 걱정 없습니다. ^^

    위에서도 잠시 말씀드렸듯이 경력이 없으신 분들은 인사부직원을 설득시킬 수 있을 방도를 준비해두시기 바랍니다. 개인 프로젝트를 통한 포트폴리오 구축이 와따입니다.

    이 외에도 대인관계 실력(people skill)이 있습니다. 일반 개발자로서는 중요한건 다른 개발자분들 존중하고 그 분들과 팀을 구축해서 일하기에 모나지 않은 사람입니다.즉 팀플레이어죠. 근데 누구나 개나소나 팀플레이어라고 우깁니다. 진정한 팀플레이어는 남을 존중해야만 가능합니다. 다른 사람들이 하는 일에 마찰을 일으키지 않기 위해서 뒤찜지고 있는 사람은 팀플레이어가 아니고, 다른 사람 하자는대로 아무 말없이 좇아가는 사람도 팀플레이어 아닙니다. '너는 나이가 어리니까', '넌 아는게 없으니까'라면서 무시하고 자기맘대로 하는 인간도 팀플레이어는 아닙니다. 팀플레이어는 건설적은 토론을 통해 게임개발과정을 수월하게 만드는 사람입니다. 언제나 너무 추상적인 개념이라 개나소나 팀플레이어라고 우기긴 하지만요. -_-

    2. 경력
    경력만큼 인사부에게 실력을 증명하기 간편한 수단이 없습니다. 다른 회사에서 근무할 정도면 그만큼 실력이 있을거라고 믿어주는 거죠. (결과적으로 문제는 인사부 직원들이 훌륭한 인재를 알아볼 실력이 없으니 대충 다른 회사의 인사부 직원들을 믿어보자는 속셈이죠 -_- 뭐 그래도 이 사람들을 통과해야 취업도 되니 저희가 굽히는 수밖에 ^^;;) 따라서 경력이 있으시면 훨씬 편할 겁니다. 제가 여러분들에게 권해드리는 방법도 한국에서 최소한 1~2년정도 경력을 쌓으시라는 거죠. 그리고 한국 게임회사에 취직이 안될정도의 실력이시라면 여기서는 더 어려울 거라고 생각합니다.

    또한 경력이 단순히 인사부를 속이기(?)에만 유용한게 아닙니다. 하지만 단지 게임을 오래 만들었다고 존경을 받아야 한다는 말은 아닙니다. (그런 거라면 저 게임계 당장 떠납니다.) 경력을 통해 쌓은 지혜(wisdom)는 정말 귀중합니다. 예를 들어 PS2 개발을 하셨던 분들이라면 PS3에서 하지 말아야 할 일 등 따위를 대략 느낌만으로도 아십니다. 따라서 쓸데없는데 시간 낭비하면서 소중한 개발비 날릴 가능성을 줄인다는거죠. 매우 값진 신내림이죠 -_-. 저만해도 Character Customization만 이미 3번 만들었는데, 실시간으로 DXT 텍스처를 생성하려면 어떤 짓을 하면 안되는지.. 아니면 어떤짓을 해야 하는지 등을 빠삭히 알고있죠. 그것도 PC, 엑박360, PS3등에서요. ^^

    3. 학력
    이거 학벌로 읽지 마시길 바랍니다. 사실 그놈의 학벌주의 때문에 한국대학교육 완전히 파탄났고, 그 때문에 졸업생들 자기들 전공에 전문가가 되기보다는 토익/토플에 전문가가 되는 상황이다보니... 아시아쪽 대학이름을 별로 믿어주지 않는 분위기입니다. -_-;;; 물론 전공에 대해서도 그런 편이고요. 그래도 없는 것보단 있는게 인사부를 통과하기가 조금은 편합니다. 학교이름보다는 전공이 중요합니다. 그리고 경력이 없으시다면 반드시 포트폴리오 준비하세요.

    4. 영어
    영어... 뒤에서 두번째에 나열했습니다. 놀라셨나요? 제가 1편, 2편 쓰고 가장 많이 들은 반응은 '전 영어를 못해서 힘들겠죠?'였습니다. 제발 좀... 깨어납시다. 한국분들 사실 영어 참 잘하십니다. 근데 영어 문법 하나만 틀려도 주변에서 '넌 영어를 왜그리 못하니?' 등등의 태클이 들어옵니다. 따라서 괜히 영어못하면 바보라는 자괴감만 들고 따라서 영어 잘못할까봐 피하게만 되고 무서워하고... 그래서 결국에 모든 일이 안되면 영어탓입니다.

    세상에 게임프로그래밍 하는데 영어쓸일이 얼마나 있습니까? 하루 8시간 일하면서 30분 영어쓰면 많이 쓰는 걸꺼 같은데요? 그 30분 영어하는거 아주 유창하게 못한다고 초천재 프로그래머 채용 안하겠습니까? 영어 몸짓발짓으로 그림그리면서 의사소통만 할 정도면 취직은 됩니다. 취직되면 살면서 자연히 늡니다. 저 고등학교때 수학성적은 올렸어도 영어성적은 올리는데 2년간 실패한 인간입니다. 대학때는 영어수업시간에서 선생이 발표준비하라는거 싫다고 했다가 대판 싸운 뒤 한번도 영어수업 안들어간 놈이구요. 고시준비하면서도 영어가 너무 싫어서 독어 했던 놈입니다. -_-;;; (그 뒤에 영어를 어떻게 했는지는 '5편: 실제 취업사례 - 포프'에서 말씀드리지요.) 영어는 닥치면 합니다.

    좀 더 현실적으로 말씀드리겠습니다. 이왕이면 다홍치마란 말이 있습니다. 만약 2명이 같은 자리에 지원을 했는데 2명의 실력/경력/학력(즉 위에서 1,2,3번)이 똑같으면 당연히 영어실력이 좋은 인간이 취업을 합니다. 이건 인종차별이 아닙니다. 본인이 한 회사의 사장이시더라도 똑같지 않으시겠어요? 따라서 언어의 벽을 넘어서 취업을 하시려면 영어는 몸짓발짓을 섞어가면서라도 의사소통이 될 정도로만 하시고 실력을 다른 지원자보다 높이기 위해 노력하셔야 합니다. 만약 2명이 지원을 했는데 한명은 실력/경력/학력이 훨 출중한데 영어가 딸리고 다른 한명은 실력/경력/학력이 딸리는데 영어가 출중하면 당연 실력/경력/학력이 출중하신 분이 취업합니다. 이건 정말 상식아닌가요?

    '나는 한국인이라 취업이 안돼.', '나는 본토인만큼 영어가 안되서 취업이 안돼.'라고 자위를 하면서 동정심이나 사고자 하시는 분들 많이 봤습니다. (특히 한인 이민자사회에 쌔고 쌨습니다.) 그리고 어쩌다 누가 한 명 백인회사(이렇게 표현하시더라구요?)에 취업하면 무슨 영웅보듯이 합니다. 아니, 베트남, 영국, 일본, 중국, 러시아, 폴란드, 콜럼비아 등  세계 모든 나라 사람들이 여기와서 취직하는데 왜 한국인은 안된다는게 말이나 됩니까? 저런 말들하시는 분들은 말그대로 자기가 못난거 인정할 자신조차 없고, 자기 발전시킬 노력도 하기 싫어하시는 게으르신 분들이니 제발 저런 분들이 하시는 말씀 무시하시기 바랍니다. 부탁드립니다.

    영어에 공포심을 느끼시는 분들이 너무 많고, 그것때문에 발목 잡히시는분들도 많으신거 같아서 별로 중요하지도 않은 영어에 대한 내용만 길어지고 있습니다. 하지만 이 내용을 더 길게 하기 위해(-_-;;;)제가 아는 다른 두 분의 이야기를 들려드리겠습니다.

    a) 캐나다에 놀러왔던 제 대학 후배: 여행을 매우 좋아하는 제 대학후배가 있습니다. 하지만 영어권보다는 이상한 개발도상국들을 많이 놀러다니는 친구입니다. 따라서 어느 한 언어를 딱히 공부하거나 연습할 기회가 없던 친구인데 제가 여기 온지 1년정도 되었을 때 놀러왔었습니다. 그 당시 저 스스로도 영어때문에 매우 주눅이 들어있었을 땐데 이친구... 사실 저를 매우 놀래켰죠. 이 친구 영어 정말 못하더군요. -_- 아주 심각할 정도로.... -_-;;;어디가서 물건 사는 것조차 힘든 친구였습니다. 근데 웃긴건 어딜 가든 길도 잘 물어서 척척 가고. 물건 찾는것도 물어봐서 척척 삽니다. 저보다 100배는 낳았습니다. 어떻게 하냐구요? 한영 전자사전을 들고다니면서 자기가 원하는 단어를 치고 그걸 발음합니다. 상대방이 못알아들으면 아예 보여줍니다. 이 친구 어느나라 가도 그렇게 살아남고 절대 부끄러워하지도 않습니다. "당연히 내 나라 언어가 아닌데 못하는게 당연한게 아냐?", "내가 돈주고 물건사겠다는데 내가 왕이지." (이걸 개발자에게 맞춰 바꾸면..."내가 지네 게임 만들어 주겠다는데 내가 왕이지."입니다.)  이런 자세 갖추시길 바랍니다. 가끔은 얼굴에 철판까셔도 됩니다. ^^

    b) EA에 취직하신 한국에서 오신분: 한국에서 고등학교 졸업하시자마자 경력 6년쯤 쌓으시고 EA 스포츠(캐나다에 있음)에 취직하신 분을 뵌적이 있습니다. 이 분도 영어 잘 못하셨습니다. 머물던 호텔에서도 영어 잘못이해해서 맨날 룸서비스시켜 드셔서 돈도 많이 내시고, 어디가서 뭐하실 때도 영어때문에 좀 시행착오를 거치시는거 많이 봤습니다. (심지어는 호텔에서 나갈 때도 영어를 이해를 못하셔서 여러번 물어보면 시간 꽤 끌었다는...^^) 그래도 몇년 째 일 잘하고 계십니다. 그리고 한동안 못뵈었지만 지금은 영어도 잘하시리라 생각합니다. (동료들 하고 어울리면서 늘어요.) 

    위의 이야기들이 힘이 되길 바래 봅니다. ^^ 영어는 그냥 쓰고 사셔야 늡니다.(한마디로 '영어공부 절대로 하지마라'라는 책에서 정찬용씨가 소개한 공부법이랄까요..) 그전엔 대충 못하셔도 상관없습니다. 영어에 쪽팔려하지 않고 대충이나마 연습하시고 싶으신분들은 저에게 영어로 트윗을 주시거나 답글을 영어로 남기셔도 됩니다. 저도 곧바로 영어로 답글합니다. -_-

    5. 인종
    뭐라 할말이 없습니다. -_-;;; 이걸 거론해야 하는 것 조차 참 어이없습니다. 하도 쓸데없이 '인종이 백인이 아니면 취업이 안된다.'라는 이야길 하면 자신의 허접함을 숨기시려는 분들이 많아서인데요 그런거 없습니다. 설사 있어도 한국의 인종차별에 비하면 아예 없다고 보셔도 됩니다. 무시합시다.


    마지막 몇마디
    이정도면 대충 이해하셨으리라 생각합니다. 실력 > 경력 > 학력 > 언어 > 인종 이라는 것을... 

    운이란 것은 없습니다. "운이 좋다"라는 말은 실력과 노력으로 뭔가를 이룬 멋진 사람들이 겸손한 척을 하기 위해 쓰는 말일 뿐입니다. 운이란 것은 없습니다. 단지 기회가 왔을 때 이미 준비가 되어있었던 사람들이 운을 만난 것처럼 보일 뿐입니다.


    그럼 프로그래머 면접문제 예제들을 드리면서 이 글을 마무리 짓겠습니다.

    프로그래머 면접문제들 예제
    당장 머리속에서 생각나는 면접문제들입니다. 친구분들하고 화이트보드 테스트를 흉내내며 서로 질문을 해봐도 재밌겠네요. ^^ 문제를 푸셔서 댓글로 답을 달아보시는 건 어떨까요? 제 맘대로 평가해드릴 수도 있습니다. ^^

    1. C의 atoi 함수를 구현해 볼 것
    2. C의 strlen 함수를 구현해 볼 것
    3. virtual void foo() = 0; 의 의미는 무엇인가 (클래스 선언 안에서)
    4. virtual 함수란 무엇인가
    5. polymorphism이란 무엇인가
    6. virtual 함수를 이용하는 간단한 클래스들을 구현해 볼 것
    7. bool isPowerOfTwo(unsigned int num) - num이 2의 승수인지를 판단하는 함수를 구현할 것
    8. void ReveseWordByWord(char* str) - str로 전달된 문장의 단어순서를 뒤집는 함수를 구현할 것. 예: "Dog is Cute"가 입력값이면 "Cute is Dog"이 반환값이어야 함
    9. void swap(unsigned char a, unsigned char b) - a와 b가 8bit 숫자일때 a와 b의 값을 바꾸는 함수를 구현할것. 단 새로운 변수를 사용하면 안됨.
    10. void foo() const; 에서 const의 의미는 무엇인가 (클래스 선언안에서)



    p.s.
    • 글 즐겁게 보셨고 다른 사람들에게도 도움이 되겠다 싶으시면 View On(Daum)이나 좀 눌러주세요. ^^
    • 3주동안 한번도 안거르고 썼어요.. 칭찬해주세요 ^_^
    • 질문은 답글로 남겨주세요.
    • 면접문제 다른거 생각나면 본글 에디트 한뒤 답글에 달겠습니다

    - 캐나다 버나비에서 Pope 올림.

    2010년 7월 24일 토요일

    이것 저것: 컴퓨터 게임 그래픽의 미래


    CryEngine 3Image via Wikipedia

    지난 몇주간 보고 들은 게임에 관련된 흥미로운 뉴스들:



    Enhanced by Zemanta

    2010년 7월 23일 금요일

    포토샵 블렌딩 수학공식

    게임업계에서 일하는 그래픽 프로그래머라면 아티스트들이 가끔 이런 요청을 해올 것입니다.

    "포토샵에서 오버레이 블렌딩 옵션이 있는데 이거 게임에서 쓸 수 있어요?"

    이럴 때 "꺼져 -_-!" 라고 한마디 하는 것보다... "네 그러지요 ^^" 라고 하면 아티스트들에게 좀더 사랑을 받을 수 있겠죠? 저도 최근에 포토샵 블렌딩 옵션중에 Overlay하고 Screen을 쉐이더에서 지원할 일이 있었답니다. 그 때 도움이 된 웹사이트 링크들을 아래 나열했습니다. (코드만 보셔도 됩니다 ^^)


    2010년 7월 14일 수요일

    게임개발자 북미취업 가이드 1편: 소개 및 저술방침


    드디어 전자책이 나왔습니다. 전자책 구매 방법은 연두미디어의 홈피를 참조해주세요.




    게임개발자 북미취업 가이드 시리즈 목차



    안녕하세요. 현재 캐나다 Relic Entertainment에서 그래픽스 프로그래머로 재직중인 포프입니다. 얼마전에 제 트위터 계정을 통해 북미취업에 관심이 있으신 게임개발자들이 얼마나 계신지 여쭤봤었는데 꽤 많은 분들이 답글을 남기셨더라구요. 여기에 힘을 얻어서 그동안 써볼까 말까 고민만 하던 '게임개발자 북미취업 가이드' 시리즈를 통해 제가 그동안 축적한 지식을 공유하겠습니다.

    짤막한 포프소개
    일단 '도대체 포프가 어떤 놈이길래 북미취업 운운이야?'라고 하시는 분이 계실거 같아 아주 짤막하게 제 소개를 하겠습니다. (저에 대한 보다 자세한 소개는 '5편: 실제 취업사례 - 포프'에서 더 자세히 다루겠습니다.)
    • 2008년 ~ 현재: 캐나다 Relic Entertainment에서 렌더링/그래픽스 프로그래머로 재직중. Xbox 360, PS3용으로 Warhammer 40,000 : Space Marine 제작 중. (링크 클릭하시면 E3비디오 보실 수 있습니다. 위 메인 메뉴에서 제 소개를 누르셔도 보실 수 있습니다.)
    • 2006년 ~ 2008년: Blue Castle Games에서 역시 렌더링 프로그래머로 재직하며 Xbox 360, PS3, PC, PS2, PSP, Wii 용으로 MLB 게임을 10개 정도 출시. (The Bigs, Major League Baseball MLB 2K8 등)
    • 2007년 ~ 2010년: 캐나다 소재 The Art Institute of Vancouver 대학에서 HLSL 쉐이더 언어를 가르침. 학생들이 최고의 선생으로 인정.
    • 2003년 ~ 2005년: 캐나다 소재 British Columbia Institute of Technology 대학에서 컴퓨터 학과 - Digital Processing을 전공하고 수석 졸업.
    • 1996년 ~ 2001년: 연세대 법학과를 다니고, 고시준비하다가 매우 형편없는 학점(2점대)으로 졸업. -_-;;;
    • 1993년 ~ 1996년: 한국에서 게임개발을 했으나 별다른 빛을 보지 못함 -_-;;;
    위에서 보실 수 있듯이 전:
    1. 제 실력하나로 북미에서 취직한 사람입니다.  아는 분 통하지도 않았고, 학교 선배를 통하지도 않았고, 한국회사의 북미지점에 취업하지도 않았습니다.
    2. 이미 몇  년 동안이나 북미에서 게임프로그래머로 일해 왔고 현재도 일류 개발사에서 그래픽스 프로그래밍을 하고 있습니다. 따라서 북미쪽의 개발환경에 친숙합니다. 참고로 북미는 캐나다와 미국을 포함하는데 미국과 캐나다의 게임시장은 거의 하나라고 보셔도 됩니다. (이에 대한 자세한 내용은 '2편: 북미 게임개발 근무환경/취업시장'에서 다루겠습니다.)  실제 저도 한달에 한두번씩 미국에 있는 게임개발사들의 러브콜을 받곤 합니다.
    3. 대학에서 강의를 3년동안 했습니다. 따라서 제 스스로의 경험 뿐만이 아니라 제가 가르친 학생들을 통해서도 게임회사에 취업하는 방법을 잘 알고 있습니다.
    이 정도면 대충 제가 이 시리즈를 쓰기에 부족하지 않다는 것을 보여드린 듯 하니 이제 제가 '게임개발자 북미취업 가이드' 시리즈를 써나갈 방향에 대해 귀뜸해드리겠습니다. 꼭 시간을 내어서 찬찬히 읽어보시면서 자신에게 도움이 될 글인지를 생각해보시길 바랍니다. (가능하면 많은 분들에게 도움이 되었으면 좋겠습니다.)

    게임개발자 북미취업 가이드의 저술방침

    1. 직접체험 위주: 제가 낯설기만 한 나라에 와서 가장 힘들었던 것은 정보의 부족이 아니었습니다. 제대로 알지도 못하면서 어디서 잘못 주워들은 허위정보를 사실인양 전해주면서 의시대는 한국분들이 저에게 가장 큰 고난이었습니다. 시행착오, 돈낭비... 무엇보다 시간낭비 장난 아니었죠. 이런 분들에게 몇 번 데인 뒤에는 스스로 보고 들은 정보가 아니면 믿지 않게 되었습니다. 다른 분들이 저처럼 시행착오를 겪지 않기를 바라는 마음에서 이 시리즈에서 다룰 내용도 제가 직접 경험한 일들을 중심으로 하겠습니다. 나중에 '7편: 실제 취업사례'에서 다른 분들의 경험담도 조금 실을 생각인데 이럴 때에는 제 직접 경험이 아님을 분명히 밝히고 사실만을 정확히 전달하도록 노력하겠습니다.
    2. 스스로도 척척 잘해요~ -_-: 저는 모든 일을 스스로 처리하는 것을 좋아합니다. 그리고 여기서 직장잡고 일하는 것도 한번도 다른 회사나 개인에게 돈주고 맡긴 적 없습니다. 따라서 제가 쓰는 모든 내용도 스스로 척척교의 교리를 실천하는 것을 목적으로 합니다. 여기서 주의사항 하나... 자기 통제력 없으신 분들, 항상 세상탓만 하다가 결국 기회가 와도 아무짓도 안하시는(못하시는게 아닙니다) 분들은 제 글 별로 도움 안될 겁니다. 그냥 보지 마세요.
    3. 실력 위주: 순수 실력으로 취업하는 방법을 다룰 겁니다. 줄 잘서서 어떻게 해보시려는 분들에게 해당사항 없습니다. 물론 아는 사람 통해 어떻게 취업하는 사람들도 소수 봤지만 능력위주인 이 쪽 문화에서 오래 버티기 어렵더군요.
    4. 최소비용 최대효과: 돈 이야기가 아닙니다. 시간 이야기입니다. 각 개인에게 주어진 시간은 매우 적고, 게임회사가 원하는 훌륭한 인재가 되기에는 상당히 많은 노력과 시간이 필요합니다. 따라서 정말 중요한 것에 시간과 노력을 투자하고, 별로 중요하지 않은 것은 아예 무시하거나 대충 중간만 가도 됩니다. 이거 안되시는 분들... 언제나 수만가지 일을 벌이고 하나 제대로 못끝내시는 분들.. 역시 제 글 도움 안됩니다. 웹브라우저 닫으세요 -_-
    5. 프로그래머 위주: 전 프로그래머입니다. 따라서 제가 제일 제대로 알고 제대로 말씀드릴 수 있는 것도 프로그래머로서 취업하는 겁니다. 물론 제가 다루는 내용 중에 꽤 많은 부분이 아티스트나, 기획자에게도 해당이 될 것입니다. 하지만 제 글은 프로그래머 분들에게 가장 큰 도움이 될 거라고 생각합니다. 물론 나중에 '4편: 실전 가이드'에서 아티스트와 기획자들에게만 해당하는 내용을 짤막하게 다룰 계획이긴 합니다.

    이번 주 글은 이렇게 서론으로만 마칠 계획입니다. 여기까지 읽고 '나를 위한 글이 아니다.'라고 생각하시는 분들이 계시면 시간낭비 시켜드리지 않고 싶기 때문입니다. 이 글은 어디까지나 제 스스로의 경험을 바탕으로 하는지라 모든 분들의 가려운 욕구를 충족시켜드릴 수는 없을 것입니다. 제 글이 본인에게 맞지 않는다고 생각하시는 분들은 죄송하지만 다른 글/길을 찾아보시길 바랍니다.

    이 글이 유용하다고 생각하시는 분들은 1 ~ 2주 안에 새 글로 뵙겠습니다. ^^

    p.s.

    • 글 즐겁게 보셨고 다른 사람들에게도 도움이 되겠다 싶으시면 View On(Daum)이나 좀 눌러주세요. ^^
    • 질문이나 피드백은 아래에 답글로 달아주세요.

    - 캐나다 버나비에서 Pope 올림.


    2010년 7월 7일 수요일

    이것 저것: 비디오 게임 최적화

    • NVIDIA Texture tool 2.0.8 이 릴리즈되었습니다: 특별히 변한 것은 없습니다. 제가 정말 원햇던 feature는 텍스처 툴 1에서 지원했던 sharpen 필터인데요.. 2.2 버전에서야 지원할 예정이랍니다.. 대체 몇년이 걸릴지... 참고로 NVIDIA 텍스처 툴은 오프라인 DXT 압축에서 매우 쓸만한 놈입니다.
    • GPU Pro 가 출시되었습니다. 그 유명했던 ShaderX의 뒤를 잇는 책입니다. 이름이 좀... 거만해졌죠? ... -_-
    • 리얼타임 렌더링의 저자 Eric이 Video Game Optimization이란 책을 추천했군요. 비디오 게임 최적화를 다룬 책이 별로 없었던듯 한데 한번 읽어봐야겠습니다.
    • Python 2.7도 릴리즈 되었습니다.  C#의 점점 위세를 넓혀가고 있지만 여전히 파이썬 많이 쓰죠?

      2010년 6월 20일 일요일

      이것 저것: 현 샤도우 매핑 기법들

      2010년 6월 14일 월요일

      실시간 DXT 압축

      최근에 이 페이퍼를 읽을 기회가 있었습니다. 게임 속에서 실시간 또는 오프라인에서 노말맵을 DXT로 압축하는 방법을 설명합니다. 탄젠트 공간과 오브젝트 공간을 모두 다룹니다.



      DXT 압축은 품질저하가 있는 압축기법이지만 다음과 같은 이유로 거의 모든 게임이 사용한다고 해도 과언이 아닙니다.
      • 사이즈 절약 효과가 뛰어납니다. 알파채널이 있으면 1/4, 알파채널이 없으면 1/8
      • 거의 모든 그래픽스 카드가 하드웨어 레벨에서 DXT 포맷을 지원합니다. (따라서 성능저하가 거의 없습니다)
      단 문제점은 압축하는데 시간이 꽤 걸린다는 것이죠. 하지만 위의 페이퍼를 사용하면 품질은 보통 DXT보다 저하되지만 그래도 쓸만한 효과를 얻을 수 있습니다. 저 스스로도 이 방법을 사용해서 이미 Xbox 360 및 PS3용 게임을 출시했고 현재도 사용하고 있습니다. PS3외의 하드웨어에서는 GPU 버전이 더 빠를겁니다. (PS3는 SPU를 이용하는 DXT압축 라이브러리가 있습니다)

      다음의 Albedo 맵을 압축하는 기법을 설명하는 다음의 페이퍼들도 참고하세요

      2010년 6월 12일 토요일

      이것 저것: 데칼로 자동차 뽀작내기

      최근에 발견한 흥미로운 토픽들:

      • Game Developer 잡지 2010년 7월판에 Decal Tessellation이라는 기사가 실렸습니다. 데칼(decal)을 이용해서 자동차를 뽀작내는군요. DirectX 11 카드가 필요합니다. FPS 게임을 하다보면 벽에 총을 쏘면 벽에 총알 맞은 자국이 생기죠? 그런게 데칼입니다. PS3용 게임 Little Big Planet에서 스티커 붙이는 것도 데칼입니다.
      • PS3 하고 Xbox360 둘다 3차원 TV지원을 한답니다.  매우 소규모 시장인 것도 문제고, 3차원 TV보면 두통이 나므로 아직은 성공하기엔 시기상조 같네요.
      • 샤도우 맵에 Percent Coverage Filtering를 사용하신다면 샤도우 마스킹 테크닉을 통해 성능향상을 꾀할 수 있습니다. 단 이 페이퍼에 실린 측정수치는 그다지 믿을만 한게 못됩니다. 일부로 간단한 장면에서 테스트를 했고, 화면의 절반을 스카이박스가 덮고 있네요. 좀 현실적인 장면으로 테스트를 했었으면 하는 바램입니다.

      안녕하세요 블라인드 렌더러입니다.

      안녕하세요. 블라인드 렌더러, 포프입니다. 한글로 글을 쓰는 것이 얼마만인지 모르겠습니다. 2002년에 처음 캐나다로 왔을 초기엔 한글로도 글을 많이 올리곤 했는데 점차 한국과의 교류가 적어지다 보니 한글로 글을 쓸일도 없었던 것 같습니다. 거기다가 새로운 환경에서 게임회사에 자리잡느라 바쁘기도 했고, 대학강의 나가느라 시간이 빠듯하기도 했지요.

      이렇게 다시 한글 블로그를 열게 된 이유는 사실 아직까지도 저하고 간간히 안부를 나누는 몇몇 분들과 갈렉산드리아를 이용하시는 분들의 요청에 의해서입니다. 생각보다 많이 북미쪽 개발환경에 대해 궁금해하시더라구요? 이 블로그를 통해 제가 지난 몇년간 쌓은 -- 그리고 앞으로도 계속 쌓을 -- 경험을 한국에 계시는 개발자 분들과 공유할 수 있으면 합니다.

      오랫동안 안쓰다 보니 한글로 글쓰는게 참 어눌하고 어색합니다. 너그러이 봐주셨으면 합니다.