게임 제작에서 Client 프로그래밍의 역할에 관하여 김영상 (athens96@naver.com) 월드테크코리아 선연(07초청) 2008-10-17 제6주 Client프로그래밍
Contents Client 프로그래밍이란 게임 프로그래밍 구조 엔진 프로그래밍 컨텐츠 프로그래밍 게임 제작 프로세스 결론 Reference 2008-10-17 2008-10-17 제6주 Client프로그래밍 2
Client 프로그래밍이란? 게임 프로그래밍이란 Client 프로그래밍이란 사람들의 머리 속에 있는 게임 아이디어를 컴퓨터에 구현하기 위한 작업이다. 게임 프로그래밍에는 크게 Server 프로그래밍 과 Client 프로그래밍으로 나눈다. Client 프로그래밍이란 게임을 플레이 하는 유저가 작동시키는 모든 프로그램을 구현하는 작업이다. Client 프로그래밍은 크게 엔진 프로그래밍과 컨텐츠 프로그래밍으로 나누어진다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 3
게임 프로그래밍 구조 Server 프로그래밍 Client 프로그래밍 게임 엔진 Server 엔진모듈 Client 컨텐츠 Zone관리 툴 모니터링 툴 게임 엔진 Client 컨텐츠 캐릭터관리 툴 게임 UI Map 툴 Effect 툴 2008-10-17 2008-10-17 제6주 Client프로그래밍 4
게임 프로그래밍 구조(2) 게임엔진 Client 컨텐츠 게임 UI 게임을 구성하고 있는 그래픽, 사운드, 네트워크등을 구현한다. Client 컨텐츠 게임 엔진을 사용하여 게임 컨텐츠를 구현한다. 게임 UI 유저가 컨트롤하는 UI를 구현한다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 5
게임 프로그래밍 구조 캐릭터 관리툴 Map 툴 Effect 툴 디자이너가 MAX나 Maya로 만든 캐릭터 데이터를 게임안에 사용하기 위해 변환하고 게임상 필요한 데이터를 추출하기 위한 툴 Map 툴 디자이너가 MAX나 Maya로 만든 여러 지형 또는 물체 등을 배치하고 게임에 맞는 속성을 부여하는 역할을 하는 툴 Effect 툴 Effect를 구현하는 툴 2008-10-17 2008-10-17 제6주 Client프로그래밍 6
게임 엔진 - 그래픽 그래픽 게임 엔진에서 가장 중요한 부분으로 실제로 화면에 보이는 부분을 구현하고 있다. 보통 게임 엔진을 선택하는 가장 중요한 역할을 하고 있다. 그래픽 엔진은 보통 렌더링 엔진이라고 불리운다. (렌더링이란 컴퓨터 프로그램을 사용하여 실제 모델을 모니터의 이미지 형태로 생성하는 과정을 말한다) 초기 그래픽 엔진의 경우 직접 비디오카드를 콘트롤 하여 구현하였으나 시대가 흐름에 따라 각자 그래픽 카드의 자체 API를 제공하기 시작하였고 지금 현재는 모든 그래픽 카드의 통합 API(DirectX, OpenGL)를 제공하기에 이르렀다. 그래픽 엔진은 기본적으로 DirectX와 OpenGL을 기반으로 이루어진다. DirectX나 OpenGL의 경우 파이프라인이라는 과정을 거쳐 렌더링을 한다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 7
게임 엔진 – 그래픽 파이프라인 HARDWARE Vertex shader program Pixel shader program Application Geometry Rasterizer HARDWARE Vertex shader program Pixel shader program 2008-10-17 2008-10-17 제6주 Client프로그래밍 8
게임 엔진 – 쉐이더 사용 예 Unreal 3 HDR 2008-10-17 2008-10-17 제6주 Client프로그래밍 9
게임 엔진 – 쉐이더 사용 예 Unreal 3 Normal mapping 2008-10-17 2008-10-17 제6주 Client프로그래밍 10
게임 엔진 – 게임 툴(Map 툴) UEdit 2008-10-17 2008-10-17 제6주 Client프로그래밍 11
게임 엔진 – 게임 툴 (캐릭터 툴) 2008-10-17 2008-10-17 제6주 Client프로그래밍 12
Client 컨텐츠 게임 엔진의 기술을 바탕으로 기획자가 적용하고자 하는 부분을 제작한다. 컨텐츠란 기획자에 의하여 만들어진 게임에서 구현될 내용을 의미한다. 기획자가 원하는 데이터를 프로그래밍에 연동하기 위하여 다음과 같은 툴을 제공해 준다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 13
컨텐츠 에디터 툴 GABEdit 천랑열전 Script Edit 2008-10-17 2008-10-17 제6주 Client프로그래밍 14
게임 제작 프로세스 Pre-production Production Milestones Nearing completion Maintenance 2008-10-17 2008-10-17 제6주 Client프로그래밍 15
게임 프로세스 상에서 프로그래밍의 역할 Pre-production 게임 프로세스 상에서 프로그래밍의 역할 Pre-production Pre Production과정에서 가장 중요한 것은 바로 엔진을 선정하는 것이다. 현재 프로젝트에서 요구되는 기술적인 사항을 파악하여 이에 맞는 엔진을 선택하는 것이 중요하다. 여기서 필요한 기술적인 요소는 그래픽, 네트워크, 물리를 비롯한 모든 기능에 대해 파악하여 선택한다. 직접 엔진을 구현 또는 사용엔진을 선택 하여 Pre-production상에서는 자신이 구현하고자 하는 게임의 가장 기본적인 기술적 기능을 구현하여 Prototype을 제작한다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 16
게임 엔진을 직접 제작 할지, 상용 게임 엔진을 사용할지? 게임 엔진을 직접 제작할 경우 장점 자신의 게임에 맞는 엔진을 제작 할 수 있다. 게임 엔진을 계속 발전 시킬 수 있다면 회사에 엔진 노하우를 축적 할 수 있음 보다 쉬운 커스터마이징이 가능 단점 상용엔진에 비하여 상대적으로 오랜 개발 기간이 필요하다 게임 엔진을 직접 제작할 엔진 개발자가 필요하다. 상용 엔진을 사용할 경우 게임 엔진을 직접 제작하는 시간을 단축시켜 전체 개발 일정을 줄일 수 있다. 신뢰성 있는 사용 엔진을 사용함으로서 일정 수준이상의 퀄리티를 보장 받을 수 있다 상대적으로 많은 초기 비용이 들어간다. 해당 엔진을 사용하기 위한 학습 기간이 필요하다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 17
게임프로세스 상에서 Client 프로그래밍의 역할(2) Production Pre-production에서 구현한 엔진에 필요한 기능을 추가한다. 기획에서 나온 여러 컨텐츠를 구현 순위에 의하여 순서대로 구현 한다. Milestone 우리나라 게임은 대부분 온라인 게임이기 때문에 다음과 같은 마일스톤을 가지고 있다 Alpha Test Closed beta Test Open beta Test 이러한 기간중에 가장 중요한 것은 바로 Bug를 잡는 일이다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 18
게임프로세스 상에서 Client 프로그래밍의 역할(3) Nearing completion 이 과정에서 가장 중요한 것은 바로 Testing 과정이다 Client에서는 Milestone과정에서 얻는 데이터를 가지고 Testing을 한다. Completion Maintenance 제품을 릴리즈 한 후, 기존의 개발팀은 보통 해체 되고 새로운 프로젝트를 진행하며 기존 개발팀중 일부가 Live 팀을 조직하여 계속 업데이트를 해나가게 된다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 19
결론 Client는 크게 엔진과 컨텐츠로 나눌 수 있다. 엔진 프로그래밍은 게임을 구동하는 베이스를 구현하는 일이고 게임 적인 요소의 구현은 컨텐츠 프로그래밍이 담당하고 있다. 개발의 모든 과정은 Client 프로그래밍과 밀접한 관련이 있다. Client 프로그래밍은 게임 개발에서 가장 중요한 역할을 하고 있으며 그래픽, 기획 등 모든 부분을 수용하고 있다. 2008-10-17 2008-10-17 제6주 Client프로그래밍 20
Reference 3D 게임 프로그래밍 , 김용준 , 한빛미디어, 2005 게임프로그래밍제작론(개정판), 김경식 외 홍릉출판사, 2004. 8 Directx9를 이용한 3D Game 프로그래밍 입문, 정보문화사, 2004 Realtime Rendering 2nd edition, Tomas Akenine-Moller, Eric Haines, ISBN 1568811829, 2003.12 Wikipedia , http://en.wikipedia.org 2008-10-17 2008-10-17 제6주 Client프로그래밍 21