오프닝 xi
학습 가이드 xiv
로드맵 xvi
PART I 기초 이론
LEVEL 1 플레임 엔진이란? 3
1.1 플레임 엔진을 선택해야 하는 이유 4
1.2 플러터와 다트 언어의 장점 6
1.3 개발에 들어가기 앞서 8
1.4 윈도우 환경에서 플러터 설치 9
__1.4.1 비주얼 스튜디오 코드 설치 9 / 1.4.2 플러터 설치 10
1.5 게임 개발의 시작 13
__1.5.1 VS Code에서 실행 13 / 1.5.2 플레임 게임 구조 16 / 1.5.3 객체지향 19 / 1.5.4 플레임 설치 23 / 1.5.5 텍스트 출력 24
리플레이 26 / QUIZ 26
LEVEL 2 플레임 엔진의 사용 방식 27
2.1 main() 함수 28
__2.1.1 컴포넌트 30 / 2.1.2 PositionComponent 31 / 2.1.3 TextComponent 31 / 2.1.4 SpriteComponent 37 / 2.1.5 TextComponent와 SpriteComponent 동시에 나타내기 40 / 2.1.6 SpriteButtonComponent 44
2.2 이벤트버스 46
__2.2.1 코드 예제 46
2.3 버튼 만들기 52
__2.3.1 버튼에 이벤트버스 넣기 58 / 2.3.2 텍스트 버튼 준비 59 / 2.3.3 이미지 색상 교체 62 / 2.3.4 NineTileBoxComponent 66
2.4 효과 만들기 72
__2.4.1 이동 효과 72 / 2.4.2 회전 효과 75
2.5 간단한 계산 과정 78
__2.5.1 벡터의 정규화 81 / 2.5.2 스케일 효과 84 / 2.5.3 투명 효과 85 / 2.5.4 순차 실행 86 / 2.5.5 동시 실행 87
리플레이 89 / QUIZ 89
LEVEL 3 게임 초기 화면 개발 91
3.1 게임 화면 구성 기법 92
__3.1.1 타이틀 화면과 메인 화면 92 / 3.1.2 이벤트버스 98 / 3.1.3 메인 페이지 101
3.2 다양한 해상도에서의 비율 유지: 카메라와 뷰포트 활용 112
__3.2.1 카메라와 뷰포트의 개념 112 / 3.2.2 월드 만들기 113 / 3.2.3 main 함수 114 / 3.2.4 변경된 구조 115
3.3 메뉴 팝업 131
__3.3.1 팝업 배경 클래스 131 / 3.3.2 팝업 133 / 3.3.3 팝업 그림자 효과 139
리플레이 142 / QUIZ 143
PART 2 실전 게임 개발
LEVEL 4 두더지 잡기 게임 개발 147
4.1 프로젝트 생성 148
4.2 이미지 출력 151
4.3 월드와 이벤트버스 155
4.4 윈도우 환경에서의 창 크기 조절 158
4.5 게임 타이틀 화면 160
__4.5.1 PaintTextComponent 클래스 165 / 4.5.2 수정한 타이틀 화면 167
4.6 메인 메뉴 페이지 169
__4.6.1 타이틀 텍스트 만들기 172 / 4.6.2 시작 버튼 만들기 174 / 4.6.3 이벤트버스 붙이기 181
4.7 게임 페이지 183
__4.7.1 게임 규칙 183 / 4.7.2 리소스 확보 183 / 4.7.3 게임 페이지 구현하기 185 / 4.7.4 구멍 이미지를 반으로 나누기 189 / 4.7.5 땅 아래에서 올라오기 194 / 4.7.6 두더지 객체 만들기 208 / 4.7.7 해머 구현 214 / 4.7.8 타격 효과 219 / 4.7.9 게임 UI 구성하기 222 / 4.7.10 다양한 두더지 만들기 247
4.8 마무리 260
리플레이 261 / QUIZ 262
LEVEL 5 땅파기 게임 265
5.1 프로젝트 생성 266
5.2 두더지 게임에서 사용했던 컴포넌트의 재활용 268
__5.2.1 이벤트버스 268 / 5.2.2 GameRectButton 270 / 5.2.3 PaintTextComponent 270 / 5.2.4 NumberDisplay 270 / 5.2.5 RoundedRectangleComponent 270 / 5.2.6 GameFunction 270
5.3 새로운 월드와 카메라 272
__5.3.1 카메라 컴포넌트 272 / 5.3.2 월드 273 / 5.3.3 main 함수 274 / 5.3.4 타이틀 화면 276 / 5.3.5 메인 화면 278 / 5.3.6 게임 페이지 283
5.4 마무리 357
리플레이 358 / QUIZ 359
LEVEL 6 벽돌 깨기 게임 363
6.1 구현할 대상 364
__6.1.1 Ball(공) 364 / 6.1.2 Paddle(막대) 364 / 6.1.3 Brick(벽돌) 364 / 6.1.4 Wall(벽) 364
6.2 프로젝트 생성 365
6.3 월드 생성 366
__6.3.1 타이틀 페이지 367 / 6.3.2 메인 페이지 371
6.4 flame_forge2d의 사용 375
__6.4.1 물리 엔진의 구성 375
6.5 게임 페이지 380
__6.5.1 카메라 컴포넌트 만들기 382 / 6.5.2 공 385 / 6.5.3 벽 설치 390 / 6.5.4 막대 설치 394 / 6.5.5 벽돌 398 / 6.5.6 남은 것 405 / 6.5.7 게임 클리어 페이지 409 / 6.5.8 벽돌 파괴 효과 413 / 6.5.9 게임 클리어 이벤트 419
6.6 마무리 421
리플레이 422 / QUIZ 423
LEVEL 7 디펜스 게임 427
7.1 타이틀 이미지 428
7.2 뼈대 잡기 430
7.3 타이틀 페이지 432
7.4 이벤트버스 434
__7.4.1 이벤트버스 사용하기 435
7.5 메인 메뉴 페이지 438
7.6 게임 페이지 441
__7.6.1 배경 이미지 이어붙이기 446 / 7.6.2 구름 만들기 449 / 7.6.3 주인공 캐릭터 배치 452 / 7.6.4 총알 456 / 7.6.5 적 구현 469 / 7.6.6 총알과 적의 충돌 구현 473 / 7.6.7 아이템 483 / 7.6.8 HP Bar 492 / 7.6.9 패배 500
7.7 마무리 503
리플레이 504 / QUIZ 505
LEVEL 8 AI 도구 활용 509
8.1 게임 개발에 AI 사용하기 510
__8.1.1 배경음악 510 / 8.1.2 효과음 510 / 8.1.3 애니메이션 511 / 8.1.4 스토리 511
8.2 미드저니와 소라 그리고 나노 바나나 512
__8.2.1 예술 작업실 만들기 514 / 8.2.2 각 AI의 역할 정의 514
8.3 게임 리소스에 나노 바나나 활용 518
__8.3.1 캐릭터 원화 518 / 8.3.2 게임 GUI 520
에필로그: 마치며 523
찾아보기 524