이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
플래시 게임 마스터
액션스크립트 3.0을 활용한 인터랙티브 게임 개발
베스트
IT 모바일 top100 2주
가격
45,000
10 40,500
YES포인트?
2,250원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능
  •  최저가 보상
  •  문화비소득공제 신청가능

에이콘 게임 개발 프로그래밍 시리즈

책소개

목차

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 클래스의 코딩
___테스트
___정리

품목정보

발행일
2011년 09월 09일
쪽수, 무게, 크기
960쪽 | 1806g | 188*250*40mm
ISBN13
9788960772281

책 속으로

우리는 비디오 게임이 막 생겨나고 아타리의 놀란 버시넬이나 마그나복스의 랄프 배어 같은 사람이 비디오 게임 마케팅을 했던 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가지 게임 프로젝트를 상세히 소개
■ 비트맵 렌더링, 픽셀 레벨의 충돌 감지, 인공지능, 블리팅, 스크롤링, 입자, 재사용 가능한 프레임워크 등 고급 게임 개발 기법

★ 이 책의 대상 독자 ★

이 책은 중급 플래시 개발자, 플래시 게임 개발자, 플래시 플랫폼으로 이전하길 원하는 기존 게임 개발자, 게임을 만드는 법을 배우고자 하는 기존 웹 개발자를 위한 책이다. 이 책에서는 어느 정도의 객체 지향 방법론을 소개하고 있지만 적어도 이 책의 독자라면 액션스크립트를 통한 클래스 선언, 액션스크립트 기본 문법, 클래스 상속, 액션스크립트 디스플레이 프로그래밍 기법 정도는 알고 있어야 한다.

리뷰/한줄평0

리뷰

첫번째 리뷰어가 되어주세요.

한줄평

첫번째 한줄평을 남겨주세요.