* 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
한 권으로 배우는 게임 프로그래밍
박태준, 박효재, 윤하연 지음
간단 서평
재밌는 게임은 사람들을 즐겁게 만든다. 또 재밌는 게임을 하고 나면 나도 이런 게임을 만들고 싶다는 욕망이 생기기도 한다. 하지만 대부분의 사람들은 그런 마음이 들어도, 어떻게 시작해야할지도 모를뿐더러 개발을 하는 방법조차 몰라서 시작도 전에 포기하곤 한다. 나 또한 그랬다. AI 개발은 그런대로 할 줄 알지만, 게임 개발은 항상 야매로 하다보니 금세 흥미를 잃고 접곤 했다. 만들고 싶은 기능은 많은데, 하나씩 추가하다보면 어느새 코드가 너무 복잡해져서 다시 들여다보기도 싫어지는 경우도 있었다. 하지만, 이 책을 통해 게임 개발을 시작했다면, 지금쯤 간단한 게임이라도 하나 정도 완성하지 않았을까 싶다.
이 책은 유니티(Unity)를 기본 엔진으로 다루고 있지만, 이에만 국한되지 않은, 보편적이고 전반적인 게임 개발 이론을 다룬다. 그래픽과 인터페이스를 구성하는 방법, 물리 엔진을 구현하는 방법뿐만 아니라, 수학, 자료구조, 알고리즘을 이용해 게임 속에서 흔히 볼 수 있는 기능을 구현하는 방법을 소개하기도 한다. 우리가 고등학교 과정 중 배웠던 벡터 연산이나, 학부 때 배웠던 자료구조, 길찾기 알고리즘 등이 게임에서 어떤 기능을 구현할 때 어떻게 사용되는가를 읽다보면, 그때는 막연하게만 느껴졌던 이론들이 머리 속에 쏙쏙 들어온다.
그 중 개인적으로 가장 흥미로웠던 부분은 디자인 패턴 부분이었다. 어떤 디자인 패턴이 게임 개발에서 자주 사용되는지를 실제 게임 기능 예시를 통해 소개하는 부분은, 왜 디자인 패턴이 중요하고 왜 이를 적재적소에 사용해야 하는지를 느끼게 한다. 여러 개의 무기를 바꿔가며 다양한 공격을 하고 이를 통해 점수를 얻는 게임을 제작할 때, 플레이어의 특성을 다루는 클래스와 게임의 전반적인 흐름을 다루는 게임 클래스는 어떻게 구성해야 효율적일지, 여기서 무기가 추가되고 도전과제가 변경된다면 어떻게 될지와 같은 실전적인 사례를 들어 디자인 패턴의 유용성을 설명하는 부분은, 디자인 패턴에 대한 지식이 부족한 나도 쉽게 이해할 수 있었다.
체계적인 이론을 다루면서도, 한편으로는 딱딱한 이론의 나열이 아닌, 쏙쏙 와닿는 사례들을 통해 설명을 함으로써, 초심자들도 거부감 없이 접할 수 있게 게임 개발의 전반을 다루는 책이라는 생각이 들었고, 그렇기에 게임 개발을 시작해보고 싶은 사람이 있다면 가장 먼저 추천하고 싶은 책이기도 하다. 이 책은 단순히 이론을 알려주는 것을 넘어, 독자로 하여금 자신만의 게임을 만들 수 있는 자신감을 불어넣어 준다. 누구나 한번쯤은 상상해봤을 "내가 만든 게임"을 현실로 만들어보고 싶다면, 이 책이 좋은 첫걸음이 되어줄 것이다. 읽고 난 후에도 책장에 꽂아두고 필요할 때마다 다시 꺼내 보게 될, 그런 값진 책이다.
목차
CHAPTER 1 개발 환경 구성과 게임 세계 이해
1.1 기본 프로그램 설치
_유니티 엔진 설치
_개발 도구 설치
1.2 게임 세계
_2차원 그래픽
_3차원 그래픽
_UI
CHAPTER 2 수학과 물리
2.1 왜 배워야 할까?
2.2 위치와 이동
_화면과 픽셀
_좌표
_벡터
_공간
_벡터의 기본 연산
_캐릭터의 이동 구현
2.3 각과 회전
_게임에서 각이 필요할 때
_각의 표현
_삼각함수
_삼각함수의 대칭
_조이스틱으로 이동 구현
_원형 이동
2.4 적과의 대치
_벡터의 내적
_벡터의 외적
2.5 다양한 예시 만들기
_Easing 그래프
_발판 움직이기
_그 외 해볼 만한 것들
CHAPTER 3 게임 프로그래밍에 필요한 기법
3.1 왜 배워야 할까?
3.2 시간이 불연속적이라고?
3.3 팩맨이란? 그리고 우리가 구현할 게임은?
3.4 랭킹 시스템 구현
_버블 정렬
_시간 복잡도
_그렇다면 효율적인 정렬은?
_힙, 트리, 링크드 리스트... 결국, 자료구조
_랭킹 구현에 필요한 마지막 자료구조
3.5 AI의 길 찾기 구현
_DFS와 스택
_BFS와 큐
_다익스트라와 A*알고리즘
3.6 충돌 처리 알고리즘
_원형 충돌 알고리즘
_AABB 알고리즘
_Swept AABB 알고리즘
_OBB 알고리즘
_Convex Hull을 만드는 방법
3.7 정리 그리고 효율에 관한 팁
[부록 A] 배워두면 좋은 게임 알고리즘
A.1 이진 공간 분할법
A.2 셀룰러 오토마타
A.3 최소 비용 신장 트리
A.4 크루스칼 알고리즘
A.5 프림 알고리즘
[부록 B] 정렬 알고리즘
B.1 버블 정렬
B.2 선택 정렬
B.3 삽입 정렬
B.4 퀵 정렬
B.5 병합 정렬
B.6 힙 정렬
CHAPTER 4 게임 프로그래밍 방법론
4.1 왜 배워야 할까?
4.2 객체 지향 프로그래밍
_객체 지향 프로그래밍이란?
_객체란 무엇인가
_클래스와 인스턴스
_객체의 포함과 상속
_다형성
_추상 클래스와 인터페이스
_캡슐화와 정보 은닉
4.3 게임 디자인 패턴
_디자인 패턴의 이해
_어떤 무기로 공격하지? - 상속, 전략 패턴
_도전 과제 달성률 100% - 옵저버 패턴
_걷고 뛰고 공격하는 캐릭터의 상태 - 상태 패턴
_BABO IS ME - 커맨드 패턴
4.4 안티 패턴
_주석을 지워버려라
_문장처럼 자연스럽게 읽히는 코드를 작성하자
_예상 가능한 혹은 예상치 못한 버그에 예외를 사용하자
_예외를 조용히 처리하지 마라
_웬만하면 상속 대신 인터페이스를 사용하라
_최적화는 지금 하지 마라
_악취가 나는 코드는 탈취제를 뿌리자
_서드파티 라이브러리를 조심하자
_싱글턴 패턴 사용을 주의하자
'리뷰 > 도서, 강의 리뷰' 카테고리의 다른 글
[도서 리뷰] AI 트루스 (6) | 2024.09.29 |
---|---|
[도서 리뷰] AI 딥다이브 (0) | 2024.08.25 |
[리뷰] 러닝 깃허브 액션 (0) | 2024.06.22 |
[리뷰] 개발자를 위한 커리어 관리 핸드북 (0) | 2024.05.24 |
[리뷰] 챗GPT API를 활용한 챗봇 만들기 (1) | 2024.04.27 |
댓글