게임 엔진 블랙 북 : 울펜슈타인 3D 게임 엔진 블랙 북
파비앙 상글라르 지음, 박재호 옮김 / 한빛미디어 / 2020년 10월
평점 :
장바구니담기


굉장히 호기심이 생기고 읽어보고 싶게 생긴 책인 게임 엔진 블랙북: 울펜슈타인3D를 읽었다. 한빛미디어에서 이런 Geek한 책도 번역하는구나 싶다. 울펜슈타인을 직접 해보지는 않았지만 어떤 게임인지 대충 알고 있었다. 소스코드가 깃허브에 공개되어 있어서 한번 볼려고 했었는데 그만 둔 기억이 있다.

표지는 좀 오바스럽긴 하다. 하지만 이 책에 들어있는 내용은 진짜 엄청나다..!

처음 엄청 놀랐던 부분이다. 이 책의 초반부분 챕터에서는 울펜슈타인이 개발되었던 당시 하드웨어 사양에 대해서 이야기하고 어떤 문제가 있는지, 어떤 식으로 구현되었는지가 설명하고 다음 챕터에서 울펜슈타인에서는 이런 하드웨어적인 한계를 어떻게 소프트웨어적으로 해결했는지를 이어서 설명한다.

이때 당시 CPU는 80386이었고, 램은 1메가였다고 한다. 그마저도 OS와 각종 드라이버들을 로드하고나면 640kb정도 밖에 되지 않는 아주 작은 램이었다. 그래서 이때 당시에 존재했던 XMS와 EMS라는 메모리 기술을 사용해 이를 극복할 수 있었다고 한다. 이 기술에 대한 내용과 어떻게 동작하는지 설명하고 있는 부분이다.

이것은 메모리 파편화를 막기 위해 직접 만든 메모리 메니저와 페이지 메니저에 해당하는 내용이다. 저자가 친절하게 하나씩 뜯어보고 이해할 수 있는 그림을 활용해 설명해주고 있다. 이런 그림들이 큰그림을 그리는데 아주 많이 도움되었다.

나도 OS수업을 들으면서 힙 메모리를 미리 할당해서 링크드 리스트로 관리하는 프로그램을 만들어 본 적이 있었다. 그래서 이 부분을 보면서 참 그생각이 많이 나서 이해하는에 아주 도움이 되었다. 이런게 진짜 이렇게 쓰였다는게 참 신기했다.


이부분은 진짜 미쳤다고 생각되는 부분인데, 이때 CPU에는 부동소수점을 연산할 하드웨어가 없었다고 한다. 그래서 int의 bit들을 shift해서 16:16으로 부동소수점 연산을 하는게 진짜 신기했다. float대신에 fixed라는 것을 만들어서 연산하는게 진짜 대박이었다.


이밖에도 사운드카드나 괴랄한 VGA등을 고려한 여러가지 테크닉들이 많이 들어있었다. 이런것들을 보면 진짜 재밌다. 이렇게 고군분투 하는 것이 진정한 프로그래머가 아닐까 싶다. 다 읽고 보니 Github에 있는 소스코드를 보면서 이 책을 보면 매우매우 좋을 것 같다.

* 이 책은 한빛미디어의 '나는리뷰어다' 이벤트로 제공받았습니다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo