메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

한 권으로 배우는 게임 프로그래밍

수학과 물리, 자료구조와 알고리즘, 디자인 패턴으로 익히는 게임 개발 필수 지식

한빛미디어

집필서

판매중

  • 저자 : 박태준 , 박효재 , 윤하연
  • 출간 : 2024-10-28
  • 페이지 : 336 쪽
  • ISBN : 9791169213035
  • 물류코드 :11303
  • 초급 초중급 중급 중고급 고급
4.9점 (19명)
좋아요 : 706

게임 개발자에게 필요한 것은
화려한 포트폴리오가 아닌 체계적인 이론 지식!


이 책은 특정 엔진이나 기술에 국한되지 않고 게임 개발의 전반적인 개념과 지식을 다룬다. 이를 통해 게임 세계가 어떻게 만들어지는지 이해하고, 다양한 게임 장르와 플랫폼에 적용하는 능력을 기를 수 있다. 게임 개발을 처음 접하는 이도 쉽게 이해할 수 있게 어려운 수학이나 알고리즘은 최대한 간단하게 설명하고, 다양한 예제 코드를 활용해 접근성을 높였다. 단순 엔진 사용법이 아닌 게임 개발의 본질을 이해하고 자신만의 게임을 창작하는 데 필요한 자신감을 얻게 될 것이다.
 

박태준 저자

박태준

주식회사 미소게의 총괄 디렉터 겸 기술이사. 일본 쓰쿠바 대학 공학시스템학류를 졸업했다. 취미는 게임과 프로그래밍이며, 특기 또한 게임 프로그래밍인 괴짜 게임 개발자다.
초등학교 시절부터 프로그래밍을 계속해왔으며 대학 졸업 이후 컴투스와 컴투버스를 거쳐 작은 스타트업에 이직했다. 그 후 세상 모든 게임의 재미가 다 들어간 궁극의 게임을 만들겠다는 집념으로 직장을 포기하고 창업을 결심하게 되었다. 항상 좋은 설계란 무엇일까에 대해 고민하며 게임 개발 효율화와 관련된 방법론을 연구하는 중이다.

박효재 저자

박효재

게임 클라이언트 프로그래머. 서강대학교에서 전자공학을 전공했다. 현재는 팀 테트라포드에서 스테퍼 시리즈를 개발 중이다. 게임 개발 외에도 유니티 인증 강사(Unity Certified Instructor) 2기로서 강의, 강연을 통해 지식과 경험을 공유하고 있다. 또한 틈만 나면 게임 잼에 참가하여 새로운 시도와 아이디어를 시험해보고 있다. 항상 재미있는 게임을 개발하는 것을 목표로 삼고 있으며, 끊임없이 노력 중이다.

윤하연 저자

윤하연

1인 인디 게임 개발자. 스타트업, 데브캣에서 게임 프로그래머로 활동하다가 홀로서기를 시작했다. 일로 게임 개발을 하기 전에도 작은 인디 게임 팀에 참여하거나 1인 개발을 즐겨 했다. 작은 규모의 게임을 만드는 것에 관심이 많고 그를 위한 공부를 꾸준히 해나가고 있다.

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 안티 패턴 
___주석을 지워버려라 
___문장처럼 자연스럽게 읽히는 코드를 작성하자 
___예상 가능한 혹은 예상치 못한 버그에 예외를 사용하자 
___예외를 조용히 처리하지 마라
___웬만하면 상속 대신 인터페이스를 사용하라
___최적화는 지금 하지 마라 
___악취가 나는 코드는 탈취제를 뿌리자 
___서드파티 라이브러리를 조심하자
___싱글턴 패턴 사용을 주의하자

수학과 물리부터 디자인 패턴까지 
한 권으로 마스터하는 게임 개발 이론
 

이 책은 엔진 설치 방법부터 디자인 패턴까지 게임 개발에 필요한 실무 지식을 체계적으로 안내한다. 각 이론이 언제 어디에 쓰이는지, 어떤 원리로 게임이 제작되고 구동되는지 깊이 있게 접근할 수 있도록 구성했다. 수학과 물리는 좌표와 벡터부터 설명하며 원리를 이해할 수 있도록 하고, 자료구조는 코드 예제와 함께 실무에 바로 적용할 수 있게 안내한다. 마지막으로 디자인 패턴과 객체 지향적 접근을 통해 실무자들이 현장에서 실제로 사용하는 다양한 기법을 상세히 설명한다. 친근한 말투, 다채로운 일러스트가 더해져 신입 개발자는 물론 비전공자도 게임 개발에 더욱 흥미를 가질 수 있도록 하며 포트폴리오나 면접을 준비하는 취준생에게는 방향성을 제시한다.

 

★이 책의 주요 내용

  • 2차원과 3차원 그래픽
  • 사용자 인터페이스(UI)
  • 화면과 픽셀, 좌표
  • 벡터 기본 연산, 삼각함수
  • Easing 그래프
  • 랭킹 시스템, AI 길 찾기 구현
  • 충돌 처리, 정렬 알고리즘
  • 객체 지향 프로그래밍
  • 게임 디자인 패턴, 안티 패턴

 

★먼저 읽은 베타리더들의 한 마디

  • 요람에서 무덤까지, 즉 엔진 설치부터 프로그래밍 방법론까지 모든 걸 알려준다. _김이현 님
  • 실제 작동하는 코드 예제와 친절한 주석, 상세한 부가 설명으로 게임 개발을 쉽게 이해할 수 있다. _김태규 님
  • 앞으로 무엇을 배워야 하는지, 어떻게 생각해야 하는지 등 사고를 넓힐 기회를 열어준다. _김영무 님
  • 게임 개발에 관한 지식을 이론뿐만 아니라 그림과 예시를 통하여 쉽고 재밌게 전달하는 책. _윤동환 님
  • 스스로 게임 개발자의 길이 맞는지 점검해볼 수 있는 훌륭한 도서! _추상원 님

한 권으로 읽는 게임 프로그래밍 책을 읽게 되었다. 기존에 알고 있던 내용이 많아서 가벼운 마음으로 리마인드 할 겸 읽을 수 있었다.

 

기본 프로그램 설치에 대해 상세히 설명해 준다. 그리고 수학과 물리에 대한 간단한 소개를 하면서 왜 배워야 하는지에 대해 친절히 설명해 주고 있다. 이후 배워두면 좋은 알고리즘에 대한 내용을 소개한다.

 

프로그래밍을 배우고 이후 짜임새를 다지는데 시작이라 할 수 있는 객체 지향 프로그래밍, 디자인 패턴에 대한 내용이 나온다. 다시 한번 읽으며 기본기를 다질 수 있었다.

 

이 글은 한빛미디어로 부터 책을 증정받아 작성되었습니다.

책 제목은 '한 권으로 배우는 게임 프로그래밍' 인데 사실이 것은 어느 정도, 책제목적 허용(?)이 가미된 제목임을 인지할 필요가 있다.

읽어 보면 알겟지만 마치 엘릭서와 같은 책보다는 전반적인 게임 프로그래밍 교양서에 가까운 책임을 알 수 있을 것이다.

입문에 가까운 책이며 이 책으로 100% 이해 할 수 없으며 저자 또한 독자가 그러길 바라지는 않는다.

읽다가 더 자세히 알고 싶으면 기록해두고 모르는 것도 헤메지 말고 일단은 그냥 넘어가도록 하지.

