2010년 7월 14일 수요일

블로그 제목대로 이제 이 곳의 문을 닫습니다.

저번에 한 번 공지를 했던 적이 있는데..... 잘 안보이는 곳에 있어서 그랬는지 그날 지금까지 가장 많은 방문자가 다녀가시는 이변이 생겼었죠.

 

어쨋든 이제 http://blog.naver.com/gameguru 로 이사를 합니다.

2010년 7월 12일 월요일

FreeMind

마인드맵은 아실거예요. 그런데 마인드맵을 손으로 그리다보면 항상 고민되는 것이

 

  • 어떻게 보관을 할까?
  • 계속 해서 마인드맵은 커지는데 그리는 공간은 한정적이다.

 

일 듯 합니다.

 

그래서 무료 소프트웨어로 소개드릴 프로그램이 바로 FreeMind입니다. Java를 기반으로 하고 있는 프로그램이기 때문에 JRE 1.4이상의 버전을 설치하셔야 됩니다. 그런데 이 프로그램이 32bit라서 OS를 64비트를 사용하고 계셔도 JRE는 32비트용으로 설치하셔야 프로그램이 동작합니다. 안그러면 실행이 안되요. 귀찮으시면 아래 링크에서 다운로드 받으시면 됩니다.

 

하지만 FreeMind 소프트웨어도 단점은 존재하더군요. 개인적으로 생각하는 단점은

 

  • 마인드맵이 손을 사용함으로써 뇌를 활성화하는데 그런 부분이 없다.
  • 자유로운 라인과 그림들을 사용할 수 없다.
  • 아이콘을 삽입할 수 있는데 사용자정의 아이콘이 없다.

 

다운로드

 

2010년 7월 11일 일요일

서평 #3

 

제목 : Real-Time Rendering 2nd

저자 : Tomas Akenine-Moller,Eric Haines

역자 : 신병석,오경수

출판 : 정보문화사

제목 : Real-Time Rendering 2nd

저자 : Tomas Akenine-Moller,Eric Haines

역자 : 신병석,오경수

출판 : 정보문화사

 

3d graphics 분야는 전산학에서 그리 각광을 받고 있는 분야는 아닌 것 같다(물론 국내를 기준으로 해외가 어떤지는 잘 모르겠다). 게임 관련 산업의 성장으로 인해 게임 프로그래밍에 대한 관심이 조금씩 모이면서 자연스레 3d 게임 프로그래밍에 대한 관심으로 이행되어왔다고 볼 수 있겠다. 그래서 현재는 게임 프로그래밍에 종사하는 분들(물론 3d클라이언트 프로그래머들만)과 게임 프로그래머가 되고자 지망하는 분들이 3d graphics에 관심을 두고 있지만 게임이라는 한정된 영역에서 그것도 너무 실무적인 것들만 빨리 알고자하는 우를 범하고 있다는 생각을 하지 않을 수 없다. 마치 DX나 OpennGL을 사용해서 3d프로그래밍을 하는 것이 3d graphics 전부를 이야기하는 것처럼 말이다. DX나 OpenGL 관련 서적을 보더라도 가장 먼저 나오는 것은 3d graphics에 관련된 기초 수학(벡터,행렬,쿼터니온,변환 등)에 대한 내용과 그래픽 파이프라인에 대한 내용으로 시작을 한다. 왜냐하면 이 것이 가장 기본이기 때문이다. DX나 OpenGL은 하드웨어와 애플리케이션을 연결해 주는 하나의 interface일 뿐이다. 결국 3d 프로그램을 하기 위해서는 3d graphics에 대한 이해와 관련 알고리즘들을 많이 알고있어야만 가능한 것이다. 3d graphics에 대한 이해와 지금까지 알려진 많은 알고리즘들에 대해서 단 한권의 책으로 시작을 하고 싶다면 이 책이 그 해결책이 될 것이다.

이 책은 제목처럼 3d graphics 분야에서 off-line이 아닌 real-time쪽 내용들을 집대성한 책이라고 볼 수 있을 것 같다. 물론 real-time과 off-line의 3d graphics의 기본이나 알고리즘이 완전히 다른 것은 아니다. 그래도 이 책에서 말하는 모든 내용은 사용자와 상호작용이 가능한 정도의 응답 속도를 가지는 3d graphics 환경을 구축하기 위한 내용들만 모은 한마디로 3d graphics에 부분 집합으로 보면 될 것같다. 2000년도에 1판을 읽어보면서 그 내용의 깊이(물론 특정 장들은 내용이 좀 심층적이고 특정 장들은 소개 정도에 그치지만)와 다루는 영역에 있어서 놀라움을 금치 못했는데 real-time graphics 분야가 3d 그래픽 카드의 무어의 법칙을 뛰어넘는 발전으로 인해 많은 변화가 있었기에 1판이 이제 구식 책으로 변화가던 시점에 2판이 출시 되었고 내용의 충실함과 다루는 영역의 방대함은 여전하였고 그래픽 카드의 가장 큰 변화였던 셰이더에 대한 내용이 추가되었고 현재 게임에서는 많이 사용되지 않지만 DX 10에서 적극적으로 지원하기로 한 곡선/곡면에 대한 내용도 추가되었다. 개인적으로 볼 때 이 책은 초/중/고급 모든 독자들에게 도움이 되는 책인 것 같은데 먼저 3d graphics에 대한 기초적인 내용들을 충실하게 다루고 있기 때문에 초급 독자분들에게 교재로써 손색이 없는 것 같고(2,3,4,5장과 부록 A,B 부분만이라도 꼭 읽자) 이 책의 목적이 여기저기 흩어져 있는 정보를 모두 모아 총망라한 책이기 때문에 중/고급 독자들이 필요한 내용을 찾고자할 때 인터넷에서 검색 사이트에서 검색어로 검색을 하듯이 이 책에서 필요한 장을 살펴보고 이 책에서 제시한 래퍼런스들을 찾아서 읽어보면 많은 도움을 받을 수 있을 것이다.

