옮긴이 머리말 ... xiii 이 책에 대하여 ... xv Part Ⅰ HTML5 시작하기 ... 1 제1장 웹에서의 게임 ... 3 HTML5의 역사 ... 4 HTML5를 게임에 활용하기 ... 5 Canvas 요소 ... 6 오디오 ... 8 웹 소켓 ... 9 웹 저장소 ... 10 WebGL ... 12 HTML5는 플래시의 킬러인가? ... 12 하위 호환성에 대한 고려 ... 13 특정 기능이 지원되는지 확인하기 ... 13 Modernizr 라이브러리의 활용 ... 14 polyfill을 이용한 브라우저의 버전 차이 극복하기 ... 15 게임 제작하기 ... 17 요약 ... 18 제2장 게임 개발을 위한 첫걸음 ... 19 게임의 이해 ... 20 블록 맞바꾸기 ... 20 세 개의 블록 맞추기 ... 21 게임 레벨의 증가 ... 21 게임 스테이지 정의하기 ... 22 스플래시 화면 ... 22 주 메뉴 ... 22 게임 플레이하기 ... 23 최고 점수 목록 ... 24 애플리케이션의 뼈대 구현하기 ... 24 HTML 구성하기 ... 26 스타일 추가하기 ... 27 스크립트 로드하기 ... 29 스플래시 화면 만들기 ... 35 웹 폰트 사용하기 ... 36 스플래시 화면에 스타일 적용하기 ... 38 요약 ... 40 제3장 모바일 환경 지원하기 ... 41 모바일 웹 애플리케이션의 개발 ... 42 뛰어난 이식성 ... 43 모바일 플랫폼의 도전 과제 ... 44 모바일 기기에서 사용자의 입력 처리하기 ... 44 키보드 입력 ... 45 마우스 vs. 터치 ... 46 낮은 화면 해상도 지원하기 ... 47 유연한 레이아웃 구성하기 ... 49 뷰 포트 제어하기 ... 51 사용자의 스케일 변경을 비활성화하기 ... 53 서로 다른 뷰 구현하기 ... 54 주 메뉴 구현하기 ... 54 화면 모듈 추가하기 ... 56 CSS 미디어 쿼리의 활용 ... 61 기기의 방향 알아내기 ... 62 모바일용 스타일 시트 추가하기 ... 64 iOS와 안드로이드 기기용 애플리케이션 개발하기 ... 67 홈 화면에 웹 애플리케이션 노출하기 ... 68 브라우저의 특성 비활성화하기 ... 78 모바일 웹 애플리케이션 디버깅 ... 83 사파리 디버거 활성화하기 ... 83 안드로이드 로그에 액세스하기 ... 85 요약 ... 86 Part Ⅱ 기본 게임 구현하기 ... 87 제4장 게임 구현하기 ... 89 게임 보드 모듈 구현하기 ... 90 게임 상태 초기화하기 ... 91 게임 보드 채우기 ... 95 게임 규칙 구현하기 ... 98 블록 교환에 대한 유효성 검사 ... 98 연결된 보석 블록 탐지하기 ... 101 격자 다시 채우기 ... 108 블록 교환하기 ... 111 요약 ... 114 제5장 웹 작업자 스레드의 활용 ... 115 웹 작업자 다루기 ... 116 작업자의 제한사항 ... 117 작업자가 할 수 있는 일들 ... 118 웹 작업자의 활용 ... 120 메시지 전달하기 ... 120 메시지 수신하기 ... 121 오류의 처리 ... 122 공유 작업자 ... 122 소수 예제 ... 124 게임에서 웹 작업자 활용하기 ... 128 작업자 모듈 구현하기 ... 129 동일한 인터페이스 유지하기 ... 131 요약 ... 138 제6장 Canvas를 이용한 그래픽의 처리 ... 139 웹에서의 그래픽 ... 140 비트맵 이미지 ... 140 SVG 그래픽 ... 141 Canvas ... 141 Canvas의 적절한 활용 ... 142 Canvas를 이용한 그리기 ... 143 도형과 패스 그리기 ... 144 고급 채우기 및 테두리 스타일의 활용 ... 156 변형 기법의 활용 ... 161 텍스트, 이미지 및 그림자 추가하기 ... 163 상태 스택의 관리 ... 169 HTML5 로고 그리기 ... 170 그래픽 조합하기 ... 177 이미지 데이터에 액세스하기 ... 180 픽셀 값 조회하기 ... 180 픽셀 값 수정하기 ... 181 이미지 파일 데이터 내보내기 ... 182 보안에 따른 제약 ... 183 픽셀 기반 효과 적용하기 ... 184 요약 ... 186 제7장 게임 화면 구현하기 ... 189 게임 파일 미리 로드하기 ... 190 보석의 크기 알아내기 ... 191 로딩 스크립트 수정하기 ... 193 진행 막대 추가하기 ... 199 배경 꾸미기 ... 202 게임 화면 구축하기 ... 205 캔버스를 이용해서 게임 보드 그리기 ... 207 CSS와 이미지로 게임 보드 그리기 ... 215 요약 ... 223 제8장 사용자와 게임의 상호작용 ... 225 사용자의 입력 캡처하기 ... 226 터치 기기에서의 마우스 이벤트 ... 226 가상 키보드 ... 227 터치 이벤트 ... 228 입력 이벤트와 캔버스 ... 236 사용자 입력 모듈 구현하기 ... 238 입력 이벤트 처리하기 ... 240 게임의 동작 구현하기 ... 244 사용자의 입력과 게임 기능 연결하기 ... 250 요약 ... 259 제9장 게임 그래픽의 애니메이션 ... 261 게임의 반응 구현하기 ... 262 애니메이션의 타이밍 ... 263 커서에 애니메이션 적용하기 ... 269 게임의 동작에 애니메이션 추가하기 ... 271 점수와 시간 적용하기 ... 283 UI 요소의 추가 ... 285 게임 타이머의 구현 ... 290 점수 계산하기 ... 292 게임의 종료 ... 303 요약 ... 307 Part Ⅲ 3D와 오디오의 활용 ... 309 제10장 오디오의 활용 ... 311 HTML5 오디오 ... 312 오디오의 지원 가능 여부 확인하기 ... 313 오디오 포맷에 대한 이해 ... 314 사운드 효과 탐색하기 ... 317 audio 요소의 활용 ... 317 재생 제어하기 ... 321 모바일 기기에서 오디오의 활용 ... 326 오디오 데이터의 활용 ... 327 모질라의 오디오 데이터 API 활용하기 ... 328 오디오 데이터 API 예제 ... 330 오디오 모듈 구현하기 ... 337 오디오 재생 준비하기 ... 337 사운드 효과 재생하기 ... 339 재생 중지하기 ... 341 정리하기 ... 342 게임에 사운드 효과 추가하기 ... 343 게임 화면에서 오디오 재생하기 ... 344 요약 ... 345 제11장 WebGL을 이용한 3D 그래픽 ... 347 웹에서의 3D ... 348 WebGL 시작하기 ... 349 WebGL 디버깅 ... 350 도우미 모듈 구현하기 ... 351 셰이더 ... 352 변수와 데이터 타입 ... 352 WebGL 셰이더의 활용 ... 358 균일 변수 ... 365 변수의 변화 ... 367 3D 객체 렌더링하기 ... 368 버텍스 버퍼의 활용 ... 369 인덱스 버퍼의 활용 ... 370 모델, 뷰 및 프로젝션 활용하기 ... 372 렌더링 ... 376 Collada 모델 로드하기 ... 381 텍스처와 광원의 활용 ... 384 광원 추가하기 ... 384 픽셀 단위 조명 적용하기 ... 388 텍스처 생성하기 ... 392 WebGL 디스플레이 모듈 구현하기 ... 398 WebGL 파일 로드하기 ... 399 WebGL 설정하기 ... 401 보석 블록 렌더링하기 ... 405 보석 블록의 애니메이션 ... 411 요약 ... 416 Part Ⅳ 로컬 저장소와 멀티플레이어 게임 ... 417 제12장 로컬 저장소와 캐싱 ... 419 웹 저장소에 데이터 저장하기 ... 420 저장소 인터페이스의 활용 ... 421 저장소 모듈 구현하기 ... 425 게임에 영속적인 상태 부여하기 ... 428 게임의 종료 ... 428 게임 일시 중지하기 ... 431 게임 데이터 저장하기 ... 433 최고 점수 목록 구현하기 ... 437 최고 점수 화면 만들기 ... 437 최고 점수 데이터 저장하기 ... 441 최고 점수 데이터 표시하기 ... 442 애플리케이션 캐시 ... 444 캐시 매니페스트 ... 445 요약 ... 449 제13장 웹 소켓의 활용 ... 451 웹 소켓의 활용 ... 452 서버에 연결하기 ... 453 웹 소켓을 이용한 통신 ... 456 노드를 이용한 서버 측 프로그래밍 ... 458 노드 설치하기 ... 459 노드로 HTTP 서버 구현하기 ... 462 웹 소켓을 이용한 채팅방 구현하기 ... 464 요약 ... 473 제14장 리소스 ... 475 미들웨어의 활용 ... 476 Box2D ... 476 Impact ... 479 Three.js ... 481 모바일 기기에 배포하기 ... 483 폰갭 ... 483 앱셀러레이터 티타늄 ... 488 게임 배포하기 ... 490 크롬 웹 스토어 ... 490 Zeewe ... 491 안드로이드 마켓 ... 492 앱스토어 ... 493 온라인 서비스의 활용 ... 494 TapJS ... 494 Playtomic ... 495 JoyentCloud Node ... 496 요약 ... 497 부록 A. 캔버스 API 레퍼런스 ... 499 Canvas 요소 ... 500 2D 컨텍스트 API ... 501 상태 관리 ... 501 변형 ... 502 도형과 패스 ... 503 채우기와 테두리 ... 505 그림자 효과 ... 507 이미지 ... 507 텍스트 ... 508 합성 ... 508 픽셀 조작 ... 510 접근성 ... 511 부록 B. WebGL 레퍼런스 513 WebGL API 레퍼런스 ... 514 데이터 타입 ... 515 형식화된 배열 ... 516 버퍼 ... 516 셰이더 ... 518 프로그램 객체 ... 519 균일 변수 ... 520 버텍스 특성 ... 521 그리기 ... 523 텍스처 ... 524 블렌딩 ... 527 스텐실 버퍼 ... 528 깊이 버퍼 ... 529 렌더링 버퍼 ... 530 프레임 버퍼 ... 531 기타 함수들 ... 533 매개변수 ... 535 부록 C. OpenGL ES 셰이딩 언어 ... 541 GLSL ES 언어 레퍼런스 ... 542 데이터 타입 ... 542 내장 함수들 ... 543 찾아보기 ... 553