이 책을 후루룩 읽고 나서 그 뒤에도 모르는 내용, 궁금한 내용은 다시 전문 서적을 찾아 읽기를 권한다.

그래서 나는 이 책을 대학 학부나, 고등학생 친구들에게 권하고 싶다.

이 책이 게임 프로그래머를 지망하는, 또는 한번은 생각해본 친구들에게 공부의 동기와 자극이 될만 할 것 같다는 생각이 들었다.
 

  한 권으로 게임 프로그래밍을 배운다는 것 자체가 사실 불가능하다. 대신 기초는 쌓을 수 있다. 눈으로 보는 가시적인 성과를 위해 무작정 따라 하기를 배우는 것은 무료하지 않게 공부할 수 있는 좋은 방법이지만 어느 순간 보면 다시 처음으로 돌아오게 되어 있다. 하지만 그런 방법도 나쁘지 않다고 생각한다. 숲을 보고 나무를 보는 것도 좋으니까. 어쩌면 이 책은 반대라고 얘기할 수 있다.

  기본을 설명하면 대체로 무료하고 딱딱하기 쉬운데 생각보다 쉽게 풀어내고 있다. 읽다 보면 '굳이?'라는 생각이 들기도 하지만 처음 보는 사람에게 필요한 내용도 차근히 설명한다. 게임 프로그래밍에서 필요한 건 뭘까? 를 고민할 때 필요한 방향성 같은 내용을 담고 있다고 할 수 있다.

  수포자가 많다고들 하지만 게임 프로그래밍에 수학은 반드시 필요하다. 특히 공간을 설명하는 수학은 벡터나 회전을 설명할 수 있는 삼각함수는 필수라 할 수 있다. 그런 내용을 2장에서 다뤄 준다. 그다음으로는 게임에서 자주 쓰일 듯한 알고리즘에 대해 얘기한다. 랭킹 구현이라든지 자동 경로 탐색 같은 것들이 들어 있다. 그리고 마지막으로는 프로그램의 공통의 레시피라고 할 수 있는 디자인 패턴과 피해야 하는 안티 패턴 등을 설명한다.

  어떻게 보면 프로그래밍 설명일 수도 있다. 단지 설명을 게임 캐릭터의 움직임이나 정보를 예시를 들뿐이다. 프로그램은 대체로 대동소이한 것도 사실이다.

  책은 유니티를 기본으로 설명하고 있다. 예제 또한 유니티로 되어 있지만 그 구조를 설명하는 건 C#이나 C++과 크게 다르지 않기 때문에 이해가 어렵지는 않다. 책은 게임을 만들겠다는 것보다 게임을 만들기 위한 기초를 다지는 쪽으로 설명되어 있다.

 한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

오늘 이야기할 책은 《한 권으로 배우는 게임 프로그래밍》이다. 게임 기획자가 프로그래밍을 배워야 하는가에 대한 논쟁은 항상 존재하지만, 나는 배우는 것이 유리하다고 생각한다. 여기서 배움의 목적은 직접 코드를 작성하기 위함이 아니라, 기획자 본인이 의도한 내용을 프로그래머들이 실현할 수 있도록 설명하기 위해 매커니즘을 깊이 이해하는 데 있다.

 

예를 들어, 단순히 캐릭터가 앞으로 걷는 동작을 구현한다고 해도, 단순한 '이동' 이상의 정의가 필요하다. 손과 발의 움직임은 어떻게 표현될지, 이동 속도와 방향은 무엇인지, 멈추는 시점은 언제인지 같은 세부 사항을 고려해야 한다. 이는 단순히 게임을 즐기는 플레이어 관점에서 이해하기 힘든 영역이며, 기획자가 이를 프로그래머와 함께 정의하는 역할을 맡아야 한다.

 

시중에 다양한 프로그래밍 관련 책들이 많이 있지만, 앞서 얘기한 것처럼 매커니즘만 이해하기에는 사실 과한 느낌이 있다. 그래서 보통은 유니티를 비롯해 간단하게 게임을 만들어볼 수 있는 입문서를 추천하는데, 좀 더 개념에 대해 이해하고 싶다면 책 《한 권으로 배우는 게임 프로그래밍》도 좋은 선택인 것 같다.

 

이 책은 총 4장으로 구성되어 있고, 각 장은 게임 프로그래밍을 하기 위한 개발자에게 중요한 이론과 지식을 다룬다. 1장은 개발 환경 구성과 게임 세계의 기본적인 이해를 돕는 내용으로, 2D/3D 그래픽, 사용자 인터페이스(UI), 물리 엔진의 기초를 다루며 초보자도 쉽게 따라갈 수 있는 단계별 구성을 제공한다. 2장은 어려운 수학과 물리를 배우는 것이 아니라, 위치와 이동, 점프 등을 구현하기 위한 기초 개념에 초점을 맞춘다. 벡터, 각도, 회전 등을 실제 코드와 함께 설명하며, 주석과 변수명이 친절하게 쓰여 있어 게임에서 수학과 물리가 실제로 어떻게 활용되는지 이해할 수 있다.

 

3장은 랭킹 시스템 구현을 위한 정렬 로직이나 AI 길 찾기 구현 등 코드보다는 주요 게임 시스템을 예시로 들며 개념 위주의 설명으로 구성되어 있다. 이 장은 프로그래머는 물론이고, 도표를 적절히 활용하여 개발 경험이 없는 기획자도 어느 정도 이해할 수 있는 수준으로 쓰여 있어 매우 유용하다. 마지막으로 4장은 객체 지향의 기본 개념과 게임 디자인 패턴을 다루며, 프로그래밍에서 흔히 저지르는 실수를 피하기 위한 안티 패턴도 포함하고 있다. 코드가 아닌 그림과 개념 위주의 설명으로 초보자도 쉽게 이해할 수 있게 작성되었으나, 일부 프로그래밍 용어는 약간 어렵게 다가올 수 있다. 그래도 기존 프로그래밍 서적과 비교했을 때 확실히 접근성이 뛰어나다.

 

《한 권으로 배우는 게임 프로그래밍》은 프로그래머를 위한 책이면서도, 기획자와 게임 개발에 관심 있는 사람들에게도 훌륭한 참고서가 될 수 있다. 게임 개발에 대해 막연하게 생각했던 개념들이 구체적으로 다가오며, 이를 통해 기획자는 자신의 아이디어를 프로그래머에게 보다 명확히 전달할 수 있을 것이라 생각한다.

 

이 책의 강점은 쉬운 설명이다. 기존 프로그래밍 서적에 비해 훨씬 쉽게 쓰여 있어 초보자도 접근 가능하다. 다양한 게임 시스템을 사례로 들고 있고, 코드와 함께 직관적인 주석 및 변수명이 제공되어 게임 개발의 원리를 이해하는 데 도움을 준다.

 

 

이번에 '나는리뷰어다'를 통해 알아본 책은 게임을 만들어보는 책이 아닌 게임을 만들기 위해 구조와 제작 과정, 원리를 집중적으로 알아보는 개념서와 비슷한 포맷의 책이다. 이를 통해 예전에 게임을 무지성으로 만들어 보던 경험과 교차하여 어떤 장점이 있는지를 상세히 알릴 수 있을 것 같다.

 

 

책의 구성은 4장으로 나뉘어져 있고 1장은 개발 환경 구축하는 방법과 게임이 어떠한 구성으로 만들 수 있는지를 알아보고, 2장에서는 게임을 개발하는데 이용하는 수학과 물리 지식을 알아보고 이를 활용하는 예를 학습할 수 있다. 3장에서는 게임 프로그래밍에 필요한 자료구조와 알고리즘을 학습해보고, 4장에서는 게임 프로그램 설계에 필요한 지식과 활용한 예시를 알아볼 수 있다.

 

