이미 소장하고 있다면 판매해 보세요.
|
1장 XNA 게임 스튜디오 소개
___예제 게임 소개 ___시스템 요구 사항 ___XNA 게임 스튜디오 설치 ____________실습 예제 | XNA 게임 스튜디오 설치 ___첫 번째 게임 만들기 ____________실습 예제 | 윈도우 게임 프로젝트 만들기 ______XNA Game 클래스 분석 _________변수 선언 영역 ____________실습 예제 | 클래스 선언 영역에 변수 추가 _________Game1 클래스 생성자 _________Initialize() 함수 ____________실습 예제 | Initialize() 함수 수정 _________LoadContent() 함수 ____________실습 예제 | squareTexture 만들기 _________Update() 함수 ____________실습 예제 | Update() 함수 코드 작성 _________Draw() 함수 ____________실습 예제 | 그리기 ____________실습 예제 | 사각형 추적 게임 실행하기 ___정리 2장 플러드 컨트롤: 수중 퍼즐 게임 ___퍼즐 게임 디자인 ____________실습 예제 | 플러드 컨트롤 프로젝트 생성 ___콘텐츠 파이프라인 소개 ____________실습 예제 | 텍스처 파일을 메모리에 로드 ___스프라이트와 스프라이트 시트 ___플러드 컨트롤에서 사용된 클래스 분석 ___GamePiece 클래스 ______GamePiece 클래스 만들기 ____________실습 예제 | GamePiece 클래스 생성: 선언 영역 ______GamePiece 생성자 ____________실습 예제 | GamePiece 생성자 코드 작성 ______GamePiece 업데이트 ____________실습 예제 | GamePiece 클래스 함수 작성 첫 번째: 속성 업데이트 ______파이프 회전 ____________실습 예제 | GamePiece 클래스 함수 작성 두 번째: 회전 ______파이프 커넥터 ____________실습 예제 | GamePiece 클래스 함수 작성 세 번째: 연결 함수 ______스프라이트 시트 좌표계 ____________실습 예제 | GamePiece 클래스 함수 작성 네 번째: GetSourceRect ___GameBoard 클래스 ____________실습 예제 | GameBoard.cs 파일과 클래스 생성 ______GameBoard 만들기 ____________실습 예제 | GameBoard 초기화 ______GamePiece 업데이트 ____________실습 예제 | GameBoard 제어 ______공백 채우기 ____________실습 예제 | 공백 채우기 ______새로운 파이프 생성 ____________실습 예제 | 새로운 파이프 생성 ______물로 채워진 파이프 처리 ____________실습 예제 | 물로 채워진 파이프 관리 ______파이프를 통한 물 흐름처리 ____________실습 예제 | 파이프 연결 관계 만들기 ___게임 만들기 ______선언 영역 ____________실습 예제 | Game1 선언 영역 ______초기화: Initialize() 함수 ____________실습 예제 | Initialize() 함수 업데이트 ______Draw() 함수: 타이틀 화면 ____________실습 예제 | 타이틀 화면 그리기 ______Draw() 함수: 게임 플레이 화면 ____________실습 예제 | 플레이 화면 그리기 ______점수 관리 ____________실습 예제 | 연결된 파이프 개수에 따른 점수 계산 ______입력 처리 ____________실습 예제 | 마우스 입력 처리 ______플레이 가능하게 만들기 ____________실습 예제 | 플레이 가능하게 만들기 ___게임 실행 ___정리 3장 플러드 컨트롤: 게임 완성도 높이기 ___파이프 애니메이션 ______파이프 애니메이션을 위한 클래스 ____________실습 예제 | 파이프 회전 ____________실습 예제 | 떨어지는 파이프 애니메이션 ____________실습 예제 | 사라지는 파이프 애니메이션 ______파이프 애니메이션 관리 ____________실습 예제 | 파이프 애니메이션 지원을 위한 GameBoard 클래스 수정 ______페이드 애니메이션 ____________실습 예제 | 페이드 애니메이션 객체 추가 ______낙하 애니메이션 ____________실습 예제 | 낙하 애니메이션 객체 추가 ______회전 애니메이션 ____________실습 예제 | 회전 애니메이션 객체 추가 ______UpdateAnimatedPieces() 함수 호출 ____________실습 예제 | 파이프를 애니메이션 업데이트를 위한 Game1 클래스 수정 ______파이프 애니메이션 그리기 ____________실습 예제 | 파이프 애니메이션을 그리기 위해 Game1 클래스 수정 _________SpriteBatch 확장 ___SpriteFont ____________실습 예제 | SpriteFont 추가 ______점수 출력 ____________실습 예제 | 점수 출력 ______ScoreZooms ____________실습 예제 | ScoreZoom 클래스 생성 ____________실습 예제 | ScoreZoom 출력과 업데이트 ______GameOver 상태 추가 ____________실습 예제 | Game Over ___홍수 처리 ____________실습 예제 | 홍수 수치 관리 ______홍수 그리기 ____________실습 예제 | 홍수 그리기 ______게임 난이도 높이기 ____________실습 예제 | 난이도 높이기 ___정리 4장 아스테로이드 벨트 어설트: 우주 미아 ___프로젝트 생성 ____________실습 예제 | 아스테로이드 벨트 어설트 프로젝트 생성 ___'스프라이트'의 또 다른 정의 ______Sprite 클래스 생성 ____________실습 예제 | Sprite 클래스 정의 ____________실습 예제 | Sprite 생성자 ____________실습 예제 | Sprite 기본 프로퍼티 ____________실습 예제 | animation과 drawing 프로퍼티 ______충돌 감지 ____________실습 예제 | 충돌 감지 지원하기 ______이동과 애니메이션 ____________실습 예제 | 애니메이션 프레임 추가 ____________실습 예제 | Sprite 업데이트 ____________실습 예제 | 스프라이트 그리기 ___스프라이트 기반 우주전장 생성 ____________실습 예제 | StarField 클래스 생성 ____________실습 예제 | StarField 업데이트와 그리기 ____________실습 예제 | StarField 보기 ___애니메이션 스프라이트: 소행성 ____________실습 예제 | AsteroidManager 클래스 생성 ______소행성 배치 ____________실습 예제 | 소행성 배치하기 ____________실습 예제 | 소행성의 위치 체크하기 ____________실습 예제 | 소행성 그리기와 업데이트 ___소행성 충돌 ____________실습 예제 | 튕겨나가는 소행성 1 ____________실습 예제 | 튕겨나가는 소행성 2 ___플레이어와 적의 미사일 ____________실습 예제 | ShotManager 클래스 추가하기 ____________실습 예제 | 미사일 발사 ____________실습 예제 | 미사일 업데이트와 그리기 ___플레이어 추가 ____________실습 예제 | PlayerManager 클래스 추가 ______사용자 입력 다루기 ____________실습 예제 | 사용자 입력 다루기 ____________실습 예제 | 플레이어의 우주선을 업데이트하고 그리기 ___적 우주선 ____________실습 예제 | Enemy 클래스 생성 ____________실습 예제 | 경로 관리 ____________실습 예제 | 적 업데이트와 그리기 ______EnemyManager 클래스 ____________실습 예제 | EnemyManager 클래스 생성 ______좌표 관리 ____________실습 예제 | EnemyManager 클래스 설정하기 ____________실습 예제 | 적 배치하기 ____________실습 예제 | EnemyManager 업데이트와 그리기 ___정리 5장 아스테로이드 벨트 어설트: 특수 효과 ___폭발 효과 ______스프라이트 확장하기: 입자 ____________실습 예제 | Particle 클래스 구성하기 ____________실습 예제 | 입자 업데이트와 그리기 ______입자 폭발 ____________실습 예제 | ExplosionManager 클래스 ____________실습 예제 | 폭발 생성하기 ____________실습 예제 | 폭발 업데이트와 그리기 ___충돌 매니저 ____________실습 예제 | CollisionManager 클래스 생성 ______충돌 제어 ____________실습 예제 | 플레이어 미사일 충돌 ____________실습 예제 | 플레이어 충돌 ____________실습 예제 | CollisionManager 클래스 사용하기 ___사운드 효과 ______사운드 효과 생성과 검색 ______XNA에서의 사운드 ____________실습 예제 | 사운드 효과 매니저 구현하기 ____________실습 예제 | SoundManager 클래스 사용하기 ___게임 구조 ____________실습 예제 | 게임 구조 정하기 ____________실습 예제 | 게임 구조 그리기 ___정리 6장 로봇 소동: 멀티 축 카오스 ___스태틱, 스태틱, 스태틱 ____________실습 예제 | 로봇 소동 프로젝트 생성 ___화면보다 더 큰 세상 ______카메라 정의 ____________실습 예제 | Camera 클래스 생성 ______월드를 아는 스프라이트 ____________실습 예제 | 새로운 Sprite 클래스 생성 ______뷰 시각화 ____________실습 예제 | Sprite와 Camera 클래스 액션 보기 ___게임 월드: 타일 기반 맵 ______타일 ______타일 맵 ____________실습 예제 | TileMap 클래스 생성 ______맵 스퀘어 ____________실습 예제 | 맵 스퀘어 다루기 ______타일 다루기 ____________실습 예제 | 타일 다루기 ______맵 그리기 ____________실습 예제 | 타일 맵 그리기 ______랜덤 맵 생성 ____________실습 예제 | 임의로 벽 교체하기 ___플레이어 추가 ______Player 클래스 구현 ____________실습 예제 | Player 클래스 구현하기 ______월드 돌아다니기 ____________실습 예제 | 입력 다루기 ______경계 설정 ____________실습 예제 | 경계 설정하기 ______타일에서의 움직임 ____________실습 예제 | 벽에 부딪히기 ___정리 7장 로봇 소동: 많고 많은 탄환 ___시각화 효과 ______입자 다시 살펴보기 ____________실습 예제 | Particle 클래스 ______EffectsManager 클래스 ____________실습 예제 | EffectsManager 클래스 ____________실습 예제 | 폭발 구현하기 ____________실습 예제 | 스파크 효과 ___무기 추가 ______WeaponManager 클래스 ____________실습 예제 | WeaponManager클래스 시작하기 ______무기 업그레이드 ____________실습 예제 | 새로운 무기 ______포탄과 맵의 충돌 ____________실습 예제 | 타일과 포탄의 충돌 ______파워 업 ____________실습 예제 | 파워 업 ______여전히 발생하는 문제 ___경로 찾기 ______A* 경로 찾기 알고리즘 ______A* 구현하기 ____________실습 예제 | PathNode 클래스 ____________실습 예제 | A* 알고리즘 구현 시작하기 ____________실습 예제 | 경로 찾기 ____________실습 예제 | 적합한 스퀘어 ______파워 업 아이템의 안전한 배치 ____________실습 예제 | WeaponManger 클래스 업데이트 ___플레이어의 목표 ______컴퓨터 터미널 ____________실습 예제 | 컴퓨터 터미널 생성 ______컴퓨터 터미널 배치 ____________실습 예제 | GoalManager 클래스 ___적 로봇 ______적에 대한 기본적인 사항 ____________실습 예제 | Enemy 클래스 구현하기 ______움직이는 적 ____________실습 예제 | 적의 AI 함수 ______적 로봇 매니저 ____________실습 예제 | 적 로봇 매니저 ______WeaponManager 업데이트 ____________실습 예제 | 적 파괴하기 ___게임 구조 ____________실습 예제 | GameManager 클래스 ______점수 유지 ____________실습 예제 | 점수 얻기 ______Game1 업데이트 ____________실습 예제 | Game1 클래스 업데이트 ___정리 8장 보석 사냥꾼: 플렛폼 게임 개발 시작 ___그래픽 리소스 준비 ___실습 예제 | 프로젝트 만들기 ___향상된 타일 엔진 ____________실습 예제 | MapSquare 클래스 ______카메라 클래스 코드의 재활용 ____________실습 예제 | Camera 클래스 ______타일 엔진 구성 ____________실습 예제 | TileMap 클래스 1단계 ____________실습 예제 | TileMap 클래스 2단계 ______타일 맵 그리기 ____________실습 예제 | TileMap 클래스 3단계 ____________실습 예제 | 타일 맵을 게임 프로젝트에 추가 ___맵 에디터 프로젝트 ______맵 에디터 프로젝트 생성 ____________실습 예제 | Level Editor 프로젝트 생성 ______폼 추가 ____________실습 예제 | Form 추가 ____________실습 예제 | 이벤트 핸들러 추가 ______폼 UI 만들기 ____________실습 예제 | 메뉴 바 생성 ____________실습 예제 | 타일 선택 컨트롤 ____________실습 예제 | 스크롤바 추가 ____________실습 예제 | 컨트롤 작업 마무리 ______Game1 클래스 수정 ____________실습 예제 | Game1 클래스 수정 ____________실습 예제 | Game1 클래스의 Update() 함수 수정 ______폼과 게임 연결 ____________실습 예제 | 맵 에디터 완성하기 1단계 ____________실습 예제 | 타일 스크롤링 문제 해결 ______맵 데이터 읽기와 저장 ____________실습 예제 | 맵 데이터 읽기와 저장 기능 구현 ______Passability ______맵 코드 ___마지막 남은 이슈 해결 ____________실습 예제 | FormClosed 이벤트 핸들러 작성 ___정리 9장 보석 사냥꾼: 게임 완성 ___애니메이션 스트립 ____________실습 예제 | Animation 클래스 만들기 ___애니메이션 가능한 게임 객체 ____________실습 예제 | GameObject 클래스 작성 1 ______객체 이동 처리, 애니메이션 업데이트, 그리기 ____________실습 예제 | GameObject 클래스 작성 2 ______맵 기반 충돌 검사 ____________실습 예제 | GameObject 클래스 작성 3 ___플레이어 ____________실습 예제 | Player 클래스 생성 ______달리기 ____________실습 예제 | Update 함수 오버라이딩 1 ______점프 ____________실습 예제 | Update() 함수 오버라이딩 2 ______화면 중심으로 캐릭터 배치 ____________실습 예제 | 카메라 위치 수정 ___레벨 로드 ______LevelManager 클래스 ____________실습 예제 | LevelManager 클래스 생성 ___보석 ____________실습 예제 | GemStone 클래스 생성 ______점수 관리 ____________실습 예제 | 점수 관리 구현 ___적 구현 ____________실습 예제 | 좀비 생성 ______플레이어와 적 사이의 상호작용 ____________실습 예제 | 좀비와 상호작용 ___레벨 이동 ____________실습 예제 | 레벨 이동 지원 ___나머지 Code 처리 ____________실습 예제 | Code 처리 ___게임 구조 ____________실습 예제 | 게임 상태 구현 ___정리 |
|
2007년 마이크로소프트의 이매진컵ImagineCup을 준비하면서 처음 접했던 XNA 1.0이 이제 5년의 시간이 흘러 4.0이 됐습니다. 처음 배울 때 레퍼런스가 없어 많은 삽질을 통해 괴로워하고 깨달았던 기억이 아직도 생생합니다. 공모전이라는 특성상 데드라인은 정해진 것이고, 게임은 반드시 개발해야 했기에 그 어느 때보다 스트레스가 심했습니다. 다행히 이런 노력이 좋은 결과로 이어져 이매진컵 2008에서 게임 개발 분야 세계 3위를 수상했습니다. 상은 받았지만, 목표를 잃어 마음 한 구석이 허탈해진 제게 당시 한국 마이크로소프트의 유재성 사장님께서 "이렇게 공모전을 통해 배운 열정과 지식을 이제 후배들에게 알려주는 일이 남아있다."라고 말씀해주셨습니다. 이후 지식 공유는 제 인생의 한 축이 됐습니다.
2008년 후반부터 지금까지 XNA 게임 개발과 관련된 내용을 블로그, 강연, 멘토링, 카페, 이메일 등 다양한 방법으로 알리고 있지만, 주로 공모전과 학교 과제에서만 XNA를 이용해 아직 제대로 활성화되지 않고 있습니다. 다행히 윈도우폰 7의 게임 개발에서 XNA가 필수가 되면서 이제 XNA가 좀 더 알려질 수 있게 됐습니다. 『XNA 4.0 Game Development by Example 한국어판』은 초보자도 쉽게 따라 하고 호기심을 느끼도록 다양한 장르의 게임(플랫포머, 퍼즐, 비행기 슈팅, 2D 탱크 게임)을 튜토리얼 형태로 소개합니다. XNA를 처음 접하는 독자를 대상으로 작성된 책이기 때문에 부담 없이 배울 수 있습니다. 그럼에도 불구하고 책을 공부하면서 이해되지 않는 부분이 있을 수 있어, 이를 위해 XNADev(http://xnadev.co.kr) 사이트에 질문을 올릴 수 있는 공간을 만들어 뒀습니다. 간단한 질문에도 번개처럼 성실한 답변을 해드리니 부담 없이 질문을 올려주세요. 또한 네이버 XNA 카페(http://cafe.naver.com/xna)에 올리거나, 역자에게 직접 이메일을 보내도 됩니다. - 김동훈 #define XNA XNA라는 단어가 딱히 어떤 의미를 가진 단어는 아니라는 마이크로소프트의 공식 답변에도 불구하고 XNA는 어째서인지 무언가를 의미할 것만 같습니다. 2005년 GDC에서 프로젝트로 발표된 이후 PC, 엑스박스, 준(Zune)을 거쳐 윈도우폰 7의 주요 기술로 자리매김한 XNA는 많은 개발자와 기획자, 디자인/사운드 효과 팀이 협업하며, 그들의 메시지를 담는 게임을 만드는 개발 경험을 이끌어왔습니다. your dream game - build it today - millions may play it tomorrow "여러분의 꿈의 게임, 오늘 만들어 보세요, 내일이면 전 세계 수백만 명이 즐길 것입니다."라는 모토를 가진 XNA를 『XNA 4.0 Game Development by Example 한국어판』을 통해 국내에 소개할 수 있게 된 것은 제게 매우 행운이라고 생각합니다. 단순히 레퍼런스가 아니라 게임을 이야기할 수 있는 내용으로 구성된 책이기 때문에 제게도 더 의미 있는 작업이 될 수 있었고, 독자 여러분께도 좋은 메시지를 전달할 수 있으리라 기대합니다. - 김유나 - 김동훈 #define XNA XNA라는 단어가 딱히 어떤 의미를 가진 단어는 아니라는 마이크로소프트의 공식 답변에도 불구하고 XNA는 어째서인지 무언가를 의미할 것만 같습니다. 2005년 GDC에서 프로젝트로 발표된 이후 PC, 엑스박스, 준(Zune)을 거쳐 윈도우폰 7의 주요 기술로 자리매김한 XNA는 많은 개발자와 기획자, 디자인/사운드 효과 팀이 협업하며, 그들의 메시지를 담는 게임을 만드는 개발 경험을 이끌어왔습니다. your dream game - build it today - millions may play it tomorrow "여러분의 꿈의 게임, 오늘 만들어 보세요, 내일이면 전 세계 수백만 명이 즐길 것입니다."라는 모토를 가진 XNA를 『XNA 4.0 Game Development by Example 한국어판』을 통해 국내에 소개할 수 있게 된 것은 너무나 행운이라고 생각합니다. 단순히 레퍼런스가 아니라 게임을 이야기할 수 있는 내용으로 구성된 책이기 때문에 제게도 더 의미 있는 작업이 될 수 있었고, 독자 여러분께도 좋은 메시지를 전달할 수 있으리라 기대합니다. - 김유나 ---옮긴이의 글 중에서 |
|
이 책에서는 XNA를 통해 게임을 만드는 데 필요한 개념과 구현 요소를 소개한다. 퍼즐 게임, 비행 슈팅 게임, 엑스박스 360 게임패드를 활용한 탱크 게임, 슈퍼마리오 스타일의 플랫폼 게임까지 다양한 장르의 예제 게임을 제공하고, 독자의 아이디어와 창의성을 게임에 적용하는 데 필요한 배경 지식과 구현 기술을 소개한다.
★ 이 책에서 다루는 내용 ★ ■ XNA 게임 스튜디오 설치와 게임 프로젝트 생성 ■ 게임 상태, 재귀 호출, 2D 스프라이트 애니메이션을 이용한 퍼즐 게임 개발 ■ 사운드 효과와 충돌, 입자 기반 폭발을 통한 비행 슈팅 게임 개발 ■ 타일 맵과 경로 찾기, 다수의 총알을 구현하기 위한 입자 시스템이 적용된 탱크 게임 개발 ■ XNA와 윈도우 폼이 결합된 멀티레이어 타일 맵을 지원하는 맵 에디터 개발 ■ 맵 에디터와 타일 엔진이 통합된 슈퍼마리오 스타일의 플랫폼 게임 개발 ★ 이 책의 특징 ★ ■ 필수 노하우에 대한 친절하고 명쾌한 단계적 설명 ■ 배운 내용을 바로 응용할 수 있는 경험을 통한 학습 ■ 지겹고 뻔한 내용의 과감한 생략 ■ 독자의 상상력을 자극하는 생생하고 재미있는 예제 ■ 참여를 유도하는 예제와 과제 ★ 이 책의 대상 독자 ★ XNA 프레임워크로 게임을 만드는 데 관심 있는 개발자에게 이 책을 추천한다. 또한 이 책은 게임 개발 경험이 없는 개발자도 쉽게 따라올 수 있게 구성했다. 물론 C#에 대한 기본적인 이해와 지식이 있다면 빠르게 배울 수 있지만, 없더라도 시작할 수 있게 책에서 기본 요소를 충분히 설명했다. ★ 이 책의 구성 ★ 1장. XNA 게임 스튜디오 소개에서는 XNA 프레임워크의 역사, XNA 설치법, XNA 게임 스튜디오에 대해 알아본다. 1장 후반부에서부터 실습을 시작해 '사각형 추적하기'라는 미니 게임을 만든다. 2장. 플러드 컨트롤: 수중 퍼즐 게임에서는 플러드 컨트롤이라는 퍼즐 게임을 소개한다. 이 게임을 통해 XNA 콘텐츠 파이프라인 사용법과 기본적인 게임 상태 처리, 재귀 함수 호출을 통한 점수 계산 방법을 알아본다. 3장. 플러드 컨트롤: 게임 완성도 높이기에서는 미완성인 플러드 컨트롤을 좀 더 다듬어 회전/낙하/페이드 애니메이션 효과와 점수 처리, 텍스트 출력 방법 등을 알아본다. 4장. 아스테로이드 벨트 어설트: 우주 미아에서는 우주 공간을 소재로 슈팅 게임인 아스테로이드 벨트 어설트를 소개한다. 이 게임을 통해 슈팅 게임의 기본기와 입자 시스템을 사용한 전장 움직임, 프레임 기반 스프라이트 애니메이션을 알아본다. 또한 전장에 움직이는 소행성을 추가해 플레이어와 충돌을 처리하고, 적 우주선과의 상호작용을 통해 현실적인 느낌과 재미를 줄 수 있도록 한다. 5장. 아스테로이드 벨트 어설트: 특수 효과에서는 아스테로이드 벨트 어설트에 추가할 효과를 소개한다. 플레이어와 적 비행기, 소행성, 포탄 간의 충돌에 따라 입자 폭발 효과를 추가하고, 사운드를 재생하는 방법을 알아본다. 6장. 로봇 소동: 멀티 축 카오스에서는 탱크 게임을 통해 엑스박스 360의 컨트롤러와 키보드를 통해 플레이어를 움직이고 미사일을 발사하는 게임을 만든다. 타일 기반의 맵과 카메라 클래스를 두어 큰 게임 세계의 화면 출력을 관리하는 방법과, 타일 맵의 벽과 플레이어의 충돌 처리 방법을 알아본다. 7장. 로봇 소동: 많고 많은 탄환에서는 입자 기반 충돌 시스템을 확장해 많은 총탄을 구현하는 방법과, 적 배치, 승리 조건, 무기 업그레이드 시스템 등을 알아본다. 또한 A* 경로 찾기 알고리즘을 구현해 적의 탱크가 플레이어를 추격할 수 있게 한다. 8장. 보석 사냥꾼: 플랫폼 게임 개발 시작에서는 보석 사냥꾼 게임을 통해 점프와 뛰기를 기반으로 한 횡 스크롤 게임 방식을 알아본다. 7장에서 구현한 타일 맵 시스템을 더 발전시켜 멀티레이어를 지원하고, XNA와 윈도우 폼을 엮어 맵 에디터를 만든다. 맵 에디터 프로젝트를 만들면서 여러 프로젝트를 포함하는 솔루션을 구성하는 방법과 게임 라이브러리 프로젝트를 만드는 방법을 알아본다. 9장. 보석 사냥꾼: 게임 완성에서는 8장에서 완성한 맵 에디터 파일을 읽어 들여 실제 게임으로 만들고, 플레이어와 적, 보석 간의 상호작용을 구현한다. 완성된 게임을 만들기 위한 이벤트 처리와 객체지향 구조 설계를 통해 여러분은 XNA 전문가가 될 수 있을 것이다. |