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