구성은 그림 1/3, 설명 1/3, 코드 1/3 정도로 그림이 만화 형식처럼 들어가 있어서 재미있으면서 몰입할 수 있게 한다. 게임을 막 만들때는 어떠한 정석과 규정, 지표 체계가 있는지를 알기 힘든데 책에서는 위치와 이동, 각과 회전 등 초심자는 이해하기 힘든 개념들을 상세한 설명과 그림들을 통해 이해하기 훨씬 수월했다. 책을 통해 정말 초심자라면 알아야 할 지식들을 배우고 앞으로 내가 원하는 게임을 만들기 위해서는 어떠한 분야들을 공부해야할지의 방법을 짚어주기 때문에 시작하는 모든 분들이 읽으면 좋을 책이라고 생각한다.

"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

#한빛미디어 #나는리뷰어다 #게임프로그래밍 #게임지식

나는 어렸을 때부터 게임을 좋아했다. 그때와 달라진 게 하나 있다면 어렸을 때는 마냥 즐겁게 게임만 했지만 지금은 이걸 어떻게 많들었을까라는 생각을 한다는 점이다. 당연하지만 게임도 소프트웨어고 컴퓨터에서 동작하는 프로그램이기에 코드로 만든다. 웹 개발자인 내가 게임 개발 관련해서 알고 있는 점은 유니티, 언리얼과 같은 게임 개발의 핵심 프레임워크가 되는 게임 엔진이라는 것과 주로 C#을 개발 언어로 사용한다는 것이다. 선수지식이 없는 나로선 이 책을 펼치는 것이 마냥 쉽진 않았다.

 

하지만 이 책은 언리얼 엔진 개발 가이드 같은 느낌의 게임 도메인에 국한된 특정 기술 사용법을 다루지 않는다. 대신 게임을 개발할 때 반드시 필요한 기본 개념과 원리에 대해 다룬다. 2D, 3D와 같은 그래픽과 벡터, 라디안 등 수학적 지식, 길 찾기, 충돌 판정 로직에 들어가는 여러 가지 대표적인 알고리즘까지 게임을 구성하는 핵심 요소들에 대해서 가볍지만 쉽고 명확하게 설명한다. 읽으면서 몇 가지 기억에 남는 내용을 정리해 봤다.

  • 게임의 모든 요소는 객체로 표현하고 이는 코드 레벨에서도 그렇다. 조이스틱도 객체고 스틱이 움직일 수 있는 범위를 코드로 구현한다.
  • 캐릭터가 입고 있는 옷이나 모자는 캐릭터 객체의 하위 객체로 구현한다. 그리고 캐릭터 좌표를 기준으로 옷과 모자가 있어야 하는 좌표를 상댓값으로 설정하면 캐릭터가 움직여도 옷과 모자가 있어야 할 위치에 있을 수 있다.
  • 캐릭터가 목적지로 이동할 때 최단 거리를 계산할 때 최단 거리 알고리즘을 사용한다. 단 비교적 유명한 다익스트라 알고리즘은 실시간 게임에서는 연산량이 많아서 다른 알고리즘을 사용한다.

이 책은 게임 개발 관련해서 뭘 모르는지 모르는 사람들에게 알아야 할 내용을 담고 있다. 예시 코드는 C#으로 작성되어 있지만 개발 경험이 있는 분들은 쉽게 이해할 수 있는 수준이다. 무엇보다 특정 개념을 딱 필요한 만큼의 깊이로 설명하는 작가 분들의 필력에 놀랐다. 게임 개발의 본질을 이해하고 자신만의 게임을 창작하는 데 필요한 자신감을 얻게 될 것이다라는 책 소개에 적극 동의한다. 미래에 문득 게임 개발을 해보아야겠다는 생각이 들었을 때 다시 한번 읽어볼 책으로 기억 속에 남긴다.

 

 

한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

 

 

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

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

 

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

 

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

 올해 10월 28일에 출간된, 따끈따끈한 한빛미디어의 신간, '한 권으로 배우는 게임 프로그래밍'이다. 재미있는 것은 제목 그대로 이 책은 '게임 프로그래밍'을 가르쳐 주는 입문서다. 처음부터 끝까지 따라 하면 게임 하나가 딱 완성되는 그런 책이 아니라, 처음부터 끝까지 읽고 공부하면, '게임'이 어떻게 만들어지는지, '어떤 구조'로 만들어져 있고 '어떤 원리'로 구현을 해야 하는지, '이해'를 하고 '구현'할 수 있게 해주는 책이다.

 깜찍한 표지 그림과 제목만 보면, 가볍게 프로그래밍을 핥아주는(?) 책인 것 같아 보이지만, 이 책은 그림만 귀엽고 핥지 않고 제대로 파 준다는 면에서 좋은 책인 것 같다. 이 가볍고 깜찍한 그림은 게임 프로그래밍을 제대로 파면서도 초보자나 비 전공자가 포기하지 않고 쉽게 이해할 수 있도록 도움을 주는 삽화의 캐릭터다.

 책 페이지를 넘겨보면 이 책은 실습 환경을 유니티를 추천하고 있다. 저자의 말대로 이 책은 실습 위주의 실천서가 아닌 이론서에 가깝기 때문에 다른 실습 환경을 사용해도 문제는 없다. 하지만 객체지향의 C#을 기준으로 설명을 하고 있으며, 프레임 기반의 게임 엔진(유니티, 언리얼 등) 동작 방식을 기반으로 하기 때문에 가볍고 무료인 유니티 엔진 환경에서 실습을 하면 보다 편할 것이다.

 한빛미디어의 '한 권으로 배우는 게임 프로그래밍'은 비전공자와 초보자, 입문자에게 모두 추천할 수 있는 책인데, 나도 이 페이지의 그림을 보고 나서 이걸 기획자 후배에게 추천해서 읽게 해야겠다고 생각했다.

UI의 좌표계와 게임 세계 좌표계가 분리되어 있다는 점을, 초보자는 잘 모른다. 이 구조를 알고 기획을 하는 것과 모르고 기획을 하는 것은 엄청난 차이가 있다. 게임 프로그래머뿐만 아니라 제대로 된 구조를 이해하고 기획을 하고 싶은 게임 기획자에게도 너무나도 좋은 책이다.

 책은 총 4개의 장으로 이루어져 있다. 개발 환경 구성과 게임 세계를 이해하는 것이 1장의 내용이고, 외면하고 싶은 수학과 물리가 2장. 게임 프로그래밍에 필요한 기법, 알고리즘과 자료구조 등이 3장. 게임 프로그래밍을 더 잘하기 위한 방법론이 4장으로 되어 있는 구성이다. 이 책이 무엇보다 비 전공자와 입문자, 초보자에게 좋은 이유는 1장의 '게임 세계 이해' 편 때문이다.

프로그래머도 마찬가지지만, 기획자는 시스템과 콘텐츠를 구분하는 것을 어렵게 여길 정도로 게임 세계에 대한 이해가 부족하다. 그런 '유저' 상태의 사람들에게 이 책의 '게임의 구조'를 이해시키는 친절한 그림과 친근한 설명은 게임 개발자로서의 문턱을 대폭 낮춰준다.

 벡터의 기본 연산과 함께 다루는 몬스터 스폰 예제. 몬스터 스폰 관련해서 예전에 NDC 슬라이드를 보고 현웃 터진 적이 있었다. 잘 모르는 기획자가 몬스터 10마리를 스폰 해달라고 프로그래머에게 서술형 문장으로 요청을 하고, 그러면 프로그래머는 몬스터를 같은 좌표 위에 일렬로 10마리를 세워서 스폰 시킨다는 슬라이드를 보고 엄청나게 웃었었는데 그게 우스갯소리가 아니고 실제로 일어나는 일이라는 것을 그로부터 일 년 뒤 학생들을 가르치면서 알 수 있었다.

 수학과 물리는 너무너무 보고 싶지 않겠지만, 게임 프로그래밍에서 수학과 물리를 아는 것과 모르는 것은 엄청난 차이를 보인다. 신입이고 지망생이라면 모를까 경력이라면, 프로그래머든 기획자든 게임 수학과 물리를 모르고 업무를 하는 건 비효율적이 된다.

그다지 두껍지 않은 책에서 정말 게임 프로그래밍에 필요한 것은 모두 알려주는 좋은 책이다.

 나는 보통 이 그래프를 UI 애니메이션을 기획하고 작업자에게 전달할 때 사용한다. 기획자가 아무리 입으로 떠들어 보고 손짓 발짓을 해 보았자, 기획자 머릿속에 있는 걸 작업자가 이해할 수 있을 리가 없다. 이럴 때 기획서에 그래프를 추가해서 던져주고 개발해 주세요!라고 하면 서로가 만족하는 결과물을 만들 수 있다.

입으로 "디용~디용~하면서  움직이게 해주세요."라고 해도, 작업자는 모른다는 거다.

 3장에서는 게임 프로그래밍에 필요한 기법을 배운다. 알고리즘과 자료구조다. 사실 전공자라면 1학년 때 배우는 게 자료구조이고, 알고리즘도 2학년 또는 3학년 때 끝낸다. 학교마다 교과목은 조금씩 다르지만, 컴공이라면 자료구조와 알고리즘은 반드시 빠지지 않을 정도로 이 두 가지는 프로그래머에게 매우 중요하다.

자료구조는 기획자에게도 매우 중요하다. 신입 기획자 포트폴리오를 보고 있으면, 자료구조에 대한 이해 없이 자료형을 사용해서 감점을 먹는 친구들이 있다. 알고리즘도 그렇다. 서울로 가는 길은 여러 가지가 있지만, 알고리즘을 알고 가는 것과 모르고 가는 것은 천지차이이기 때문에, 게임 프로그래밍을 목표로 한다면 알고리즘은 필수다.

 책에서 충돌체에 대한 개념을 다루고 있는데, 기획자도 신입 프로그래머도 이걸 모르는 경우가 너무 다반사라서, 정말 전혀 모르는 생초보를 위한 책이라는 생각이 들었다. 게임 세계에 대한 이해가 전혀 없는 사람에게 '한 권으로 배우는 게임 프로그래밍'은 게임 세계를 친절하게 알려주고, 그 세계를 만들기 위한 꼭 필요한 정보들을 자연스럽고 친숙하게 익힐 수 있게 도와준다.

비전공자 게임 프로그래머 지망생에게 무척 좋은 책이지만, 비전공자인데 기획자를 선택한 사람들에게 정말 정말 좋은 책이라고 생각된다. 기획팀에 추천 도서로 등록해서 읽게 해야겠다.

 가볍게 읽히고 친절한 전공 책(?)인 만큼, 전문서적답게 뒤 페이지에는 찾아보기 인덱스가 준비되어 있으니 다 읽은 후에도 가까이 두고 필요한 내용을 찾아보기 좋다. 오랜만에 보기 드문 매우 쓸모 있는 책이었다.

“한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

Image

 

게임 프로그래밍에 관심이 있는 사람이라면, 유니티 엔진과 언리얼 엔진은 한번쯤 들어봤을 것이다. 이 책은 유니티 엔진을 이용해서 게임을 만드는 과정에 대해서 소개하고 있다. 다양한 게임을 많이 해보았지만, 유니티 엔진에서 무료 개인 사용자용 버전을 제공해서 개발을 가능하도록 한 것은 모르고 있었다. 이를 통해, 간단한 게임 개발을 해볼 수 있을 것으로 보인다.

게임 내에의 시간이 현실에서의 시간 개념과는 다르다는 점을 배웠다. FPS(초당 프레임)은 화면에 초당 프레임이 몇개 표시되는지 세는 단위인데, 프레임 수가 많으면 좀더 부드러운 게임을 할 수 있다. 여기에서 발생되는 문제가 버그라고 할 수 있는데, 어떤 물체가 얇은 벽을 통해서 갈 때에 속도가 매우 빠르면, 다음 프레임에서 벽을 통과해버리는 현상이 일어날 수 있다. 이러한 문제들은 현재 지정될 위치와 이전 위치 사이를 계산해서 물체가 있는지 확인하는 방식으로 해결할 수 있다고 한다.

또, 랭킹 시스템이 점수 순서대로 등수를 나열하면 되는 줄 알았는데 알고리즘을 사용해서 나열한다는 것을 알게 되었다. 버블정렬, 선택 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬, 합 정렬 등 구현이 간단하지만 비효율적인 정렬과 구현이 어렵지만 효율적인 정렬을 구분하는데, 정렬부터 다익스트라 알고리즘까지 자료구조에서 배운 개념들을 정리하면서 추가적으로 게임 프로그래밍에 필요한 알고리즘이 소개되어있어서 공부에 도움이 되었다.

책에서 가장 기억이 남았던 부분은 '모든 기획은 엎어지기 마련이다.'라는 부분이었다. 개발부터 최적화에만 신경을 쓰면 얻는 것보다 잃는게 많다는 것이다. 최적화에 신경을 많이 쓰기 보다는 좋은 설계로 구현을 먼저 해놓고, 병목이 생긴 부분부터 해결하는게 맞다고 저자는 말한다. 위에서 말한 FPS가 낮으면 유저들은 불쾌한 경험을 하게 되고, FPS가 높으면 쾌적하게 게임을 할 수 있게 된다. 폭이 가장 좁은 병목 지점의 성능부터 개선한다면 게임 플레이 경험이 쾌적해질 수 있다.

이 책을 통해 게임 개발의 전반적인 개념을 배울 수 있을 것이다. 게임에 적용되는 프로그래밍의 문법과 알고리즘을 익힌다면 인디 게임 개발자의 기본기는 다져질 것이라고 생각한다. 책 뒷면에 쓰인 추천서처럼, 게임 개발을 하고 싶지만 어떻게 시작할지 몰라 망설이고 있는 이들에게 훌륭한 길잡이가 되어줄 것이다.​

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

각 시작의 챕터에서 왜 이것을 배워야 하는지 설명해 주는 것이 인상깊었다. 또 게임 개발에 대해 아무것도 모르는 사람으로서 다양한 그림을 통해서 내용을 쉽게 설명해줘서 재미있게 읽을 수 있었다. 서버 개발자로서 주로 개발을 해왔기 때문에 게임 개발이라고 하면 막연했는데 이 책을 통해서 게임 개발자가 어떤 일을 하는지 알 수 있었다.

 

게임 개발자가 어떤 일을 하는지 궁금한 사람들, 그리고 게임 개발에 입문하려는 사람들에게 추천하고 싶은 책이다.

