이미 소장하고 있다면 판매해 보세요.
1부 기본 게임 프레임워크
1장 두 번째 게임 이론 ___게임 개발은 반복 과정 ___게임 개발의 동기 이해 ___이 책의 대상 독자 ______이 책의 시작 내용 ______AS3와 AS2의 비교 ______AS2는 이미 죽은 언어이므로 더 이상 고집해서는 안 된다 ______이 책의 개발 환경 ___AS3 게임 프레임워크를 통한 게임 개발 ______객체지향적 방법론 _________캡슐화 _________상속 ______객체지향적 설계를 통한 게임 개발 ___기본 게임 프레임워크의 생성 ______상태 루프 ______게임 타이머 ______이벤트 모델 ______게임 테스트 ___두 번째 게임: 풍선 톱날 게임 ______게임에 필요한 자원 _________그래픽 _________사운드 ______설정 ______코드 ______풍선 톱날 게임 플레이 ______풍선 톱날 게임의 코드 살펴보기 _________임포트 _________변수 _________Game 생성자 _________게임 루프의 초기화 _________playGame() 함수 _________풍선 생성 _________풍선 이동 _________톱날과 풍선의 충돌 검사 _________게임 종료 ___세 번째 게임: 픽셀 슈터 게임 ______픽셀 슈터 게임의 설계 ______픽셀 슈터 게임의 그래픽 ______픽셀 슈터 게임의 사운드 ______픽셀 슈터 게임의 코드 ______픽셀 슈터 코드의 주요 부분 _________새로운 변수 _________플레이어의 시작과 재시작 _________여러 객체의 추적 _________미사일 발사 _________다양한 객체에 대한 충돌 감지 _________폭발 애니메이션의 생성 ___정리 2장 AS3 게임 프레임워크 개발 ___게임 프레임워크 살펴보기 ______GameFrameWork.as 클래스 ______FrameWorkStates.as 클래스 ______BasicScreen 클래스와 SimpleBlitButton 도우미 클래스 ______ScoreBoard 클래스와 SideBySideScoreElement 도우미 클래스 ______Game 클래스 ______커스텀 이벤트 클래스 _________CustomEventButtonId.as 클래스 _________CustomEventLevelScreenUpdate.as 클래스 _________CustomEventScoreBoardUpdate.as 클래스 ___프레임워크의 패키지 구조 ______source 폴더 ______classes 패키지 ______projects 패키지 _________플래시 IDE 패키지 구조 _________플렉스 SDK 패키지 구조 ______Main.as와 StubGame.as 파일 ___프레임워크 패키지를 활용한 프로젝트 시작 ______플래시 IDE에서의 스텁 게임 프로젝트 생성 ______플래시 디벨롭에서의 스텁 게임 프로젝트 생성 ___게임 타이머의 생성 ______'프레임 타이머의 간격'의 정의 ___상태 기계 ___FrameWorkStates.as 클래스 파일 ______상태 변수 ___GameFrameWork.as 클래스 파일 ______클래스 임포트 ______변수 정의 _________상태 제어 변수 _________배경 채색 변수 _________타이머 변수 _________화면 정의 변수 _________ScoreBoard 변수 _________Game 객체 변수 _________대기 변수 ______생성자 정의 ______init 함수 정의 ______setApplicationBackGround 함수 정의 ______startTimer 함수 정의 ______runGame 함수 정의 ______switchSystemState 함수 정의 ______systemTitle 함수 정의 ______systemWaitForClose 함수 정의 ______okButtonClickListener 함수 정의 ______systemInstructions 함수 정의 ______systemGameOver 함수 정의 ______systemNewGame 함수 정의 ______systemNewLevel 함수 정의 ______systemLevelIn 함수 정의 ______systemWait function 정의 ______waitCompleteListener 함수 정의 ______systemGameplay() 함수 정의 ______커스텀 이벤트 리스너 함수 ______Main.as의 scoreBoardUpdateListener 함수 정의 ______Main.as의 levelScreenUpdateListener 함수 정의 ______Main.as의 gameOverListener 함수 정의 ______Main.as의 newLevelListener 함수 정의 ___Main 이외의 프레임워크 클래스 ______BasicScreen 클래스 _________BasicScreen의 클래스 임포트와 변수 정의 영역 _________클래스 생성자 정의 _________createDisplayText 함수 정의 _________createOkButton 함수 정의 _________setDisplayText 함수 정의 _________버튼 리스너 함수 정의 ___SimpleBlitButton 클래스 _________SimpleBlitButton 클래스의 클래스 임포트와 변수 정의 _________SimpleBlitButton 클래스의 생성자 정의 _________changeBackGroundColor 함수 정의 ___CustomEventButtonId 클래스 _________CustomEventButtonId 클래스의 클래스 임포트와 변수 정의 _________CustomEventButtonId 클래스의 생성자 정의 _________CustomEventButtonId 클래스의 clone 함수 정의 ___CustomLevelScreenUpdate 클래스 ___CustomEventScoreBoardUpdate 클래스 ___ScoreBoard 클래스 _________ScoreBoard 클래스의 클래스 임포트와 변수 정의 _________createTextElement 함수 정의 _________update 함수 정의 _________SideBySideScoreElement 클래스 _________생성자 정의 _________setLabelText와 setContentText 함수 정의 ______Game 클래스 ___스텁 게임 클래스 ______게임의 목적 ______게임 상태의 화면 흐름 ______게임의 ScoreBoard 상수 ______Main.as 클래스의 작성 ______Main 클래스의 클래스 임포트와 변수 정의 ______생성자와 init 함수 정의 _________game 인스턴스의 생성 _________애플리케이션 배경의 설정 _________ScoreBoard의 생성 _________제목 화면의 생성 _________안내 화면의 생성 _________게임 오버 화면의 생성 _________Level In 화면의 생성 _________상태 기계의 초기 설정 _________게임 타이머의 시작 ______이 클래스에서 하는 일 ___테스트 ___정리 3장 슈퍼 클릭 ___슈퍼 클릭 게임의 설계 문서 작성 ______게임의 기본 성격 정의 ______레벨 진행 방식 ______필요한 기본 화면의 정의 ______게임 플레이 변수 정의 ______커스텀 ScoreBoard 항목의 정의 ______게임 플레이 방식과 흐름 설명 ______레벨 클리어 조건의 판단 ______게임 종료 조건의 판단 ______필요한 이벤트의 정의 ______게임의 고유 커스텀 클래스 정의 ___슈퍼 클릭 게임의 개발 ______프로젝트 시작 ______플래시 IDE 환경에서의 슈퍼 클릭 게임 프로젝트 생성 ______플래시 디벨롭 환경에서의 슈퍼 클릭 게임 프로젝트 생성 ______클래스 파일 목록 ______Main.as 클래스의 생성 ______Main.as의 클래스 임포트와 변수 정의 _________Game 인스턴스 생성 _________애플리케이션 배경 설정 _________Scoreboard 생성 _________제목 화면 생성 _________안내 화면 생성 _________게임 오버 화면 생성 _________Level In 화면 생성 _________상태 기계의 초기 설정 _________게임 타이머 시작 ___슈퍼 클릭 게임의 Game 클래스 작성 ______SuperClick.as의 클래스 임포트와 변수 정의 ______SuperClick.as의 생성자와 init 함수 정의 ______newLevel 함수의 정의 ______runGame 함수의 호출 ______update 함수의 정의 _________화면상의 원 추가 _________화면상의 원 업데이트 _________ScoreTextField 인스턴스의 업데이트 ______순환문 최적화 ______removeCircle 함수의 정의 ______removeScoreText 함수의 정의 ______checkCollisions 함수의 정의 _________원의 페이드아웃 ______addToScore 함수의 정의 ______render 함수의 정의 ______checkForEndGame 함수의 정의 ______checkforEndLevel 함수의 정의 ______cleanUp 함수의 정의 ___Circle 클래스 ______Circle 클래스의 정의 ______패키지 구조 내에서의 Circle 클래스 생성 ______Circle.as 클래스의 클래스 임포트와 변수 선언 ______Circle.as 클래스의 생성자와 init 함수 정의 ______Circle.as의 update 함수 정의 ______Circle.as의 dispose 함수 정의 ______Circle.as의 clickedListener 함수 정의 수정 ___ScoreTextField 클래스 ______ScoreTextField 클래스의 정의 ______패키지 구조 내에서의 ScoreTextField 클래스 생성 ______ScoreTextField의 update 함수 정의 ______ScoreTextField의 dispose 함수 정의 ___테스트 ___정리 2부 게임 제작 4장 대공포 게임의 기반 다지기 ___미사일 커맨드에 대한 짧은 소개 ___게임 설계 ___4장의 게임 개발에 필요한 기본 개념 ___게임 자원의 라이브러리 추가 ______Spritelib GPL를 활용한 그래픽 생성 ______SFXR를 활용한 사운드 제작 ___플래시와 플래시 디벨롭/플렉스의 라이브러리 차이 ______그래픽 자원의 활용 ______사운드의 활용 ___사운드 매니저의 생성 ___설정을 통한 난이도 조절 ______난이도 설정 ___벡터상에서 이동하는 스프라이트의 생성 ______두 점 사이를 이동하는 스프라이트의 정의 _________Shot _________BonusPlane _________Ship ______연속 벡터를 이동하는 객체의 생성 - Enemy ___애니메이션이 적용된 스프라이트의 생성 ______Flak _________Explosion ___정리 5장 대공포 게임 루프의 개발 ___대공포 게임의 흐름 이해 ___GameFramework.as 업데이트 ___Main.as의 정의 ___FlakCannon.as ______클래스 임포트 ______FlakCannon.as의 속성과 생성자 ______새 게임의 시작 _________새 레벨의 시작 _________마우스 이벤트 처리와 crosshairs의 작업 시작 _________함선의 배치 _________newLevel 이벤트의 처리 _________게임 테스트 ___게임 루프의 생성 ______적 전투기의 검사 ______보너스 비행기의 체크 ______객체 업데이트 ______객체의 제거 ______기본적인 비트맵 충돌 감지 ______객체 렌더링 ______레벨 클리어 ______게임 종료 ___게임 플레이! ___정리 6장 노 탱크 게임의 기반 다지기 ___노 탱크 게임의 설계 ___6장과 7장의 게임 개발과 관련한 기본 개념 ___라이브러리로 게임 자원 추가 ______Spritelib GPL의 활용 ______타일 시트의 활용 ______게임 레벨의 타일 조직화 ______레벨의 생성 ___매피 툴을 활용한 레벨 생성 ______스프라이트와 타일과 배경 ______타일 시트의 생성 ___매피를 활용한 게임 레벨의 생성 ______이중 레이어 맵의 생성 _________배경 레이어의 생성 _________스프라이트 레이어의 생성 ______레벨 FMP 파일의 저장 ______매피에서 레벨 내보내기 _________배경 레이어 내보내기 _________스프라이트 레이어 내보내기 ___프로젝트 설정 ______플래시 IDE에서의 노 탱크 게임 프로젝트 생성 ______플래시 디벨롭에서의 노 탱크 게임 프로젝트 생성 ___XML을 통한 타일 시트의 정의 ______TilesheetDataXML.as 클래스의 생성 _________Tile 어트리뷰트 _________코드의 적용 방식 ___타일 시트의 코드 활용 예제 ______GameDemo.as 클래스의 작성 ______타일 시트 데이터 읽기 _________상수 _________initTileSheetData 함수 _________테스트 ___화면상에서의 레벨 데이터 표현 ______코드 조직화 ______플렉스 프로젝트 전용 Library.as 클래스의 추가 ______플래시 IDE 전용 라이브러리 자원 추가 ______플렉스와 플래시 IDE에서의 라이브러리 자원 활용 ___타일 시트 블리팅과 스프라이트 ______'블리팅'의 정의 ______'스프라이트'의 정의 ______스프라이트와 블리팅의 차이점 ______플래시를 통한 응용 ______타일과 스프라이트 시트의 차이점 _________전체 화면 블리팅 _________개별 객체 블리팅 _________블리팅 방식의 조합 ______블리팅 렌더링 속도의 테스트 ______타임라인 기반 애니메이션의 성능 테스트 ______개별 객체 블리팅의 성능 테스트 ______전체 화면 블리팅의 성능 테스트 _________테스트 결과의 해석 ___TileSheet 클래스 ______TileSheet의 속성 정의 ______레벨 데이터 읽기 _________Level 클래스 _________Level1 클래스의 생성 ______GameDemo.as 파일의 업데이트 _________클래스 임포트 _________변수 정의 _________생성자 _________readBackGroundData 함수 _________readSpriteData 함수 _________drawLevelBackGround 함수 _________게임 렌더링의 조직화 ___정리 7장 노 탱크 게임의 완성 ___타일 기반 움직임에 대한 기본 이론 ______타일 점핑 ______부드러운 타일 간 이동 ___BlitSprite 클래스 ___BlitSprite 클래스를 활용한 애니메이션 ___TileByTileBlitSprite 클래스 ___미로 안에서의 플레이어 이동 ______타일 중심 트릭 ___플레이어의 추가(반복 1) ______반복 1을 위한 클래스명의 변경 ______import 영역에 새 프레임워크 클래스 추가 ______반복 1의 변수 정의 ______반복 1의 init 함수 ______반복 1의 restartPlayer 함수 ______readSpriteData 함수 ______반복 1의 테스트 ___키 로직을 활용한 플레이어의 이동(반복 2) ______반복 2를 위한 클래스명 변경 ______간단한 임시 게임 타이머의 추가 ______화살표 키를 통한 플레이어의 이동 상태 변경 ______키 입력 로직의 추가 ______반복 2의 테스트 ___플레이어 움직임과 관련한 이동 상태의 업데이트(반복 3) ______반복 3을 위한 클래스 수정 ______이동 상태 상수의 추가 ______반복 3의 runGame 함수 수정 ______checkInput 함수의 업데이트 ______checkTile 함수의 추가 ______checkCenterTile 함수의 추가 ______switchMovement 함수의 추가 ______반복 3의 테스트 ___플레이어의 움직임 업데이트와 렌더링(반복 4) ______반복 4를 위한 클래스명 변경 ______반복 4를 위한 변수 정의 업데이트 ______반복 4를 위한 runGame 함수의 업데이트 ______update 함수의 추가 ______render 함수의 추가 ______반복 4의 테스트 ___적 탱크의 이동 로직 추가(반복 5) ______반복 5를 위한 클래스명 변경 ______반복 5를 위한 변수 정의 업데이트 ______init, newGame, newLevel 함수의 업데이트 ______setRegions 함수의 추가 ______readSpriteData 함수의 수정 ______반복 5의 테스트 ___AI를 통한 적 탱크의 이동(반복 6) ______반복 6을 위한 클래스명의 변경 ______restartPlayer 함수에 대한 코드 추가 ______적 탱크에 대한 update 함수와 render 함수의 수정 ______적 탱크 AI에 사용할 새 함수의 추가 _________플레이어 추적 _________chaseObject 함수 _________checkLineOfSight 함수 _________fireMissileAtPlayer 스텁 함수 _________변수 정의 추가 ______반복 6의 테스트 ___프레임워크로의 통합 ______Main.as 프레임워크 클래스로의 통합 _________애플리케이션 배경과 게임 스프라이트의 위치 _________점수판 _________화면 _________사운드 _________사운드 재생을 위한 새로운 함수 오버라이드 ______Library 클래스의 마무리 ___Level.as과 Level1.as 클래스의 마무리 ___NoTanks.as 파일의 마무리 ______클래스명을 NoTanks.as로 변경 ______NoTanks.as에 대한 클래스 임포트 영역 추가 ______NoTanks.as 클래스의 변수 추가 ______NoTanks.as의 새로운 init 함수 추가 ______newGame 함수의 작성 ______newLevel 함수의 작성 ______restartPlayer 함수의 작성 ______runGame 함수의 재작성 ______checkInput 함수의 추가 ______update 함수의 개선 ______checkHitWall 함수의 추가 ______checkCollisions 함수 ______NoTanks.as의 render 함수 업데이트 ______레벨 클리어나 게임 오버에 대한 검사 ______미사일 발사 함수의 작성 ______readBackGroundData 함수의 수정 ______readSpriteData 함수의 수정 ______checkLineOfSight 함수의 수정 ______createExplode 함수의 추가 ______객체 정리 함수의 작성 ___최종 게임 테스트 ___게임 확장 ___정리 8장 컬러 드롭 캐주얼 퍼즐 게임의 개발 ___캐주얼 게임의 발전 과정 ___게임의 설계 ___8장의 게임 개발에 필요한 기본 개념 ___라이브러리에 게임 자원 추가 ______사운드의 추가 ______그래픽의 추가 ______컬러 드롭 게임의 클래스 정의 ___컬러 드롭 게임의 Main 클래스 업데이트 ___Block 클래스의 작성 ___CustomEventClickBlock 클래스의 작성 ___레벨 클래스를 통한 난이도 조절 ___GameStates 클래스의 작성 ___기본 게임 구조의 구현 ___게임 초기화 ______ColorDrop 상태 기계의 추가 ___화면에 블록 추가 ___컬러 드롭 게임의 update와 render 함수 확장 ___사용자 입력의 대기 ______재귀 함수를 사용하지 않는 블록 검사 ______블록의 제거 ___레벨 클리어와 게임 종료 ___테스트 ___정리 9장 주사위 배틀 퍼즐 게임의 개발 ___지적 재산권법 ______저작권에 대한 고려 ______상표에 대한 고려 ______특허에 대한 고려 ______황금룰 따라 하기 ___주사위 배틀 게임의 설계 ___9장의 게임 개발에 필요한 기본 개념 ___라이브러리에 게임 자원 추가 ______주사위 배틀 게임에 그래픽 추가 ______주사위 배틀 게임에 사운드 추가 ___Main.as에서 사운드트랙 재생 ______ScoreBoard의 업데이트 ______사운드트랙의 재생 ______Main.as 클래스의 업데이트 ___클래스를 통한 AI 난이도 설정 ___Die 클래스의 작성 ___CustomEventClickDie 클래스의 작성 ___Character 클래스의 작성 ___GameStates 클래스의 추가 ___Game.as에서의 게임 설정 ___컴퓨터 플레이어의 생성 ___새로운 게임 상태를 활용한 턴 플레이 ___플레이어의 이동 감지와 점수 부여 ___미니맥스 스타일의 AI 구현 ______주사위 배틀 AI의 분석 ______주사위 배틀의 AI에 대한 설명 ___레벨 클리어와 게임 종료 ___주사위 배틀 게임의 나머지 코드 ___테스트 ___정리 10장 타일 기반 게임의 블릿 스크롤 ___오빠 달려 게임의 설계와 시작 ___10장에서 다루는 게임 개발 개념 ______새 클래스 정의 ______게임 프레임워크와의 연동 ______Library 클래스의 수정 ______커스텀 LevelInScreen 클래스의 추가 ______레벨 사이의 전환 ___자유 형태의 타일 기반 이동 ______자유 형태의 타일 기반 이동의 정의 _________MoveClip 스테이지 스크롤 방식 _________GAS(gotoAndStop) 타일 _________타일 기반의 블릿 스크롤 _________게임 공간 _________카메라 _________버퍼 _________결과 캔버스 ___게임 공간의 생성 ______타일 시트 생성 ______담벼락 타일과의 충돌 감지 ______게임 레벨의 정의 ______레벨 데이터 가져오기 ___기본적인 자동차 물리학의 적용 ______전진과 후진 ______방향 전환 ___오빠 달려 게임의 준비 작업 ______플래시 IDE에서의 프로젝트 생성 ______플래시 디벨롭에서의 게임 프로젝트 생성 ___오빠 달려 게임에 필요한 Main.as 클래스의 업데이트 ______점수판 항목의 추가 ______화면의 수정 ______사운드의 수정 ______LevelInScreen으로의 전환 ______LevelInScreen 텍스트의 업데이트 ______게임 프레임레이트의 증가 ______CustomEventHeartsNeeded.as 클래스의 작성 ______Library.as 클래스의 생성 ___새로운 프레임워크 클래스의 생성 ______BasicFrameTimer 클래스의 생성 ______LookAheadPoint 클래스의 생성 ______CarBlitSprite 클래스의 생성 ______Camera2D 클래스의 생성 _________이중(또는 삼중) 버퍼 ___오빠 달려 게임의 전용 클래스 생성 ______TileSheeDataXML 클래스 ______Level.as 클래스 ______Level1.as 클래스 ___Game 클래스의 반복 ______Game 클래스의 전체 구조, 변수, 생성자의 작성(반복 1) _________키 입력 상수 _________내부 상태 기계 _________제목, 디스플레이, 게임 공간 _________카메라 _________자동차 사운드 ______반복 2를 통한 동작 가능 클래스의 구현 ______게임 설정(반복 3) _________init 함수 _________newGame 함수 _________initTileSheetData 함수 _________newLevel 함수 _________setUpWorld 함수 _________restartPlayer 함수 _________자동차와 게임 공간의 동시 이동 _________systemGamePlay 함수 _________반복 3의 게임 테스트 ______플레이어 입력과 update/render 루프의 추가(반복 4) _________update 함수 ______checkInput 함수 ______render 함수 _________drawCamera 함수 _________drawPlayer 함수 _________반복 4의 테스트 ______충돌 검사와 레벨이나 게임 종료(반복 5) _________checkCollisions 함수 _________나머지 게임 함수 ___최종 게임 테스트 ___게임의 확장 ___정리 11장 최적화를 적용한 포스트 복고 게임 개발 ___포스트 복고 게임의 이해 _________포스트 복고의 정의 _________포스트 복고 게임의 특징 _________새롭게 등장하는 포스트 복고 게임의 특징 _________포스트 복고 게임의 역사 _________포스트 복고 게임 장르가 개발자에게 의미하는 것 ___블래스터 마인의 설계 ___11장에서 다루는 게임 개발 이론 ___게임 프레임워크의 수정 ______스테이지 접근에 대한 검사 _________addedToStage 함수의 추가 ______일시 정지와 음 소거 기능의 추가 ___시간 기반의 단계 타이머 추가 ______runEnterFrame 함수의 추가 ___렌더 프로파일링을 통한 최적화 ______FrameRateProfiler의 기술적인 설계 ___프레임레이트와 메모리 사용량 모니터링 ___게임 클래스의 수정 ___블래스터 마인 프로젝트의 시작 ______플래시 IDE에서의 블래스터 마인 프로젝트 생성 ______플래시 디벨롭에서의 블래스터 마인 게임 프로젝트 생성 ___블래스터 마인 게임의 Main.as 클래스 생성 ______일시 정지 기능과 음 소거 기능의 구현 _________생성자 수정 _________addedToStage 함수의 추가 ______블래스터 마인의 시간 기반 단계 타이머 구현 ______블래스터 마인의 FrameRateProfiler 커스터마이징 _________frameRateProfileComplete 함수의 작성 ______Library.as 클래스의 생성 ______SoundManager 클래스의 수정 ___객체 풀을 통한 최적화 ______프로세서 실행 시간의 단축 ______메모리 보존 ______게임에서 사용할 객체 풀의 구현 ______블래스터 마인 게임의 객체 풀에 대한 기술 명세 작성 _________private 변수의 추가 _________풀에서의 입자 인스턴스 생성 _________입자의 활성화 _________입자의 비활성화 ___단일 단위 처리를 통한 최적화와 메모리 보존 ______전역 이벤트 객체의 재사용 ___룩업 테이블의 최적화 ______벡터 룩업 테이블의 생성 ______vectorRotationList 룩업 테이블의 접근 ___ScrollRect를 통한 화면 기반의 블릿 스크롤 최적화 ___레이더 화면을 위한 BitmapData의 재사용과 최적화 ___새로운 게임 클래스의 생성 ______BlitArrayAsset 클래스의 설계 ______BasicBlitArrayObject 클래스의 설계 ______BasicBlitArrayParticle 클래스의 설계 ______BasicBlitArrayProjectile 클래스의 설계 ______BlitArrayPlayerFollowMouse 클래스의 설계 ______MineManager 클래스의 설계 ______ParticleManager 클래스의 설계 ______ProjectileManager 클래스의 설계 ______Mine 클래스의 설계 ___BlasterMines 클래스의 개발 ______BlasterMines 클래스의 기본 골격 ______블래스터 마인 게임의 init 함수 추가 ______newGame과 newLevel 함수의 추가 ______게임 루프의 업데이트와 내부 상태 기계 ______update, autoShoot, render, collision 함수 추가 ______보조 함수의 추가 ___전체 GameFrameWork 클래스 ___테스트 ___정리 12장 바이럴 게임 터널 패닉 개발 ___바이럴 웹 게임의 정의 ___바이럴 웹 게임의 배포 ______자신의 웹사이트를 통한 배포 ______소셜 뉴스 사이트의 활용 _________트위터 _________페이스북 ______포털 업로드 _________소셜 게임 사이트 _________등록 심사 포털 ___바이럴 게임을 통한 돈 벌기 ______페이지 내 광고의 활용 ______게임 공모전 참여 ______모치 미디어를 통한 게임 내 광고 삽입 ______라이선스와 스폰서십 활용 _________독점 라이선스 _________스폰서십 _________비독점 라이선스 _________API 라이선스 _________스폰서 구하기 _________FlashGameLicense.com의 활용 _________FlashGameDistribution과 GamerSafe의 활용 ______어도비 플래시 플랫폼 서비스의 활용 ___바이럴 게임의 보안 적용 ______사이트 락의 활용 ______게임 암호화 ___바이럴 플래시 게임 마케팅 ___기타 웹 자료 ___터널 패닉 게임의 준비 ______플래시 IDE에서의 게임 프로젝트 생성 ______플래시 디벨롭에서의 게임 프로젝트 생성 ___플렉스 SDK를 활용한 프리로딩 ______컴파일러 지시어의 추가 ______Preloader 클래스 코드의 추가 ___플래시 IDE에서의 프리로딩 ______라이브러리에 파일 추가 ______타임라인의 생성 ______자원을 보관할 MovieClip의 생성 _________자원 연결 _________자원 보관 클립 내의 자원 배치 _________메인 타임라인상의 자원 보관 클립 배치 ______플래시 IDE 프리로딩에 필요한 프레임워크 수정 _________프레임워크에 새로운 플래시 IDE 프리로더 상태 추가 _________프리로더 상태에 대한 변수 추가 _________preloadScreen 인스턴스의 정의 _________Main에서 프리로더를 첫 번째 상태로 설정 _________switchSystemState 함수의 추가 _________새로운 systemPreload와 addSounds 함수의 추가 ___모치 프리로더 애드와 리더 보드의 추가 ______모치 패키지의 임포트 ______Main.as 객체 타입의 수정 ______프레임워크에 모치 관련 변수 추가 ______switchSystemState의 수정 ______모치애드 관련 수정 사항 ______리더 보드 관련 수정사항 ___바이럴 게임 직접 제작 ______터널 패닉 게임의 설계 ______PlayerSprite 객체의 생성 ______플레이 필드의 생성 ______장애물의 추가 ______플레이어 우주선의 연소 효과 _________지저분한 사각형 지우기 ______게임 난이도 올리기 ______게임 종료 ___터널 패닉 게임의 Main.as 생성 ______터널 패닉 게임을 위한 Game.as의 수정 ______터널 패닉 게임을 위한 Main.as의 수정 ______플렉스 SDK 전용 Library.as 클래스의 생성 ______플래시 IDE 라이브러리의 자원 추가 ___TunnelPanic.as 클래스의 코딩 ___테스트 ___정리 |
우리는 비디오 게임이 막 생겨나고 아타리의 놀란 버시넬이나 마그나복스의 랄프 배어 같은 사람이 비디오 게임 마케팅을 했던 1970년 대 초반에 태어난 쌍둥이다. 물론 당시에는 이런 비디오 게임의 시대가 다가오고 있음을 실감하지 못했지만, 그 시절에는 분명 뭔가 흥미로운 분위기가 감돌고 있었다. 기억을 더듬어 보면 우리는 항상 우리만의 게임을 만들고 싶어 했다. 우리는 1970년대 대다수 교외의 아이들처럼 자랐다. 자전거를 타고, 총 놀이를 하다가 학교 운동장에 놀던 장난감을 버려놓고는 가로등이 켜질 때까지 밖에서 놀기 일쑤였다. 집에는 돈이 많지 않았기 때문에 우리는 알아서 재미있게 놀 수밖에 없었다. 아주 어린 나이였지만 우리는 스스로 즐길 수 있는 게임을 구상하기 시작했다.
먼저 스포츠 경기 게임을 생각해냈다. 우리는 1950년대의 공공분양 주택 주변의 100피트 남짓한 공간에서 두 명이 할 수 있는 거의 모든 스포츠 게임을 구상하며 시간을 보냈다. 얼마 후 아버지가 갖고 있는 여분의 배터리, 전선줄, 전구, 모터, 전위차계를 사용해 여러 가지로 실험을 했다. 당시 전기로 할 수 있는 게임을 만들려고 했던 것 같다. 여러 번의 시행착오를 거쳐 깜빡이는 전구와 스위치, 모터가 달린 전기 장치를 만들었고, 조잡하지만 핀볼 기계도 만들 수 있었다. 이내 집안에 있는 모든 물건으로 인터랙티브한 장난감이나 게임을 만들 수 있겠구나 하는 생각이 들었다. 우리는 집안에 있는 페이퍼백에 모두 그림을 그려 넣어 책을 넘기면 애니메이션이 나타나게 하면서 많은 시간을 보냈다. 어느 해 여름인가는 모든 페이퍼백 책에 그림 낙서가 그려져 있어서 Tie 전투기, 날아다니는 화살표, 페이지를 넘길 때마다 위로 올라가는 텍스트로 인해 방해를 받지 않고 책을 읽는 게 불가능했던 적도 있다. 물론 장난감들도 우리의 이른 게임 대상에서 예외가 될 수 없었다. 예를 들어 Etch-A-Sketch는 첫 번째 '손으로 갖고 노는 게임 개발 플랫폼'이 됐다. 스카치 테이프로 트랙을 만들고 디지털시계를 사용해 우리는 간단한 경주 게임과 다른 즐길 거리를 만들었다. 이런 아날로그적인 게임 구상은 끝없이 이어지는 듯 했다. 하지만 우리 앞에서는 새로운 뭔가가 기다리고 있었다. 우리가 오래된 장난감으로 새로운 게임을 만드는 방법을 찾아내던 그 시절에 갑자기 그보다 훨씬 더 재미있는 일이 찾아왔다. 첫 번째로 1977년 영화 스타워즈가 개봉됐고, 이로 인해 모든 게임이 재미가 없어졌다. 이 영화를 보고난 후 우리는 스타워즈를 만들고, 스타워즈처럼 생각하고, 스타워즈가 되려는 생각에 푹 빠졌다. 그리고 그로부터 1년 후 스페이스 인베이더가 오락실에 등장했고, 우리는 실제로 스타워즈 게임을 할 수 있게 됐다. 물론 실제 스타워즈만큼은 못했지만 적어도 당시로서는 정말 스타워즈 게임을 하는 듯한 느낌이었다. 1980년, 오락실에서 애스터로이드나 미사일 커맨드를 하지 않을 때면 우리는 아버지가 휴스 사에서 가져온 모눈종이에 픽셀 아케이드 게임을 만들고 있었다. 그로부터 얼마 지나지 않아 우리는 베이직을 독학했고 애플 IIe 컴퓨터를 가끔씩 빌려 짧은 시간 안에 원시적인 텍스트 기반 게임을 작성하기 시작했다. 1984년 중고 아타리 800 컴퓨터를 갖게 됐고 더 정교한 게임을 만들 수 있을 정도로 베이직 언어를 익혔다. 이 시절 문장 생성 게임, 게임 쇼 시뮬레이션, 포커 게임, 경마 게임, 간단한 롤플레잉 게임도 만들었다. 14살이 됐을 때 우리 쌍둥이는 커서 뭐가 될지 확실히 느꼈다. 바로 컴퓨터 게임 프로그래머가 되기로 했던 것이다. 우리는 타고난 프로그래머라는 생각을 하고 있었고, 아무것도 우리를 막지 못할 거라 생각했다. 하지만 모든 게 항상 계획대로 되지만은 않는다. 사실 유년 시절의 성공 뒤에는 어려운 시기가 기다리고 있었다. 베이직으로 간단한 게임을 만드는 것과 재미있는 액션 아케이드 게임을 만드는 것은 전혀 별개의 일이었던 것이다. 8비트 아타리 800에서 16비트 아타리 ST로 컴퓨터를 바꿀 때쯤 프로그래밍은 더 어려워지기만 했다. 고등학교와 대학교에서 학업을 정상적으로 이수하면서 로우레벨 컴퓨터 언어를 배우자니 시간이 몹시 많이 들었다. 우리는 1989년 ST용 STOS 게임 제작기를 통해 게임을 하나 간신히 끝마칠 수 있었다. 우리는 움직이는 스프라이트와 디지털 사운드까지 갖춘 첫 번째 게임인 Zamboozal Poker Dice 게임을 끝마쳤다. 하지만 그 기쁨은 오래 가지 못했다. STOS는 강력하긴 하지만 아직 익히지 못한 프로그래밍 기술을 대체해줄 수 없는 지름길에 불과했기 때문이다. 대학 수업이 본격적으로 진행되면서 우리의 프로그래밍 취미 프로젝트는 뒷전으로 밀려났고 거의 잊혀졌다. 결국 STOS로 두 번째 게임을 만들지 못했다. 그로부터 11년이 흐른 후 여러 번 게임을 만들려고 시도하다 출시하지 못하고, 이따금씩 인디 영화 제작과 음악으로 외도를 하기도 한 끝에 우리는 전혀 새로운 상황을 맞이한다. 이때 우리는 펄, C, C++, 어셈블리 언어를 사용해 다년간 소프트웨어를 개발한 경험이 있었다. 바로 그때, 그러니까 2000년에 아이용 제품을 제조하는 대기업에서 함께 일하며 HTML과 ASP로 마케팅 웹사이트를 만들고 있었다. 그런데 날이 갈수록 웹 기반 게임과 즐길 거리에 대한 수요가 증가함에 따라 우리는 플래시 5를 도입하기로 했고 플래시의 프로그래밍 언어인 액션스크립트도 이때 처음 접했다. 액션스크립트를 통해 플래시는 임베드된 타임라인 이벤트가 있는 간단한 애니메이션 툴에서 실제 클라이언트 애플리케이션 개발 플랫폼으로 발전했다. 하지만 처음에 우리는 사실 액션스크립트 코딩에 대해 조금 회의적이었다. 플래시 5는 주로 MovieClip과의 타임라인 인터랙션 기능만을 담고 있었다. 우리에게 있어서 이는 마치 STOS를 다시 보는 듯한 인상을 심어줬다. 플래시를 사용하면 쉽고 간단하게 게임을 만들 수 있지만, 결국 소프트웨어 개발에 대한 견고한 토대는 없는 STOS 같은 지름길처럼 보였다. 하지만 플래시보다 더 나은 해답이 없었으므로 우리는 플래시 5에 빠져들었고 웹상에서 차세대 인터랙티브 게임을 구현하는 일에 몰두하기 시작했다. 오늘날의 기준으로 보면 우리가 플래시 5로 만든 당시 게임이 조잡해 보일 수도 있지만 당시로서는 멋진 게임이었다. 우리는 퍼즐 게임, 클릭 게임, 옷 입히기 게임, 게임 커스터마이징, 액션 게임도 일부 만들었다. 이후 플래시 MX가 등장함에 따라 이 기술을 활용해 전체 웹사이트를 개발하게 된다. 이제 우리 게임에는 스트리밍 오디오, 로드할 수 있는 자원, 뒷단과의 연동을 통해 사용자 브라우저 세션을 벗어난 커스터마이징 기능을 포함하게 된다. 하지만 모든 게 본격적으로 부상하는 시점은 플래시 MX 2004가 나오고부터다. 액션스크립트 2는 이전 버전의 플래시에서는 맛만 볼 수 있는 프로그래밍 언어를 한층 개선했다. 이때부터 플래시 게임은 디자인 패턴과 객체지향적 방법론을 사용해 실제 소프트웨어처럼 설계할 수 있게 된다. 플래시 8이 출시될 즈음 우리는 비트맵 데이터, 타일 시트, 더욱 정교한 물리 이론을 사용 중이었고, Electrotanks의 Electrosever 3 같은 기법을 활용해 멀티플레이어 게임을 만들고 있었다. 물론 이때도 멋진 게임을 만들 수 있었지만 2007년에 플래시 CS3가 출시되면서 모든 조건은 더할 나위 없이 좋아졌다. CS3에는 액션스크립트 3.0으로 이름이 바뀐 전혀 새로운 프로그래밍 언어가 들어 있었고, 이 언어는 액션스크립트 2보다 몇 배 더 빠르게 실행됐다. 이로 인해 한 순간에 3D 효과와 반응 속도가 빠른 액션 아케이드 게임을 마침내 우리 손으로 만들 수 있게 됐다(어린 시절 항상 꿈꿨던 그런 게임을). 액션스크립트 3.0 출시와 더불어 우리는 플래시가 단순히 게임 프로그래밍에 대한 지름길이라는 우려를 완전히 벗어버릴 수 있었다. 액션스크립트 3.0을 잘 활용하면 올바른 개발 기법에 기반해 견고한 프로그램을 만들 수 있을 뿐 아니라 필요하다면 다른 플랫폼으로 이식할 수 있는 코드도 만들 수 있었다. 플래시를 접한지 10이 지나고, 또 수백 개의 플래시 게임을 만들고 난 후 우리는 뒤를 잠시 돌아봤다. 1989년 당시 우리가 액션스크립트 3.0을 사용할 수 있었더라면 미래가 어떻게 달라졌을까? 현재의 우리를 있게 한 그때 그 시절의 선택을 똑같이 반복했을까? 또 우리는 얼마나 많은 게임을 더 만들 수 있었을까? 플래시는 훌륭한 툴이지만 투자한 만큼 얻을 수 있다. 이 책에서는 플래시 기술과 모범 코딩 방식 사이에서 적절히 균형을 이룬 기법을 활용해 액션스크립트 3.0으로 게임을 만드는 법을 보여준다. 우리는 플래시와 플래시가 우리의 창의성을 마음껏 펼치게 허락해준 자유를 사랑한다. 우리가 지나치게 플래시와 액션스크립트 3.0에 열정적으로 보인다면 그건 바로 플래시가 어릴 적 꿈인 비디오 게임 개발을 실현시켜줬기 때문일 것이다. 이제 우리는 여러분의 꿈을 실현시켜주고 싶다. - 스티브 펄튼과 제프 펄튼 ---저자 서문 중에서 이 책은 플래시 게임 개발을 완벽하게 다루는 지침서다. 게임 개발은 다른 애플리케이션 개발과 달리 적당히 다른 사람의 코드를 가져와 쓰는 것만으로는 잘 구현할 수 없다. 물론 플래시는 자바나 C 언어보다 쉽게 그래픽을 집어넣고 간단한 코드 입력만으로도 게임을 만들 수 있게 해주는 좋은 툴이다. 하지만 그 이상의 정교한 게임을 만들고 싶다면 플래시라는 플랫폼에만 의존해서는 안 된다. 게임을 제대로 구현할 수 있는 튼튼한 코드 설계가 뒷받침돼야 하기 때문이다. 바로 게임 프레임워크가 필요한 것이다. 이 책에서는 '두 번째 게임 이론'을 설명한다. 두 번째 게임 이론이란 첫 번째 게임을 개발한 코드 기반을 그대로 활용해 두 번째 게임을 만들 수 있을 때 비로소 게임 개발에 실패하지 않음을 함축적으로 나타내는 용어다. 이렇게 재사용할 수 있는 게임을 만들려면 코드 설계에 많은 노력을 기울여야 하고, 의존성을 줄여야 하며, 재사용할 수 있는 항목들을 추상화해야 한다. 이를 위해 이 책에서는 반복 과정을 통해 단계적으로 게임 프레임워크를 완성, 개선하고, 이를 토대로 10개의 각기 다른 게임을 만드는 법을 소개한다. 이 책의 매력은 크게 두 가지다. 첫 번째 매력은 책의 내용을 따라 읽는 것만으로도 모범 개발 방식을 익히고, 게임 프레임워크를 거저 손에 넣을 수 있다는 점이다. 이 책에서는 플래시 IDE와 플래시 디벨롭, 플래시 빌더 등 각기 다른 환경에서 동일한 코드로 공동 작업하는 방법을 비롯해, 이벤트 기반의 뷰와 컨트롤러 통신, 상속을 통한 다형성 등 고급 액션스크립트 프로그래머가 알아야 할 내용들을 빠짐없이 다룬다. 또 이를 통해 하나의 프레임워크를 만들고 지속적으로 발전시키는 과정을 보여줌으로써 액션스크립트 프로그래머가 설계와 구현의 한 단면뿐 아니라 전체 그림을 그릴 수 있게 해준다. 이 책의 두 번째 매력은 고급 액션스크립트 기법을 총동원해 플래시 게임 개발자가 겪을 수 있는 문제를 모두 해결해준다는 점이다. 예를 들어 이 책에서는 액션스크립트 프로그래머가 좀처럼 사용하지 않는 비트맵 블리팅, 비트맵 스크롤링 등 고급 기법을 소개하며, 픽셀 기반의 이동 로직, 인공지능 등 게임 프로그래머가 꼭 알아야 할 어려운 주제들을 정면 돌파한다. 또 메모리 절약을 위한 변수 재사용법, 객체 풀을 활용한 성능 개선, 게임의 각기 다른 실행 환경을 고려한 게임 타이머 등 게임 개발자가 알아두면 피가 되고 살이 될 정보를 모두 제공한다. 이 책에서는 플래시 게임 개발에 대한 모든 내용을 다룬다. 앞으로 플래시 게임 개발과 관련해 이 책보다 더 정교한 책이 나올 수 있을지 솔직히 의문스럽다. 독자들이 이 책의 저자들처럼 이 책에서 다루는 내용들을 피하지 않고 정면으로 돌파한다면 이 책은 독자들이 플래시 게임을 개발하는 데 더할 나위 없이 큰 도움이 될 것이다. ---옮긴이의 말 중에서 |
o 10가지의 게임 구현(복고 게임부터 현대 플래시 게임까지)
o 여러 게임에 재사용할 수 있는 게임 엔진과 툴 개발 o 플래시 게임 프로그래밍과 관련한 다양한 문제 해결 지침서 o 액션스크립트 3.0과 플래시 IDE 등 개발 도구를 활용한 게임 개발 o 게임 최적화 연일 플래시 게임이 화제다. 플래시 게임들은 날이 갈수록 품질이 좋아지고 더 정교해지고 있다. 이제 플래시 게임은 데스크톱뿐 아니라 다양한 모바일 기기에서 즐길 수 있다. 또 플래시 게임은 돈이 되고, 재미있기까지 하다! 『플래시 게임 마스터』는 플래시 게임 개발자들을 위한 완벽 가이드다. 이 책에서는 다양한 저수준의 노하우를 다루는 대신 바로 게임 개발에 착수한다. 좀 더 구체적으로 설명하자면 이 책에서는 여러 가지 게임을 만드는 데 재사용할 수 있는 게임 프레임워크를 만드는 법을 살펴본다. 이 프레임워크는 완전히 모듈화돼 있으므로 게임 성격에 맞춰 일부 기능을 쉽게 추가할 수 있고, 게임에 새로운 재미를 부여하기 위해 기존 기능을 확장하기도 쉽다. 이 책은 게임 프로젝트 단위로 나뉘며 아케이드 게임, 캐주얼 게임, 바이럴 게임, 요즘 트렌드인 '포스트 복고 게임' 등 여러 장르를 소화한다. 이 책에서는 모두 10개의 완전한 게임 프로젝트를 설명한다. 각 프로젝트는 성격이 크게 다른 게임 개발 관련 문제를 해결하며, 이전 프로젝트에서 얻은 지식을 기반으로 개발을 진행한다. 이 책의 각 장은 내용이 진행됨에 따라 점점 더 복잡해지며, 다른 게임에도 재사용할 수 있는 기법들을 다양하게 소개한다. 이 책의 게임 프로젝트는 간단한 게임부터 시작하며, 점점 게임 개발에 사용할 툴이 많아짐에 따라 조금씩 복잡해져서, 책 전체에 걸쳐 비트맵 렌더링, 픽셀 레벨 충돌 감지, 인공지능, 블리팅, 스크롤링, 입자, 재사용 가능한 프레임워크 등 게임 개발과 관련된 다양한 고급 기법을 모두 다룬다. ★ 이 책에서 다루는 내용 ★ ■ 커스텀 게임을 만드는 데 활용할 수 있는 전체 기능을 갖춘 모듈화된 액션스크립트 3.0 게임 프레임워크 개발 ■ 스페이스 슈팅 게임, 드라이빙 게임, 퍼즐 게임 등 10가지 게임 프로젝트를 상세히 소개 ■ 비트맵 렌더링, 픽셀 레벨의 충돌 감지, 인공지능, 블리팅, 스크롤링, 입자, 재사용 가능한 프레임워크 등 고급 게임 개발 기법 ★ 이 책의 대상 독자 ★ 이 책은 중급 플래시 개발자, 플래시 게임 개발자, 플래시 플랫폼으로 이전하길 원하는 기존 게임 개발자, 게임을 만드는 법을 배우고자 하는 기존 웹 개발자를 위한 책이다. 이 책에서는 어느 정도의 객체 지향 방법론을 소개하고 있지만 적어도 이 책의 독자라면 액션스크립트를 통한 클래스 선언, 액션스크립트 기본 문법, 클래스 상속, 액션스크립트 디스플레이 프로그래밍 기법 정도는 알고 있어야 한다. |