게임프로그래밍이라는 주제로
By SeukWon Kang
지인으로 부터 뜬금 없이 “게임프로그래밍"라는 주제로 특강을 해달라는 부탁을 받아서 ( 아직 할지 말지는 미정이긴 하지만 ) 이런 저런 생각이 들어 적어보고 있는( 즉 아직 작성중인 ) 문서입니다.
“게임을 만든다는 것은 무엇일까?” 게임이란 무엇일까? 게임의 정의를 논하는 것은 프로그래머 입장에선 쓸데없는 것일 테니 무시하기로 하고 ^^;;; 게임을 만드는 회사를 10년 넘게 다녔던 프로그래머로서 게임을 만든다는 것을 생각해보면 게임을 만들기 위한 직능을 준비하고 그 실무를 진행하는 것으로 정의해볼 수 있을 것 같습니다. 이게 뭔소리래? 라는 의문은 잠시 접어두고 그러면 게임을 만들기 위한 직능(직무 능력)에는 어떤 것들이 있기에? 란 것을 적어봅니다. 즉 이 글은 MMORPG기준으로 게임을 만들고 서비스까지 도달하는데 필요한 직무를 나열하는 글입니다. ;;; ( 결국 강의 준비와는 아무 관계 없을 듯한 글입니다.;; )
일단 회사/조직에서 필요한 기본 직능을 제외 하겠습니다.
( 회사를 창업하려면 필요하겠지만 이글에선 필요 없겠지요.)
인사, 총무, 사내 전산, 회계, 경영 , 법무 등.
그러면 일단 게임 개발 및 서비스에 필요한 직능( 그리고 그대로 조직도가 될 가능성이 높은) 목록 입니다.
** ** 당연한 이야기지만 이것만이 정답이란 건 아니고 한 가지 예라고 생각하시면 됩니다.
-
사업 / 영업 - 잘 모르는 부분이니 대충
-
- 마케팅, 홍보 , 영업 , 세일즈 ,
- 퍼블리싱 계약 , 해외 담당
-
게임 제작
-
-
프로듀싱
-
그래픽 - 전체 게임 제작 인력의 80% 정도
-
-
아트 디렉팅
-
- 시각적 방향성, 일관성 관리
-
아트 매니지먼트
-
- 조직 / 스케줄 관리
- 워크 파이프 라인 관리 -
-
원화 - 컨셉 아트
-
- 배경, 캐릭터, 아이템
-
3D 모델링
-
- 폴리곤 , 텍스처 , 애니메이션 ( 키프레임 )
- 모션 캡쳐
-
동영상
-
- 컷인 동영상 , 홍보 동영상, 트레일러 제작
-
테크니컬 아티스트 - TA
-
- 그래픽 이펙트 , 쉐이더 프로그래밍
-
레벨 디자인
-
- 지형 제작
-
UI 디자인
-
- 메뉴, UI control
-
아트 외주 관리 - 외주를 주는 경우
-
-
게임 디자인(기획)
-
-
시나리오
-
- 배경 설정, 종족 , 역사.
-
시스템 밸런스 - 성장에서 강함을 조정한다.
-
- pvp , pve
-
레벨,지역 디자인
-
- 플레이 난이도 설정 ( 몬스터 )
-
컨텐츠 디자인
-
- 퀘스트 , 아이템 , 캐릭터 ,
-
-
사운드
-
- 보이스, 배경음, 효과음
-
프로그래밍
-
-
서버
-
- 서버 프레임웍 -
- 게임 컨텐츠 ( AI , 퀘스트 스크립팅 , 기획 데이터 적용 )
-
클라이언트
-
- 클라이언트 프레임웍
- 게임 컨텐츠
-
3D 엔진 , 물리 엔진
-
- 개발 또는 적용.
-
인테그레이션
-
- 게임 릴리즈/버전 관리
- 인테그레이션 테스트 - 아트 , 기획, 프로그램의 통합 테스트
-
-
-
서비스 준비 / 퍼블리싱
-
-
QA / TEST
-
- 게임 컨텐츠 QA
- 게임 시스템 QA
- 플랫폼 QA
- 펀 QA
-
플랫폼 개발
-
- 운영용 계정,권한 시스템
- 운영 툴 , 서비스 통계, 모니터링 ,
- 런처 , 업데이트 패쳐 ,
- 빌링 , 부분 유료화 , 아이템 중계소,
-
deployment ( 배포 ) 관리
-
-
서비스 스테이지 별 배포 , 버전 관리
-
- game dev, service dev , alpha, release candidate , test server , service server
-
퍼블리셔별 관리
-
-
번역
-
- 리소스 번역 ( text, art , sound )
- 서비스 툴 번역
-
-
서비스 운영
-
- CS
- GM
- OP
뭐가 어마 무지 하게 많은 직능이 존재 하는데 이를 실제로 확인 하기 가장 좋은 방법은 대형 게임의 엔딩 크레딧을 보는 겁니다.
아직도 있는지 모르겠지만 와우 엔딩 크레딧에는 와우 개발진의 팀 이름과 구성원, 맡은 직무에 대해 나오니 게임 개발에 필요한 직능이 무엇일지 어느 정도 인력이 필요할지 미루어 짐작하기 좋지요.
결국 게임을 만든다는 것을 이 많은 직능을 모두 익혀 수행하는 것 이라고 하면 평생 걸려도 힘들 지도 모릅니다.
( 조그마한 개인 프로젝트라면 가능할지도 모르지만 )
게임을 만든다는 것(그리고 서비스/판매를 한다는 것)은
재미를 만든다. - 컨텐츠 제작 - 예술의 영역
재미를 제공할수 있는 환경(시스템) 을 만들 능력을 갖춘다. - 시스템 제작 - 엔지니어링의 영역
만들어진 것을 고객과 연결한다. - 사업 , 퍼블리싱 - 사업(비즈니스)의 영역
만들어진 제품(서비스)의 품질(상품성)을 검증한다. - 비평가 의 영역
영역으로 나누어 볼 수 있고 본인이 어느 쪽 영역을 원하는 지를 생각해 보는 것이 좋다고 봅니다.
현실적인 타협을 찾아 본다면 필드에 나가기 전에 또는 개인 프로젝트로 할 수 있는 것을 찾아볼 수 있을 것입니다.
생산성이 높은 언어, 프레임웍, 라이브러리를 선정해서 본인의 취향에 맞는 게임 제작을 해볼 수 있습니다.
( python , wxpython , pygame, renpy unity - 3D 영역 )
게임 제작에서 아트 디자인이 차지하는 부분 은 80% 이상 .
조직과 시스템으로 커버 해야 하니 개인이 하기는 힘들다.
프로그래머 개인이 할 수 있는 부분은 아트를 최대한 단순화 해서 처리(기하학적 도형사용) 하거나 아니면 텍스트기반으로 제작해봐도 좋을 것 같습니다.