이 책은 체계적이고 직관적인 구성으로 초보자도 이해할 수 있는 쉬운 설명과 함께 심화 내용까지 다루며, 단계별로 학습할 수 있도록 구성되어 있다. 각 장의 내용은 실제 게임 개발에서 자주 접하게 되는 문제를 다루고 있어, 실무에 가까운 꼭 필요한 내용들을 살펴볼 수 있다. 게임 프로그래밍은 수학, 물리 등에 대한 다양한 응용이 들어가기 때문에 복잡한 알고리즘에 대한 이해하 필요한데 이 책은 이런 기본기를 가장 중요한 포인트로 작성되었다. 그럼, 챕터별로 살펴보겠다.


CHAPTER 1: 개발 환경 구성과 게임 세계 이해

책의 첫 장은 초보자를 위한 훌륭한 출발점이다. 유니티 엔진과 개발 도구 설치에 대한 설명이 상세하고 직관적이며, 2D 및 3D 그래픽의 차이점과 UI 구성 요소에 대한 소개가 게임의 세계를 이해하는 데 필수적인 정보를 제공한다.
이 장을 통해 독자는 개발 환경을 설정하고, 게임 세계의 기본 개념을 명확히 익힐 수 있다.


CHAPTER 2: 수학과 물리

게임 개발에서 중요한 수학과 물리의 기초를 친절하게 풀어낸 부분이다. 벡터와 좌표, 삼각함수와 같은 기초 개념을 실제 예제와 함께 학습할 수 있어, 이론과 실습의 균형을 잘 맞춘다.
특히, 적과의 대치에서 다루는 벡터의 내적과 외적, Easing 그래프와 같은 심화 예제는 독자가 게임 내에서의 물리적 움직임을 더 깊이 이해하도록 돕는다.


CHAPTER 3: 게임 프로그래밍에 필요한 기법

랭킹 시스템, AI의 길 찾기, 충돌 처리 알고리즘과 같은 실제 게임 개발에 자주 쓰이는 기술을 상세히 설명한 이 장은 실질적인 문제 해결 능력을 키운다.

  • 랭킹 시스템 구현에서 자료구조와 정렬 알고리즘을 다루며, 성능 최적화를 위한 핵심 개념을 배울 수 있다.
  • AI의 길 찾기는 DFS, BFS, 다익스트라, A*와 같은 경로 탐색 알고리즘을 상세히 설명하며 AI 설계에 필요한 기반을 제공한다.
  • 충돌 처리 부분은 게임 개발의 필수 기술인 충돌 탐지 알고리즘을 다양한 방식으로 설명하며, 직관적인 예제와 코드로 실무적 활용도를 높인다.

CHAPTER 4: 게임 프로그래밍 방법론

마지막 장은 게임 프로그래밍의 철학과 설계 원칙을 다룬다.

  • 객체 지향 프로그래밍에서는 클래스, 상속, 다형성 등의 개념을 명확히 설명하며, 실습과 함께 이해를 돕는다.
  • 디자인 패턴은 실무에서 자주 활용되는 전략 패턴, 옵저버 패턴, 상태 패턴 등을 게임 사례와 결합해 설명하여 개발자의 응용력을 높인다.
  • 안티 패턴은 개발 시 피해야 할 실수를 상세히 다루며, 실무에서 발생할 수 있는 문제를 미리 예방할 수 있도록 구성한다.

이 장은 단순한 프로그래밍 기술을 넘어, 어떻게 더 좋은 코드를 작성할 것인가에 대해 고민하게 만든다.

이 책을 읽을 때 미리 이런 내용을 알아두면 좋겠다.


1. 프로그래밍 기초 지식

책의 많은 내용이 코딩을 중심으로 진행되므로, 다음의 프로그래밍 기초 지식을 알고 있어야 한다.

  • 변수와 자료형
    변수 선언, 데이터 타입의 개념 (정수, 문자열, 배열 등)
  • 조건문과 반복문
    if, for, while 등의 기본 구조
  • 함수 작성 및 사용법
    파라미터와 반환값을 이해하고, 함수를 작성할 수 있는 능력
  • 기본 자료구조
    배열(Array), 리스트(List), 딕셔너리(Dictionary)와 같은 기초 자료구조에 대한 이해

2. 수학과 물리 기초

게임 개발에서 중요한 수학과 물리 개념이 책에서 많이 등장하므로, 기초적인 이해가 필요하다.

  • 기하학
    • 좌표계와 좌표의 개념 (2D/3D)
    • 삼각함수 (사인, 코사인, 탄젠트)
    • 벡터의 기본 개념과 연산 (덧셈, 내적, 외적)
    • 각도와 라디안 단위
  • 물리학
    • 위치, 속도, 가속도의 개념
    • 충돌과 반발(물리엔진 기본 이해)

3. 게임 엔진 사용 경험

책에서 유니티를 사용하므로, 유니티 엔진에 대한 기본적인 사용 경험이 있다면 학습에 큰 도움이 된다.

  • 유니티 기본 개념
    • 유니티 인터페이스 및 프로젝트 생성 방법
    • 씬(Scene)과 게임 오브젝트(Game Object)의 기본 사용법
    • 컴포넌트(Component)의 개념
  • C# 스크립팅 경험
    • 유니티에서 사용하는 C# 스크립트를 작성해본 경험이 있다면 학습이 훨씬 수월하다.

4. 알고리즘과 자료구조 기초

랭킹 시스템, AI 길 찾기, 충돌 처리 등에서 알고리즘과 자료구조가 자주 등장하므로, 다음과 같은 기본 지식을 알고 있어야 한다.

  • 정렬 알고리즘
    버블 정렬, 선택 정렬 등 기본적인 정렬 알고리즘 이해
  • 자료구조
    트리(Tree), 스택(Stack), 큐(Queue), 힙(Heap)과 같은 자료구조의 기본 개념
  • 그래프 탐색 알고리즘
    DFS(깊이 우선 탐색), BFS(너비 우선 탐색)

5. 객체 지향 프로그래밍(OOP)

4장에서 객체 지향 프로그래밍(OOP)을 심도 있게 다루므로, 다음 개념을 미리 이해하고 있으면 좋다.

  • 클래스와 객체
    클래스의 정의와 인스턴스화
  • 상속
    부모 클래스와 자식 클래스의 관계
  • 다형성
    메서드 오버라이딩과 인터페이스의 기본 개념
  • 캡슐화
    접근 제어자(public, private, protected)의 역할

6. 게임 개발에 대한 관심과 경험

  • 간단한 2D 또는 3D 게임을 만들어 본 경험이 있거나, 간단한 게임 로직을 작성해본 경험이 있다면 책에서 다루는 내용을 더 쉽게 이해할 수 있다.
  • 게임의 구조(메뉴, 캐릭터, 적, 점수 등)에 대한 기초적인 이해가 있다면 좋다.

책 한권으로 모든 내용을 배울 수는 없지만 필요한 핵심 내용에 대해서 이해하기에는 충분한 책이지 않나 싶다.

이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

"와, 게임 개발 입문서로서는 정말 딱 좋은데?"

책을 다 읽고 나서 느낀 점이다. 문득, 대상 독자는 고교 과정을 이수한 사람이라면 충분히 이해할 수 있는 내용이라고 판단했다. 다만, 수학 공부를 한 지 좀 시간이 지나서 희미한 개념만 알고 있다면 좀 갑갑하겠다는 생각은 들었다. 내가 그랬으니까.

뜬금없이 왜 이런 얘기를 하냐고? 2장에 나오는 필수적인 수학 내용에서 벡터 연산 내용이 쉽게 이해되지 않아서다. 방향과 힘의 크기를 나타낸다는 지식은 있다. 수학보다는 물리 때문에 더 기억하고 있는 내용이다. 그런데 내적과 외적 용어가 나오니 내가 이런 걸 공부한 적이 있었나 싶을 정도였다. 이를 테면, 내게는 이런 지식들이 허들이 됐던 거다.

그렇지만 비교적 내용을 쉽게, 적당히 설명한다. 아무래도 모교 선생님들에게 감사를 표한 걸로 봐서 직간접적으로 도움을 받았던 게 아닐까 싶다. 왜냐하면 내용 전달하는 게 지식의 나열이 아니라 "설명"하는 문장들로 가득했기 때문이다. 속된 말로 치고 빠질 포인트를 잘 잡았다는 느낌? 다시 말해, 선생님이 학생들을 가르치기 위한 교습법대로 진행했다는 느낌이 남아 있다.

1장은 개발 환경을 구성하는 방법을 개략적으로 알려주고 게임 세계를 이해하기 위한 밑밥을 깔아놨다. 개념을 전달하기위해 간단히 적어두다보니 본인 입장에선 유니티를 처음 써보는데 어떻게 해야 할지 감이 오지 않아 애를 먹었다. 쉽게 되지 않다보니 스트레스 받을 것 같아서 과감하게 설치하고 띄워만보고 계속 책을 읽어나갔다. 읽고 나면 어떻게든 되겠지 싶어서다.

2장은 필요한 수학과 물리 개념을 알려준다. 게임의 가장 기초적인 내용과 이와 관련된 수학과 물리 개념들을 풀어나가는 솜씨가 괜찮았다. 때로는 너무 쉬운 거 아니야? 싶을 정도의 수준이지만 쉽고 깔끔하게 설명을 해주면 이해하는 데 무척 도움이 된다. 본인은 아는 내용도 꽤 됐지만 그럼에도 재밌게 읽어나갈 수 있었다. 삼각함수, 사인, 코사인, 탄젠트. 그림과 간략한 설명을 해주니 이해하는 데 무리는 없었다. 만약 고교 졸업 또는 일반 수학을 공부하고 대학 졸업한지 얼마 되지 않았다면 전혀 무리 없이 이해할 수 있는 수준이다. 앞서 얘기한 것처럼 벡터 연산과 내적, 외적은 조금 어렵다는 느낌이었지만, 갓 졸업한 사람들에게는 큰 어려움은 아닐 테다.

3장은 매우 중요한 개념을 알려준다. 이건 놓치면 안 되는 부분이다. 시간의 불연속성. 자주 게임을 하면서 놓치기 쉬운 부분일 듯 싶다. 하지만 절대 놓치면 안 되는 부분이다. 황당한 게임 상황을 겪지 않으려면 잘 고려해야 하는 부분인데, 막연하게만 알던 부분을 비교적 깔끔하게 이해할 수 있었다. 자료구조는 배웠으니 됐고, 알고리즘은 항상 볼 때마다 까다롭다. 기초적인 알고리즘은 대략 알고 있지만, 잘 안 썼던(그런데 왜 써야 하는지도 잊어버렸던) 알고리즘들을 다시 살펴보게 됐고, 특히 게임 세계에서 많이 쓴다는 알고리즘은 이번에 처음 보게 됐다. 특히 충돌 처리 알고리즘. 보통 학교에서는 이런 것보다는 정렬, 탐색 알고리즘을 더 비중있게 배웠던 것 같다. 또는 암호화 알고리즘이라든지. 그런데 충돌 처리 알고리즘은 생소했다. 그래서 이해하려고 더 애쓴 것 같다. 완벽히 이해한 건 아니니, 추가로 책이나 인터넷에서 검색을 해봐야 할 것 같다.

4장은 방법론을 얘기하는데, 객체 지향 개념을 리마인드한 것 같다. 그것도 어렵지 않게 말이다. 내공 없이는 저렇게 풀어나가기 어려울 텐데, 라는 생각이 들었다. 디자인 패턴도 몇 가지 다시 보거나 새로 알게 됐고, 안티 패턴에서 "최적화 안 하는 게 답"이라는 맥락의 표현도 봤다. 다른 책에서 이른 최적화는 독이 된다는 내용과 통하는 것 같다. 사실 실무에서도 많이 느끼는 부분이기도 하다. 왠만한 건 머신 성능이 좋아서 잘 받쳐주니까 돌아는 가게 하고, 필요한 부분을 최적화 하면서 전반적으로 균형을 맞춰주는 게 효율이 좋았다. 내용을 잘 파악해야 개선이 되는데 그런 거 없이 섣불리 최적화 했다가 문제가 많이 생기는 직간접적인 경험도 해봤으니까.

어떻게 보면 4장도 이미 다른 최적화 관련 책이나 기술 서적에서 많이 언급되는 내용들을 가급적 평이하게 설명하는 것도 같다. 이런 내용을 보면서 선생님들의 도움이 아니었을까 하는 추측을 해봤다. 정말 그랬는지는 알 수 없지만.

간만에 맘에 드는 게임 개발 입문서를 봤다. 가끔 게임 개발을 해보고 싶어서 책을 찾아보면 내 입장에서는 중급자를 위한 내용들로 가득 찬 책들만 있었다. 비교적 입문서 성격을 가졌다 해도 목차를 보면 이미 필드에서 뛰고 있는 사람들을 위한 책처럼 보였다. 비 게임 개발자로서 허들로 느낄 수 밖에 없었는데, 이 책은 매우 좋은 입문서 역할을 해줄 것 같다.

여기 내용을 숙지하고 조금씩 게임 개발 첫 발을 뗄 수 있을 것 같아 즐겁다. 저자들의 목표가 달성되어가는 소리가 들리는 듯하다.

이 책은 게임 프로그래밍을 처음 접하는 사람에게는 다소 진입장벽이 높을 순 있다. 수학, 물리부터 알고리즘, 자료구조, 객체지향 등등 어느정도의 지식이 있다면 무리 없이 읽어 나갈 수 있다. 하지만 그림과 친절한 설명이 포함되어 있으니 인내심 을 갖고 여러번 읽다 보면 될 것 같다. 나도 이 책을 바탕으로 빠른 시일내에 나만의 게임을 개발해봐야겠다.

한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다.

 

 

‘한 권으로 배우는 게임 프로그래밍’이라는 제목처럼 게임을 만드는데 필요한 필수 지식이 담겨 있습니다. 수학, 물리, 프로그래밍 기법, 그리고 방법론까지 다양한 개념을 다루고 있지만, 이 책의 가장 큰 강점은 쉬운 설명과 친근한 접근법입니다.
귀여운 캐릭터와 숏 컷 설명은 어렵고 낯선 지식들에 보다 친근하게 다가갈 수 있도록 해줬습니다. 또한, 물리나 수학적 지식은 다양한 도형과 함께 다양한 방법으로 설명해주어 쉽게 이해할 수 있었습니다. 또한 Unity 엔진을 통해 게임 로직을 구현하는 과정을 하나하나 자세하게 보여주어 쉽게 따라할 수 있게 하였습니다. 이를 통해 앞서 배운 개념들이 실제 게임 개발에서 어떻게 구현되는 지 알 수 있어 책을 읽는 것에 열의를 더해주었습니다.


