[책] 게임프로그래밍에 입문해볼까..

많은 웹 개발자 입장에서 게임 개발은 좀 신비한 영역입니다. 실시간 처리 기반의 프로그래밍 특성 때문인데, 절차지향적이고 이벤트 기반인 동기화 프로그래밍에 익숙한 입장에서 실시간 처리기반의 프로그래밍을 처리하기란 여간 어려운 게 아닙니다.

장기와 같은 턴제 게임이야 이벤트처리 처럼 단계별로 진행되지만, 슈팅게임만 해도 실시간으로 계속 처리되어야합니다. 사실 장기게임이라고 해도 mmo가 되어버리면 백단의 통신처리는 실시간으로 변해 이벤트 기반으로 처리하는데는 한계가 금방 닥칩니다.

이벤트 기반의 프로그래밍은 한번에 처리해야할 알고리즘을 제한하고 해당 알고리즘을 실행하는 동안 동시성 문제를 겪지 않게 설계된 경우가 많습니다. 따라서 복잡성을 정복할 수 있어 손쉽게 대규모의 프로그램을 개발할 수 있게 돕습니다. 하지만 실시간 기반에서는 전혀 다른 접근 방법이 필요합니다.

이번 프레임에 부하가 많이 걸린다면 다음 프레임에 적당히 나눠서 줄 수도 있고 개별로 분산시킨 쓰레드가 시도때도 없이 중간 보고를 하지 않나, 동시성 문제도 사방에 도사리고 있습니다.

이 정글이야말로 항공관계시스템, 주가정보 감시 시스템 등 일명 미션크리티컬한 영역에 사용되는 소프트웨어의 실체이기도 합니다. 그리고 이 정글에서 하드웨어의 성능을 한계까지 사용하면서 그래픽스, 네트웍, 입력처리 등의 극한 알고리즘을 추구하는 분야가 바로 게임 개발 영역입니다.

게임 개발을 잘 할 수 있으면 사실 알고리즘적인 문제는 많이 해결할 수 있는 셈이죠. 여기 제가 순수히 개인적으로 추천하고 싶은 게임개발 입문서를 나열할까 합니다. 단 개인적인 추천이니 고려하시고, 무엇보다 특정 플랫폼 종속적인 게임개발이 아니라 어떤 플랫폼에서든 게임 개발에 대한 전반적인 개념을 잡고 싶을 때의 추천목록입니다.

게임 프로그래밍의 핵심 테크닉과 알고리즘

2005년도에 출간된 이 걸출한 책은 게임개발 전반에 대한 내용을 다루고 있습니다. 이 책을 여러번 정독하는 것만으로도 게임개발에 관련된 많은 기초지식을 습득할 수 있습니다.

단일 쓰레드를 활용한 게임루프의 작성법, 패럴렉스나 아이소매트릭의 처리 등의 2D게임이론 전반과 3D게임이론의 많은 부분을 총괄적으로 다룹니다.

게임프로그래밍의 정석

일본회사인 세가에서 신입 개발자에게 교육하는 내용을 책으로 엮어낸 내용입니다. 위의 책보다는 보다 실무적인 면을 포함하는 입문서입니다. 마찬가지로 총체적인 게임 개발을 다루기 때문에 큰 도움이 됩니다.

자바 게임 프로그래밍

자바 애플릿과 awt기반으로 게임을 제작하는 과정을 설명하는 책입니다. 사실 이 책이 앞에 두 책보다 모바일이나 브라우저 같은 제약이 있는 환경에서는 더욱 쓸모 있죠. 제약된 환경 내에서 다양한 게임을 구축해가면서 java의 언어 요소를 어떻게 안전하고 성능이 향상되도록 쓰는가를 잘 설명하고 있습니다.

개인적으로 이 분들의 왕팬인데 이제 이분들은 뭐하고 살고 계실까. 일렉트릭아이렌드라는 회사는 망한거 같던데….다들 학력이나 여러가지 ㄷㄷㄷ한 저자진이었습니다. 엔지니어에게 언어따위..적당히 굴러만 가주면 쓸만 한거죠.

안드로이드 게임 프로그래밍

또 하나의 훌륭한 게임 입문서는 바로 이 책입니다. 초창기 제약이 심한 안드로이드에서 비트맵 기반의 게임을 어떻게 구현할까 고민한 흔적이 한가득 있습니다.

특히 쓰레드 관리와 기본적인 알고리즘을 하나하나 설명하는게 입문서로 더할 나위 없죠.

(절 아시는 분들은 알지만 본인이 국내서를 두 권이나 추천하는 경우는 매우 희귀한 것입니다!)

그 외에도..

사실 c++책이 많은데, 이 책들에서 언급하고 있는 언어적인 사용법에 대한 조언은 어떤 언어에나 적용됩니다.

다중 포인터 참조 지옥, 객체지향에서 파이프화한 DDD로의 전이, 스마트포인터와 스트림, 메모리 사전확보와 풀링처리 등 다양한 주제를 다루고 있습니다만 같은 아이디어를 자바나 c#, 심지어 JS에도 적용할 수 있습니다.

게임 프로그래머를 위한 C++

게임 프로그래밍의 핵심 법칙

결론

  1. 막상 써넣고 보니, 너무 오래된 책들을 추천했네요…죄송
  2. 최근에도 게임분야 책은 계속 감시 중이지만 좋은 교과서 스타일의 책을 아직 찾지 못했습니다. 추천 받습니다!
  3. 옛날 책이 좋은 이유는 여러가지 인데 그 중 젤 큰 건 옛날 책일수록 머신 파워가 제한적인 상황이라 브라우저나 모바일에 적용하기 좋은 알고리즘을 갖고 있습니다. 반대로 최신 책은 하드웨어 스펙이 굉장하다는걸 전재로 쓰여진 경우가 많아 머신파워가 약한 환경에 응용하기 어려운 책이 많습니다.
  4. 같은 이유로 심각하게 성능이 안나오는 javaME기반, wipi기반, gnes기반의 게임개발서는 전부 추천, 플래시 기반의 게임책도 추천할만한게 많지만 이정도에서…
%d 블로거가 이것을 좋아합니다: