Top

플래시 게임 마스터 [액션스크립트 3.0을 활용한 인터랙티브 게임 개발]

  • 원서명The Essential Guide to Flash Games: Building Interactive Entertainment with ActionScript (ISBN 9781430226147)
  • 지은이제프 펄튼, 스티브 펄튼
  • 옮긴이유윤선
  • ISBN : 9788960772281
  • 45,000원
  • 2011년 09월 09일 펴냄
  • 페이퍼백 | 960쪽 | 188*250mm
  • 시리즈 : 게임 개발 프로그래밍

책 소개

플래시 게임 개발자와 액션스크립트 프로그래머 또는 기존 게임 개발자를 위한 완벽 마스터 가이드다. 책을 읽으며 따라 해보는 것만으로 모범 개발 기법을 익힐 수 있다. 게임 프레임워크를 완성하고 10가지 게임 프로젝트를 만들어봄으로써 액션스크립트 개발자가 할 수 있는 모든 플래시 기법을 익힐 수 있다. 또한 고급 액션스크립트 기법을 총동원해 플래시 게임 개발자가 겪을 수 있는 문제를 모두 해결해본다. 이 책에서는 아주 간단한 클릭 게임을 시작으로 단계적으로 게임 프레임워크를 완성하므로, 게임 개발을 해본 적이 없거나 프레임워크를 만들어본 적이 없더라도 책의 내용을 이해하는 데에는 전혀 무리가 없다.


[ 소개 ]

● 10가지의 게임 구현(복고 게임부터 현대 플래시 게임까지)
● 여러 게임에 재사용할 수 있는 게임 엔진과 툴 개발
● 플래시 게임 프로그래밍과 관련한 다양한 문제 해결 지침서
● 액션스크립트 3.0과 플래시 IDE 등 개발 도구를 활용한 게임 개발
● 게임 최적화

연일 플래시 게임이 화제다. 플래시 게임들은 날이 갈수록 품질이 좋아지고 더 정교해지고 있다. 이제 플래시 게임은 데스크톱뿐 아니라 다양한 모바일 기기에서 즐길 수 있다. 또 플래시 게임은 돈이 되고, 재미있기까지 하다!

『플래시 게임 마스터』는 플래시 게임 개발자들을 위한 완벽 가이드다. 이 책에서는 다양한 저수준의 노하우를 다루는 대신 바로 게임 개발에 착수한다. 좀 더 구체적으로 설명하자면 이 책에서는 여러 가지 게임을 만드는 데 재사용할 수 있는 게임 프레임워크를 만드는 법을 살펴본다. 이 프레임워크는 완전히 모듈화돼 있으므로 게임 성격에 맞춰 일부 기능을 쉽게 추가할 수 있고, 게임에 새로운 재미를 부여하기 위해 기존 기능을 확장하기도 쉽다.

이 책은 게임 프로젝트 단위로 나뉘며 아케이드 게임, 캐주얼 게임, 바이럴 게임, 요즘 트렌드인 ‘포스트 복고 게임’ 등 여러 장르를 소화한다. 이 책에서는 모두 10개의 완전한 게임 프로젝트를 설명한다. 각 프로젝트는 성격이 크게 다른 게임 개발 관련 문제를 해결하며, 이전 프로젝트에서 얻은 지식을 기반으로 개발을 진행한다. 이 책의 각 장은 내용이 진행됨에 따라 점점 더 복잡해지며, 다른 게임에도 재사용할 수 있는 기법들을 다양하게 소개한다. 이 책의 게임 프로젝트는 간단한 게임부터 시작하며, 점점 게임 개발에 사용할 툴이 많아짐에 따라 조금씩 복잡해져서, 책 전체에 걸쳐 비트맵 렌더링, 픽셀 레벨 충돌 감지, 인공지능, 블리팅, 스크롤링, 입자, 재사용 가능한 프레임워크 등 게임 개발과 관련된 다양한 고급 기법을 모두 다룬다.


[ 이 책에서 다루는 내용 ]

■ 커스텀 게임을 만드는 데 활용할 수 있는 전체 기능을 갖춘 모듈화된 액션스크립트 3.0 게임 프레임워크 개발
■ 스페이스 슈팅 게임, 드라이빙 게임, 퍼즐 게임 등 10가지 게임 프로젝트를 상세히 소개
■ 비트맵 렌더링, 픽셀 레벨의 충돌 감지, 인공지능, 블리팅, 스크롤링, 입자, 재사용 가능한 프레임워크 등 고급 게임 개발 기법


[ 이 책의 대상 독자 ]

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

저자/역자 소개

[ 저자 서문 ]

우리는 비디오 게임이 막 생겨나고 아타리의 놀란 버시넬이나 마그나복스의 랄프 배어 같은 사람이 비디오 게임 마케팅을 했던 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에 열정적으로 보인다면 그건 바로 플래시가 어릴 적 꿈인 비디오 게임 개발을 실현시켜줬기 때문일 것이다. 이제 우리는 여러분의 꿈을 실현시켜주고 싶다.

- 스티브 펄튼과 제프 펄튼


[ 저자 소개 ]

제프 펄튼 (Jeff Fulton)
30년 이상 취미로 컴퓨터 게임과 비디오 게임을 즐기고 있다. 어린 시절 제프는 게임 프로그래밍을 통해 돈을 벌고 싶다는 막연한 꿈을 꾸긴 했지만 전문 게임 개발자가 될 생각은 전혀 없었다. 제프는 오히려 작가나 영화감독이 될 생각이었다. 대학에서 친구들과 함께 예산이 전혀 필요 없는 영화 몇 편을 찍고 난 후 제프는 자신이 창작 분야만큼이나 기술적인 분야에도 소질이 있음을 깨달았다. 제프와 그의 형인 스티브가 애니메이션을 제작하고 이들 영화의 타이틀 시퀀스를 만드는 데 사용한 아타리 ST 컴퓨터는 이후 제프가 전문 게임 개발자로서의 길을 걷게 하는 데 큰 영감을 줬다. 1991년 제프는 ST 액션 매거진에서 Llamasoft의 게임 개발자인 제프 민터의 게임 개발 관련 연재 기사를 읽었다. 이 연재 기사는 그의 이후 경력의 씨앗을 심어준다. 제프는 민터가 기사에서 설명하고 개발한 포스트 복고 게임의 다양한 언어와 흥미로운 이야기에 매료됐다. 게임 개발이 단순히 창조적인 추구를 통해 이뤄지지 않는다는 사실을 깨달은 후 제프는 대학의 모든 영화 과목을 제쳐두고 최대한 기술 수업과 경영 수업을 찾아서 수강했다. 대학 졸업 후 제프는 업무 시간에는 주로 펄과 C++로 다양한 비즈니스 애플리케이션을 만들고, 여가 시간에 게임 코딩과 개발을 했다. 1990년대 말 웹 붐이 강타했을 때 제프는 기회를 놓치지 않고 벤처를 시작하는 기업들의 웹사이트를 만들고 거대 다국적 기업을 위한 게임을 만들었다. 2006년 게임과 사이트가 200개 이상 쌓이자 제프와 스티브(역시 게임 개발자이자 사이트 개발자)는 www.8bitrocket.com이라는 자신들의 사이트를 시작한다. 이 사이트의 목적은 웹 게임과 복고 스타일의 게임을 알리고 자신들이 익힌 게임 설계, 코딩, 개발 기법을 다른 이들에게 전수하는 것이다.
제프가 가장 좋아하는 게임으로는 Super Breakout(Atari 2600), River Raid(Atari 2600), Dragon Stomper(Atari 2600), Rally Speedway(Atari 800), Fort Apocalypse(Atari 800), Mule(Atari 800), Asteroids(오락실), Ms. Pac-man(오락실), Star Castle(오락실), Phantasie(Atari ST), Megaroids(Atari ST), Oids(Atari ST), Anco Player Manager(Atari ST), Galaga(Arcade), Food Fight(Atari 7800), Tempest 2000(Jaguar), Wolfenstein 3D(DOS), Medal Of Honor(PS1), Point Blank 2(PS1), Duke Nuke ’Em 3D(DOS), System Shock 2(PC), Tony Hawk Pro Skater(PS1), Half Life(PC), New Star Soccer(PC/Mac), Baldur’s Gate: Dark Alliance(PS2)가 있다.

스티브 펄튼 (Steve Fulton)
자칭 아타리 광팬인 스티브 펄튼은 자신이 기억하는 한 항상 게임을 만들고 싶어 했다. 영화 학교와 락 저널리즘에도 잠깐 손을 댄 적이 있지만, 스티브는 1990년대 초에 C++와 어셈블리 언어 프로그래머로 경력을 시작한다. 하지만 월드 와이드 웹의 부상으로 인해 시들해진 클라이언트 서버 소프트웨어 업체 몇 곳에서 일한 후 스티브는 1995년 새로운 가능성을 보고 HTML/자바와 펄/CGI 프로그래밍을 시작한다. 당시에는 (웹이 폭발적으로 성장하기 전에) 이런 경력 이전으로 인해 웹사이트와 채팅, 단어 검색, HTML과 서버사이드 스크립트만을 활용한 간단한 게임 같은 인터랙티브 애플리케이션을 만드는 직종이 크게 늘어났다. 1990년대 내내 소규모 기업과 대기업을 상대로 웹사이트를 개발한 후 스티브는 세계에서 가장 큰 엔터테인먼트 기업 중 한곳의 소비자를 대상으로 하는 웹사이트를 개발한다. 지난 10년간 스티브는 플래시를 비롯한 다양한 기술을 활용해 웹 기반의 게임과 엔터테인먼트 작업을 했다. 수십 개의 유명하고 트래픽 양이 많은 웹사이트나 커뮤니티와 더불어 스티브는 수백 개의 플래시 애플리케이션과 웹사이트를 설계하고, 개발하고, 프로그래밍했다. 이 중에는 10억 번 이상 플레이된 1인용 게임과 멀티 플레이어 웹 기반 게임도 수십 가지나 있다. 동생인 제프와 더불어 스티브는 인기 있는 플래시와 복고 게임 개발 사이트인 www.8bitrocket.com을 운영 중이다. 이 사이트는 뉴스, 튜토리얼, 데모 게임, 실험, 플래시, 바이럴 웹 게임 세계에 대한 생각 등이 수시로 업데이트된다.
스티브가 좋아하는 게임은 Breakout(Atari 2600), Asteroids(동전 사용), Star Castle (동전 사용), River Raid(Atari 2600), Castle Wolfenstein(Apple IIe), Galaga(동전 사용), Time Pilot(동전 사용), Star Wars(동전 사용), MULE(Atari 800), Ultima IV(Atari 800), Temple Of Apshai(Atari 800), Dungeom Master(Atari ST), Oids(Atari ST), Food Fight (Atari 7800), Wizards’s Crown(Atari ST), Anco Player Manager(Atari ST), Machine Bride of Pinbot(동전 사용), Dune 2(PC), Fallout(PC), Desert Strike(Genesis), Tempest 2000(Jaguar), Zolar Mercenary(Lynx), Roller Coaster Tycoon(PC), Baldur’s Gate: Dark Alliance(PS2), Knights Of The Old Republic(PC), Final Fantasy 1 and 2(GBA), Wii Sports Resort(Wii), Mario And Luigi: Partners In Time(DS), Pinball Hall Of Fame: Williams Collection(Wii), Pac-Man Championship Edition(Xbox Live Arcade), Puzzle Quest(DS), Bookworm Adventures(PC), Dragon Age(PC)가 있다.


[ 옮긴이의 말 ]

이 책은 플래시 게임 개발을 완벽하게 다루는 지침서다. 게임 개발은 다른 애플리케이션 개발과 달리 적당히 다른 사람의 코드를 가져와 쓰는 것만으로는 잘 구현할 수 없다. 물론 플래시는 자바나 C 언어보다 쉽게 그래픽을 집어넣고 간단한 코드 입력만으로도 게임을 만들 수 있게 해주는 좋은 툴이다. 하지만 그 이상의 정교한 게임을 만들고 싶다면 플래시라는 플랫폼에만 의존해서는 안 된다. 게임을 제대로 구현할 수 있는 튼튼한 코드 설계가 뒷받침돼야 하기 때문이다. 바로 게임 프레임워크가 필요한 것이다.

이 책에서는 ‘두 번째 게임 이론’을 설명한다. 두 번째 게임 이론이란 첫 번째 게임을 개발한 코드 기반을 그대로 활용해 두 번째 게임을 만들 수 있을 때 비로소 게임 개발에 실패하지 않음을 함축적으로 나타내는 용어다. 이렇게 재사용할 수 있는 게임을 만들려면 코드 설계에 많은 노력을 기울여야 하고, 의존성을 줄여야 하며, 재사용할 수 있는 항목들을 추상화해야 한다. 이를 위해 이 책에서는 반복 과정을 통해 단계적으로 게임 프레임워크를 완성, 개선하고, 이를 토대로 10개의 각기 다른 게임을 만드는 법을 소개한다.

이 책의 매력은 크게 두 가지다. 첫 번째 매력은 책의 내용을 따라 읽는 것만으로도 모범 개발 방식을 익히고, 게임 프레임워크를 거저 손에 넣을 수 있다는 점이다. 이 책에서는 플래시 IDE와 플래시 디벨롭, 플래시 빌더 등 각기 다른 환경에서 동일한 코드로 공동 작업하는 방법을 비롯해, 이벤트 기반의 뷰와 컨트롤러 통신, 상속을 통한 다형성 등 고급 액션스크립트 프로그래머가 알아야 할 내용들을 빠짐없이 다룬다. 또 이를 통해 하나의 프레임워크를 만들고 지속적으로 발전시키는 과정을 보여줌으로써 액션스크립트 프로그래머가 설계와 구현의 한 단면뿐 아니라 전체 그림을 그릴 수 있게 해준다.

이 책의 두 번째 매력은 고급 액션스크립트 기법을 총동원해 플래시 게임 개발자가 겪을 수 있는 문제를 모두 해결해준다는 점이다. 예를 들어 이 책에서는 액션스크립트 프로그래머가 좀처럼 사용하지 않는 비트맵 블리팅, 비트맵 스크롤링 등 고급 기법을 소개하며, 픽셀 기반의 이동 로직, 인공지능 등 게임 프로그래머가 꼭 알아야 할 어려운 주제들을 정면 돌파한다. 또 메모리 절약을 위한 변수 재사용법, 객체 풀을 활용한 성능 개선, 게임의 각기 다른 실행 환경을 고려한 게임 타이머 등 게임 개발자가 알아두면 피가 되고 살이 될 정보를 모두 제공한다.

이 책에서는 플래시 게임 개발에 대한 모든 내용을 다룬다. 앞으로 플래시 게임 개발과 관련해 이 책보다 더 정교한 책이 나올 수 있을지 솔직히 의문스럽다. 독자들이 이 책의 저자들처럼 이 책에서 다루는 내용들을 피하지 않고 정면으로 돌파한다면 이 책은 독자들이 플래시 게임을 개발하는 데 더할 나위 없이 큰 도움이 될 것이다.


[ 옮긴이 소개 ]

유윤선
인디 개발자이자 프리랜서 번역가로 활동 중이다. 이따금 http://joshy21.com/weblog에 번역과 상관없는 글을 올리고 있다. 역서로는 『플래시 빌더 4 & 플렉스 4 바이블』(위키북스), 『스프링 3 레시피』(위키북스, 공역), 『액션스크립트 3.0 완벽 가이드』(인사이트, 공역) 등이 있다.

목차

목차
  • 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 클래스의 코딩
    • 테스트
  • 도서 오류 신고

    도서 오류 신고

    에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

    오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

    (예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안