또한, 이 책은 참고서의 역할도 할 수 있는 책입니다. 책에서는 공식을 외우려는 노력보다는 우선 이해하려고 노력하고 나중에 책갈피를 통해 찾아보라고 했습니다. 이 말처럼 각각의 공식, 개념들이 도출되기까지의 과정을 이해하고 체크한 다음 필요할 때 참고하면 많은 도움이 될 것입니다.


이 책은 게임 개발을 처음 접하는 사람들에게 매우 유용한 가이드가 됩니다. 기초적인 프로그래밍 개념부터 시작해, 게임 엔진 사용법, 물리 엔진, AI 기술까지 체계적으로 다루고 있어, 입문자와 초급 개발자 모두에게 알맞습니다. 특히 실용적인 예제가 많아, 학습한 내용을 바로 적용하며 따라 할 수 있다는 점이 인상 깊었습니다.

"한 권으로 배우는 게임 프로그래밍"은 단순히 기술만 알려주는 책이 아니라, 게임 개발의 즐거움과 창의력을 일깨워 주는 영감을 줍니다. 게임 개발을 꿈꾸는 모든 이에게 강력히 추천하며, 이 책을 통해 만든 첫 번째 게임은 오랜 시간이 지나도 기억에 남을 소중한 경험이 될 것입니다.

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."



제 회사 바로 앞에는 우리나라를 대표하는 게임 회사인 넥슨이 자리하고 있습니다.

그 분들은 어떻게 하다 게임사로 입사하게 되었는지 정말 궁금한 요즘,,

운 좋게도 게임 프로그래밍에 대한 도서를 제공받았습니다!

 

주식회사 미소게의 총괄 디렉터이자 기술이사로 자리하고 있는 박태준 개발자,

게임 클라이언트 프로그래머 박효재 개발자,

1인 인디게임 개발자 윤하연 개발자

요렇게 세 분이 쓰신

"한 권으로 배우는 게임 프로그래밍" 입니다.

 

본 책은 총 4장으로 구성되어 있습니다.

 

1장은 개발 환경의 구성과 게임 세계를 이해하기 위한 배경지식입니다.

게임 프로그래밍에서 필수적인 유니티 엔진을 포함한 개발 도구의 설치,

그리고 게임 세계를 2D, 3D, 그리고 UI로 나누어 이해해보고자 합니다.

여기까지는 관심있는 개발 경험자분들께서 충분히 부드럽게 읽으실 만한 내용입니다!

참고로,, 그림체가 정말 따뜻하고 귀여운 것 같아요 >_<

정보를 주는 책 치고 눈이 즐거웠습니다.

 

 

2장은 프로그래밍에서 뗄레야 뗄 수 없는,

어쩌면 조금은 지겨울 수도 있는 (ㅠㅠ) 수학과 물리입니다.

물론 전공서적처럼 딱딱하거나 어려운 내용은 전혀 아님을 미리 알려드립니다.

혹시 겁먹은 분들을 위해 이 지식이 왜 필요한지를 먼저 짚고,

위치와 이동을 위한 연산, 각과 회전, 적과의 대치 등의 게임 속 개념들을

좌표와 벡터, 공간이라는 수학적 기초 지식을 통해 알기 쉽게 풀어 두었습니다.

또 마지막에는 직접 Easing 그래프나 발판 움직이기 게임을 실습해보으로써

앞선 내용을 이해했는지, 이해하지 않았다면

저자가 무엇을 얘기하고자 했는지 다양한 예시를 통해 독자를 설득하고 있습니다.

 

 

 

 

3장은 게임 프로그래밍에 필요한 기법을 다룹니다.

특히 정렬, 길찾기, 충돌 판정 등 프로그래밍을 중점으로 학습할 때는

살짝 곁다리로 취급받을 수도 있지만,

게임 프로그래밍에서 필수적으로 다루는 알고리즘, 자료 구조 등을

게임이라는 주제 하에서 다시 보게 되니 반가운 것들이 많았던 장이었습니다.

 

또 정말 고전 게임..

어떻게 보면 제가 어렸을 때에도 이미 유행이 지났던,

하지만 게임의 근본 중의 근본인 팩맨(Pac Man)에 대한 내용이 나옵니다.

정렬 알고리즘을 통해 랭킹 시스템을 구현하고,

DFS와 BFS를 통해 AI의 길찾기를 구현하며,

충돌 처리 알고리즘을 통해(쪼끔 어려웡요ㅠㅠㅠ)

AABB,Swept AABB 알고리즘 등을 실습해보기도 합니다.

 

그리고 3.7장, 여기가 가장 기억에 남는 장이었는데

정리, 그리고 효율에 관한 팁이 있습니다.

여기서는 단순히 게임 프로그래밍을 위해서가 아닌

지속가능한 프로그래밍을 위한 팁을 남겨주셔서

요 부분만큼은 꼭 꼼꼼히 읽어보시기를 추천드립니다.

 

마지막 4장은 게임 프로그래밍을 설계하기 위한 방법론입니다.

객체 지향 프로그래밍은 무엇인지,

그리고 디자인 패턴의 개념과 이 패턴을 어떻게 "게임"이라는 분야에 적용할 수 있을지,

그리고 안티 패턴에 대한 개념과 9개의 지시사항을 통해

게임 프로그래밍을 업으로 삼기 위해

필수적인 방법론과 시야에 대해 안내하고 있습니다.

 

 

전반적으로 한 권으로 배우는 게임 프로그래밍 도서는 게임 개발에 필요한

수학, 물리, 자료구조, 알고리즘, 디자인 패턴 등을 체계적으로 다루고 있습니다.

 

특히 게임 개발을 처음 접하는 독자들도 쉽게 이해할 수 있도록

수학이나 알고리즘과 같은 (심적으로) 어려운 내용을 최대한 간략하게 설명하고 있습니다.

또 이를 다양한 예제 코드를 통해 구현할 수 있도록 독자의 이해를 돕는 데 큰 장점이 있습니다.

 

또 하나 느꼈던 건, 게임 개발에서 단순히 에진 사용법을 알려주는 것이 아니라

(물론 그랬다면 제목이 쿡북.. 비슷한 뉘앙스로 갔어야 했겠죠.. ㅎㅎ)

게임 개발의 본질을 이해하고 자신만의 게임을 창작하는 데

필요한 시야와 자신감을 얻도록 도와주는 느낌을 많이 받을 수 있었습니다.

 

게임 개발의 기초를 탄탄히 다지고,

창의적인 게임 제작의 첫 걸음을 내딛고 싶으시다면

꼭 한 권으로 넓은 인사이트를 얻을 수 있는

한 권으로 배우는 게임 프로그래밍 도서를 추천드립니다!!!

재밌는 게임은 사람들을 즐겁게 만든다. 또 재밌는 게임을 하고 나면 나도 이런 게임을 만들고 싶다는 욕망이 생기기도 한다. 하지만 대부분의 사람들은 그런 마음이 들어도, 어떻게 시작해야할지도 모를뿐더러 개발을 하는 방법조차 몰라서 시작도 전에 포기하곤 한다. 나 또한 그랬다. AI 개발은 그런대로 할 줄 알지만, 게임 개발은 항상 야매로 하다보니 금세 흥미를 잃고 접곤 했다. 만들고 싶은 기능은 많은데, 하나씩 추가하다보면 어느새 코드가 너무 복잡해져서 다시 들여다보기도 싫어지는 경우도 있었다. 하지만, 이 책을 통해 게임 개발을 시작했다면, 지금쯤 간단한 게임이라도 하나 정도 완성하지 않았을까 싶다.

 