끝으로 한국어판에 대해서 잠시 이야기를 하자면 솔직히 이 책이 출간될 것이라고 생각을 한 적은 없었다. 이 책은 대학 교재 형식의 책이라서 실제 실무에 관련된 책 위주로 번역서가 출간되는 현실(물론 게임 프로그래밍관련해서 다른 분야는 잘 모르겠다)로 인해 번역서를 기대하는 것은 무리라고 생각했는데 뜻하지 않게 출간이 되었고 번역의 수준은 번역을 하신 두 역자분들이 관련 분야의 교수여서 그런지 상당히 자연스럽고 이해하기도 좋았다. 다만 용어 선택에 있어서 게임 업계에서 표준 용어로 사용하고 있는 용어가 아닌 용어들을 선택한 점이 좀 아쉽고 한국어판의 책이 좀 크다는 것이 또 다른 아쉬움으로 남는다.

서평 #2

 

 

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

저자 : Noel Llopis

역자 : 최현호

출판 : 정보문화사

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

저자 : Noel Llopis

역자 : 최현호

출판 : 정보문화사

 

처음 제목만보고 이 책을 생각했을 때는 판매의 수단으로 제목을 이용하는 건가? 라는 생각을 했다. 프로그램을 작성하는데, 게임 프로그램용 C++가 따로 있는 것은 아니기 때문이다. 그런데 이 책을 읽어보고 난 후에는 많은 C++ 책들 중에 명저라고 불리는 책들이 다들 자신만의 색깔을 가지고 있듯이 이 책도 자신만의 색깔을 가지고 있는 아주 좋은 책이라는 생각이 들었다.

이 책은 게임 프로그램이 가지는 특수성인 속도가 가장 중요하다는 점과 메모리의 사용이 한정될 수도 있다는(콘솔용 게임 제작시) 점을 부각시켜서 책을 집필했다는 측면에서 다른 서적들과 차이가 있다고 할 수 있을 것 같고 게임 제작시 책에서 기술한 기능, 기법들이 사용되면 좋은 경우와 아닌 경우에 대해서 이야기를 하고 있는 점도 이 책만의 장점인 것 같다.

1부에서는 흔히 상속으로 인한 메모리 사용량의 증가가 있고 가상 함수는 일반 함수보다 가상 함수 테이블에서 함수를 찾아야 하기 때문에 느리고 예외 처리도 프로그램의 속도를 저하시킬 수 있기 때문에 사용하지 말아야하고 레퍼런스를 오인해서 포인터만 사용하는 등 실제로 프로젝트를 진행하면서 서로 이견을 가지던가 아니면 오해를 하고 있는 기능들에 대해서 비용 분석과 장단점들에 대해서 자세히 논의 하고 있다(물론 아시는 분들이 보면 진부한 내용일 수도 있다).

그리고 2부에서는 성능 향상을 위한 방법들에 대해서 이야기하고 동적 할당의 속도 저하 문제와 메모리 단편화 문제들을 해결하기 위한 메모리 관리자 제작에 대해서도 논의하고 또 STL에 대해서 속도나 메모리 사용량 측면에서 개인이 작성한 자료 구조들보다 못하다는 오해를 가지고 있는 게임 프로그래머들의 오해를 말끔히 해소할 수 있도록 STL에 대해서도 사용 비용과 성능에 대해서 자세히 논의를 하고 있다.

마지막으로 3부에서는 꼭 게임에 종속적인 내용도 아니고 C++ 언어 종속적인 내용도 아니지만, 실제적으로 사용되는 여러 기법들에 대한 내용으로 추상 인터페이스, 그리고 그 활용예인 플러그인, 자시만의 RTTI시스템, 팩토리 패턴을 이용한 게임 엔티티들 생성, 또 게임 프로그램을 제작할 때 가장 중요하고 힘든 세이브, 로드에 대해서도 이야기하고 프로젝트 진행시 필요한 물리적 설계와 안정적인 게임 프로그램을 작성하기 위한 방법들에 대해서 논의하는데 프로젝트를 진행하면서 아주 실용적인 기법들이기 때문에 많은 도움이 될 것이다.

이 책은 솔루션 북이 아니라 가이드 북이다. 한 마디로 지침서로서 실제 프로젝트 진행시 고려해야할 사항들에 대해서 이야기하고 있고 실제 그러한 사항들을 적용해서 프로그램을 하는 것은 독자의 몫이다. 솔루션 북을 원하는 독자에게 이 책은 정확한 해답이 될 수 없다는 것을 미리 밝혀둔다. 이 책의 저자가 쓴 내용들은 실제 프로젝트를 진행해본 분들이 읽어보면 많은 공감을 할 내용이다. 그 만큼 이 책의 내용이 실용적이라는 것이고 이 책을 읽으므로써 많은 세월 경험을 쌓지 않고도 그러한 경험을 할 수 있은데 이러한 특징은 본래 책이 줄 수 있는 장점이고 이 책이 그러한 도움을 준다는 것 자체가 이 책의 가치를 부여하는 것이라고 말하고 싶다.