한 권으로 배우는 게임 프로그래밍 - 수학과 물리, 자료구조와 알고리즘, 디자인 패턴으로 익히는 게임 개발 필수 지식
박태준.박효재.윤하연 지음 / 한빛미디어 / 2024년 10월
평점 :
장바구니담기



내가 처음 프로그래밍을 배웠을 당시에 큰 관심을 가졌던 것은 게임 쪽이었다. 그때는 내가 아는 분야가 적어서 그런 것도 있지만, 아직도 게임 개발에는 관심이 많다.


그래서 지난번 '게임 시나리오 작법'에 이어 박태준, 박효재, 윤하연 공저 '한 권으로 배우는 게임 프로그래밍'이란 책을 보게 되었다. 기존에 유니티 관련 책도 여러 권 봤는데, 이 책의 경우 읽어보니 게임 제작에 관심 있는 프로그래밍 입문자에게 잘 어울리는 책이란 생각이 들었다. 



'한 권으로 배우는 게임 프로그래밍'은 개발 환경 구성과 게임 세계 이해, 수학과 물리, 게임 프로그래밍에 필요한 기법, 게임 프로그래밍 방법론 이렇게 총 4장으로 구성되어 있다. 이러한 제목만 봐도 게임 개발에 가장 핵심인 내용을 다루고 있음을 눈치 챌 수 있다.



보통의 게임 개발 서적 경우 부피가 커서 다 보는데 부담이 다소 있지만, 이 책은 찾아보기 포함 336쪽으로 부담이 크지 않다. 책 곳곳에 이해를 돕는 그림들이 있는 것 또한 부담을 줄이는 한 요소였다. 그래도 이 책을 보다 원활히 보려면 기초적인 C# 문법은 어느 정도 알고 있을 필요는 있다.



'한 권으로 배우는 게임 프로그래밍'은 저자가 4장에서 밝혔듯이 실습을 자세히 다룬 책이 아닌 물고기를 잡는 법 혹은 물고기를 맛있게 먹는 법을 알려주는 성격의 책이다. 그러다 보니, 책 속 C# 코드도 풀 코드 보다는 개념 이해에 중점을 두고 있으며, 같이 사용되는 유니티 엔진도 책 초반에 설치 방법도 나오고 중간중간 에디터 화면이 등장하지만, 이 역시 시시콜콜 보여주는 형태가 아니다. 전체 개념 이해가 더 중요한 것이다.



게임 개발을 하는 데는 많은 지식이 필요하다. 단순히 코딩할 수 있다고 해서 할 수 있는 것이 아니다. 그럴듯한 게임을 만들기 위해서는 수학과 물리의 도움이 많이 필요하다. 그래서 책에는 벡터, 라디언, 삼각함수, 외적, 내적, 속도와 거리 등이 어떻게 게임에 활용되는지 이해하기 쉽게 설명되어 있다. 게임 관련 수학도 어려운 것은 무척 어렵지만, 이 책에서 다루는 내용은 고등학교 수준에 가장 기초적인 것들이라 지레 겁 먹을 필요는 없다.



알고리즘 역시 게임을 만들기 위해 꼭 알아둬야 한다. 책에서는 고전 게임 팩맨을 통해서 어떤 어떤 알고리즘이 어떻게 쓰이는지 설명하고 있다. 랭킹 시스템을 위해선 정렬을 이용하는데, 버블 정렬, 링크드 리스트, 트리, 해시 등이 나오며 어떤 차이가 있는지 알아 본다. 충돌 처리에는 AABB 알고리즘, OBB 같은 것이 쓰이는 것을 알 수 있다.



'한 권으로 배우는 게임 프로그래밍'에서 많은 비중을 차지하는 파트가 4장 게임 프로그래밍 방법론이다. 클래스와 상속 이야기와 함께 패턴이 중점적으로 다뤄지는데, 기존 프로그램 언어 책이나 패턴 책과 다른 가장 큰 차이점은 게임 코딩이란 시각으로 보고 있다는 것이다. 싱글턴 패턴은 게임 매니저 등 유일한 기능 제공에 사용하고, 옵저버 패턴은 아이템 간의 상호 작용, 효율적인 데이터 전달에는 사용하는 등 게임 개발에 다양한 패턴들이 어떻게 쓰이는지 보다 구체적으로 알  수 있다. 게임 관련 패턴을 한 번에 개념 정리할 수 있는 좋은 파트였다.



게임 입장에서 수학, 알고리즘, 디자인 패턴 등이 활용되고 있다 보니, 기존에 알고 있었던 것도 전혀 새롭게 느껴지고 새로운 활용법도 알 수 있었다. 아울러 책 마지막의 안티패턴에서는 게임 코딩을 어떻게 하는 것이 좋은지, 전문가의 조언을 들을 수 있었다.


이렇게 '한 권으로 배우는 게임 프로그래밍'을 통해 게임 개발에 꼭 필요한 알짜배기 지식을 얻었다. 책 부피에 비해, 얻은 게 많았으며, 게임 관련 여러 개념도 전체적으로 잘 정리할 수 있어 좋았다. 게임 개발 입문자 뿐만 아니라, 게임 제작에 도전하려는 경력 개발자에게도 이 책이 많은 도움이 될 것이라 생각한다.


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