이 책은 유니티(Unity)를 기본 엔진으로 다루고 있지만, 이에만 국한되지 않은, 보편적이고 전반적인 게임 개발 이론을 다룬다. 그래픽과 인터페이스를 구성하는 방법, 물리 엔진을 구현하는 방법뿐만 아니라, 수학, 자료구조, 알고리즘을 이용해 게임 속에서 흔히 볼 수 있는 기능을 구현하는 방법을 소개하기도 한다. 우리가 고등학교 과정 중 배웠던 벡터 연산이나, 학부 때 배웠던 자료구조, 길찾기 알고리즘 등이 게임에서 어떤 기능을 구현할 때 어떻게 사용되는가를 읽다보면, 그때는 막연하게만 느껴졌던 이론들이 머리 속에 쏙쏙 들어온다.

 

그 중 개인적으로 가장 흥미로웠던 부분은 디자인 패턴 부분이었다. 어떤 디자인 패턴이 게임 개발에서 자주 사용되는지를 실제 게임 기능 예시를 통해 소개하는 부분은, 왜 디자인 패턴이 중요하고 왜 이를 적재적소에 사용해야 하는지를 느끼게 한다. 여러 개의 무기를 바꿔가며 다양한 공격을 하고 이를 통해 점수를 얻는 게임을 제작할 때, 플레이어의 특성을 다루는 클래스와 게임의 전반적인 흐름을 다루는 게임 클래스는 어떻게 구성해야 효율적일지, 여기서 무기가 추가되고 도전과제가 변경된다면 어떻게 될지와 같은 실전적인 사례를 들어 디자인 패턴의 유용성을 설명하는 부분은, 디자인 패턴에 대한 지식이 부족한 나도 쉽게 이해할 수 있었다.

 

체계적인 이론을 다루면서도, 한편으로는 딱딱한 이론의 나열이 아닌, 쏙쏙 와닿는 사례들을 통해 설명을 함으로써, 초심자들도 거부감 없이 접할 수 있게 게임 개발의 전반을 다루는 책이라는 생각이 들었고, 그렇기에 게임 개발을 시작해보고 싶은 사람이 있다면 가장 먼저 추천하고 싶은 책이기도 하다. 이 책은 단순히 이론을 알려주는 것을 넘어, 독자로 하여금 자신만의 게임을 만들 수 있는 자신감을 불어넣어 준다. 누구나 한번쯤은 상상해봤을 "내가 만든 게임"을 현실로 만들어보고 싶다면, 이 책이 좋은 첫걸음이 되어줄 것이다. 읽고 난 후에도 책장에 꽂아두고 필요할 때마다 다시 꺼내 보게 될, 그런 값진 책이다.

이 책은 초급자 용으로 보기엔 다소 무리가 있어 보인다.

설명은 친절하고 자세하지만 개념 위주로 설명을 진행한다.

 

아무 것도 모르는 상태로 읽으면 아무 것도 모르는 상태에

머물 것이다. 그러나 초급 딱지를 뗀 사람-유니티 책을 한권이상 뗀 사람-이 읽으면

게임이 대충 어떻게 흘러가고 작동하는지 파악할 수 있을 것이다.

 

게임의 매커니즘과 수학, 물리 연산등에 대해서 다루고 있으며

그 밖에 프로그래밍 방법론, 자료구조와 알고리즘에 대해서도

다루고 있다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

필요한 선수 지식
요구 학력 : 컴퓨터 관련 학부생 3학년 이상

예제 코드 : C#, Unity

난이도 : ★☆☆☆☆

 

책의 구성 중 마음에 들었던 주제
CHAPTER 02 수학과 물리
2.2 위치와 이동
도입부에서는 원점을 기준으로 좌표를 구성하는 방식들을 설명하는데 이후 스칼라에서 벗어나 벡터의 간단한 설명과 함께 연산하는 방법들을 설명한다. 벡터는 게임에 있어서 오브젝트의 이동을 구현할 때 필수적이다. 간단히 걷기로 표현되고 중학교 때 배운 거속시 공식(거리 = 속도 * 시간; s = vt)이라던가, 중력이 작용하는 상황에서 자유 낙하를 표현하는 등가속도 운동 공식(v = v0 + at)을 실제 게임에서 이루어지는 많은 이동 상황에 비추어 설명한다.

2.3 각과 회전
이 단원에서는 각과 회전으로 대표되는 라디안과 삼각함수를 중점으로 설명한다. 고등학교에 다닐때 많은 친구를 수포자의 길로 이끈 게 삼각함수였는데 게임에서의 삼각함수는 필수적이다. 수포자들을 위해 여러 삽화를 추가하여 그래프를 바탕으로 삼각함수를 쉽게 설명하고 있다.

 

CHAPTER 03 게임 프로그래밍에 필요한 기법
3.6 충돌 처리 알고리즘
게임에서의 많은 상호작용은 충돌로 이루어진다. 충돌을 감지하는 알고리즘은 대표적으로 AABB, OBB 등이 있는데 이 단원에서는 이런 알고리즘들을 바탕으로 충돌을 감지하는 방법들을 설명한다.

 

CHAPTER 04 게임 프로그래밍 방법론
4.3 게임 디자인 패턴
4.4 안티 패턴
디자인 패턴은 일반적인 소설 잘 쓰는 방법과 같이 내가 작성한 코드를 다른 사람이 읽기 쉽게 서로 약속한 규칙이라고 이해하면 쉽다. 이 단원에서는 게임에서 자주 사용하는 패턴인 상속(Inheritance), 상태(State), 싱글톤(Singleton), 옵저버(Observer), 커맨드(Command)를 실제 사례를 빗대어 설명한다.

 

읽고 난 후

이 책에서는 각 챕터 별로 맨 앞에 ‘왜 배워야 할까?’라는 소단원이 있어 배워야 하는 이유를 논리적으로 설명하고 있다. 또한, 이해가 다소 어려울 수 있는 부분에는 손으로 그린 듯한 삽화들이 첨부되어 있어 이해를 돕는다. 다만, 게임 개발을 하면서 발생하는 많은 문제를 해결하는 데 도움을 주는 책이라기보다는 게임 개발을 처음 시작하기 전에 간단히 읽고 넘어가는 개론서로 보는 것이 좋을 것 같다.

 

게임을 만들 정도의 프로그래머라면 상당한 전문성을 갖췄다고 생각한다. 기본적으로 게임 엔진에 대한 이해도와 해당 게임 엔진에서 사용하는 언어 숙련도, 좌표계 및 벡터에 대한 논리적 사고가 뒷받침되어야 하기 때문이다. 특히 게임을 개발하다 보면 처음 보는 버그나 예기치 못한 문제를 마주치는 일이 흔한데 이를 빠르게 찾아내고 해결하는 과정에서 전문성이 낮았더라도 결국에는 전문성이 향상된다.

 

어떤 프로그래밍 언어를 중급자 정도 구사할 수 있다고 생각될 때마다 해당 언어로 게임을 개발해 봤었는데 문제 해결 능력을 키우고 데이터 구조, 알고리즘, 그래픽스 처리 등 다양한 컴퓨터 과학 개념을 실전에 적용해 보는 좋은 기회가 되었다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
한 권으로 배우는 게임 프로그래밍
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
한 권으로 배우는 게임 프로그래밍
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
한 권으로 배우는 게임 프로그래밍
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1