Console Game 개발에유용한방법 이진균개발실장
목 Console Game 시장과개발의필요성 Programming Differences between PC & Console Dev. Environments CPU, GPU, & FPU Resource Loading Memory Management Network Implementing Effects Quality Test 차 Graphic Geometry Texture Resolution Alpha Channel Compressed Texture Gamma Correction Color Reduction Summery Q & A
Console Game 시장과개발의필요성 400 350 300 250 200 150 100 50 0 Platform 별세계게임시장규모전망 : 2001~2005 출처 : 2003 대한민국게임백서 - 문화광광부한국게임산업개발원 346 331 309 294 280 227 215 213 186 178 114.4 96 94.7 76.2 56 47 36 35.6 37 37.4 36 34.7 9.5 16 24.4 2001 2002 2003 2004 2005 Arcade Video (Console) Online Mobile PC SONY PSP 출시 SONY PlayStation2 의후계기출시 Microsoft Xbox 후계기출시 Nintendo GameCube 후계기출시
Differences between Console & PC 고정된성능및확장성일정한 CPU 및 GPU 성능 : 예상이용이 H/W 특성파악에많은노력이필요함. Graphic Optimization 이용이 별도의개발환경고유의 Development Kit 고유의 Compiler H/W Vendor 의 Support TV Output PC Monitor 와표현색상이다름. (Gamma Correction 이필수 ) TV 제조사마다다른색상. Controller Keyboard 와 Mouse 가기본으로제공되지않음. 방향 Button (Analog Joystick) + 6(~10) 개의 Button 으로모든입력을처리해야함. DVD PC 에비해상대적으로매우느린 Loading Time. (10x 이상의속도차 )
Dev. Environments SONY PlayStation2 개발환경 OS Compiler 사용가능언어 API Network Output Linux, Microsoft Windows GNU gcc (for PlayStation2) Metrowerks CodeWarrior SN System ProDG C, C++, Assembly SONY Library, gcc 표준 Library, STL 100T Ethernet TV
Microsoft Xbox Dev. Environments 개발환경 OS Compiler 사용가능언어 API Network Output Microsoft Windows Microsoft Visual Studio.net C, C++, Assembly Microsoft XDK, standard C Lib., STL 100T Ethernet TV
Dev. Environments Source File Compile Executable File TV 100T Ethernet 개발자 Game Data TV
Sony PlayStation2 CPU FPU0 VU0 VU1 GS Microsoft Xbox CPU FPU GPU CPU, GPU, & FPU (MIPS-R5000, RISC) (internal co-processor) (Vector Unit 0, via main bus) (Vector Unit 1, via DMA) (Graphic Synthesizer, via DMA) (Intel Pentium III 733Mhz, CISC) (internal co-processor) (custom designed by NVIDIA)
CPU, GPU, FPU GPU 에비해상대적으로약한 CPU Power. Back face Culling 과같이 CPU 의존적인 Processing 은배제 (PlayStation2). 병렬처리가관건. CPU Pipeline Slot 을활용한 Concurrent Processing. Assembly 어의사용이요구됨. VU Inline Assembly 로구현된 sqrtf() 함수 : CPU 에비해 8 배빠른속도 적절한 Type 의활용 0.0 vs. 0.0f (type-cast 가상당히느림 )
CPU, GPU, FPU 최소한의 Bandwidth Overhead Main-BUS, DMA 상의전송을최소화. Texture Resolution Vertex Components Cache-hit 의비율을높여야함. Code 의최소화 Inline Function 의활용 (Function call 의배제 ) Cache flushing 발생
Loading 속도비교 Resource Loading 종류 HDD DVD (PlayStation2) DVD (Xbox) 속도 (MB/sec.) 33.3 ~ 100 2 ~ 5 2.7 ~ 6.9 Seek time 및 Access Time 을줄이기위해, ISO 9660 의 TOC (Table of Contents) 에서파일정보를가져오는대신, 직접 File System 을구성한 Pack File 을제작한다.
Memory Management Virtual Memory System 이제공되지않거나, 사실상유명무실하다. H/W 의특성상, Buffer 가반드시선형 (Linear) 으로배치되어야하는등의이유 Physical Memory System 을사용하기때문에메모리블록의단편화 (Fragmentation) 가발생할수있다. H/W 의특성에의해 Buffer 의 Alignment 가중요. Buffer 의 Start Address 및 Size 에 16, 64, 128 bytes alignment 등이요구됨.
Memory Management 별도의 Memory Management System 의필요성. Buffer 의시작주소및크기의 Alignment Fragmentation 의제거 Debugging 기능 방식 1 : Buffer (class) Array 방식의관리자 (fixed-size memory pool) C++ new operator 의 override. STL class array 활용가능. 할당 & 해제에추가 Overhead 가없기때문에매우빠름. 방식 2 : Stack memory pool (Variable-size, Fixed-size) Stack 과동일한구조로 Memory Buffer 를관리. 할당 & 해제처리에 Overhead 가없기때문에빠름. 그러나나중에할당된 Buffer 를해제하기전에이전 buffer 를해제할수없기때문에, Memory 의사용량이 100% 예상가능한범위안에서만사용가능. 방식 3 : 가변크기의 Memory Pool (Variable-size memory pool) 어떤용도로도사용가능 Memory buffer 의관리에많은 Overhead 가필요하다.
Network SONY PlayStation2 사용가능 Network Interface Network Kit USB Ethernet Card 각종류에따라별도의 Driver 를필요로함. ( 기본 Driver 제공 ) 사용가능 Protocol IP (IPv4) TCP UDP HTTP BSD Socket Library 지원 (Thread 를이용한일반적인 Socket Programming) 보안에대한특별한기본기능을제공하지않는다. 일반적인 Packet 구조를사용하기때문에다른기종과도문제없이통신할수있다. 사용자인증및 Server 운영에대해 SONY 의특별한지원없음.
Network Microsoft Xbox 사용가능 Network Interface Build-in Ethernet ( 확장및변경불가 ) 사용가능 Protocol 변형 IP 변형 TCP 변형 UDP 자체보안된특수한형태의 Packet 을사용. 일반적인다른기종과 Network 할수없음. 인증및보안에대해 Microsoft 사가주도적으로방침및기능을제공. 사용자인증과정은반드시 Microsoft 사의 Database 를통해서만이루어짐. 인증, 보안및 Voice-Streaming, Traffic Control 등에대한 Library 를제공.
Implementing Effects 기능별구현방법 기능 Environment Mapping Bump Mapping MIPMAP Normal Mapping Displacement Mapping Particle Skinning Mesh Compressed Texture Stencil Buffer SONY PlayStation2 2-pass rendering 3-pass rendering 지원 VU1 Vertex Program VU1 Vertex Program Sprite Primitive를이용한 Render. VU1 Vertex Program 불가 1 bit Microsoft Xbox Cube Map or Sphere Map Multi-texturing with PS. 지원 Multi-texturing with VS. Multi-texturing with VS. Point Sprite 지원지원 1 or 8 bits
Quality Test 모든 Console Game 은 H/W Vendor 의검증을거친후, 출시된다. SONY PlayStation2 : QA Test Microsoft Xbox : TCR 매우상세한 Check List 의항목들을모두해결하고있거나, 대안을제시해야만통과가능. Game Program 의 Crash 여부및진행. 표준용어의사용메모리카드 (PS2) 또는메모리유닛 (XBOX) 에대한사용자 Interface 및기능. Loading Time (Maximum 15 초 ) 등록상표의사용및음란성내용 Driving wheel 과같은추가장치의지원시, Calibration Screen 제공여부
Texture Resolution 각 H/W 는 GPU 를위한 Cache 를가지고있다. PlayStation2 : 8KB Xbox : 8KB 적절한 Cache Hit 을위해, 가급적 Cache Size 를넘어가지않는크기의 Texture 를사용하는것이좋다. 4 bits 8 bits 16 bits 24 and 32 bits Bits per Pixel 128 x 128 128 x 64 64 x 64 64 x 32 Width x Height Cache Size 를넘어가는경우에 Penalty 발생. (Xbox 의경우 UMA 로인한보완 ) Texture Filter 와 TV 자체의 Anti-Aliasing 효과를이용.
Texture Alpha Channel Color Key 사용불가 (PlayStation2) 32 bits Image Format 의사용 4, 8 bits Image 의경우, Palette 에 Alpha Channel 포함 (PlayStation2) Compressed Texture (only for Xbox) Xbox 의경우다양한배율의압축 Image Format 을지원 (DXT1, DXT3, DXT5) 압축을풀지않은상태로직접 Mapping 가능 Bandwidth 의 Saving 효과
Texture Gamma Correction 각 TV 제조사에따라표현되는색상이다름. 일반적으로빨간색에대한보정이요구됨. 다양한제조사의 TV 를구입해표현정도를개발중에수시로확인. Color Reduction PlayStation2 의경우매우중요한 Performance tuning 의방법이며대부분의경우에 Performance 가향상됨. Xbox 의경우, Compressed Texture 로 Palletized Texture 의장점을대신할수있고, Palletized Texture 의경우 Color Table 을 Lookup 하는것으로인한 Penalty 가주어질수있기때문에반드시필요한경우를확인. Quality 의저하를막기위해큰 Texture 를비슷한색상을가진영역으로분할해, 별도의 Palletized Texture 로구성. Color Reduction 을위한전문적인외부 Tool 의활용.
Summery 세계 Game 시장에서, Console Game 은 35% 에달하는비중있는분야이며, 2005 년을기해게임계에새로운패러다임을제시할차세대기종들이등장할예정. 일반적인 PC Game 개발에비해, 계획수립이용이하다. H/W 의특성을파악하기위한충분한 R&D 를필요로한다.
Q & A 질문이있으시면
감사합니다. ZEPETTO Studio Inc. www.zepetto.com