책 소개
파이썬을 통해 본격적으로 상업용 게임을 만든다!
25년차 현직 게임 프로그래머가 알려 주는 게임 개발 노하우!
이 책은 프로그래밍 언어인 파이썬(Python)을 사용해 본격적인 게임 개발 방법을 설명한 《파이썬으로 배우는 게임 개발 입문편》의 후편으로 파이썬에 관한 지식이 있다면 이번 실전편부터 읽기 시작해도 게임 개발의 노하우를 확실하게 배울 수 있습니다. 이 책에서는 액션 게임, 슈팅 게임, 그리고 유사 3D 영상 표현을 활용한 3D 카 레이싱 게임을 만들어 봅니다. 또한, 이미 입문편에서 몇 가지 미니 게임, 블록 낙하 퍼즐, 롤플레잉 게임 제작 방법을 설명하고 있으므로 함께 읽으면 보다 폭넓은 장르의 게임 개발을 배울 수 있습니다.
이 책에서는 다양한 상업용 게임 소프트웨어를 개발해 온 필자의 경험을 바탕으로, 게임 개발에 필요한 테크닉을 총망라했으므로 독자 여러분이 오리지널 게임을 만들 때 참고할 수 있습니다. 또한, 게임 개발을 통해 파이썬을 보다 깊이 학습할 수 있도록 염두에 두었으므로 파이썬을 보다 잘 사용하고 싶은 분도 충분히 활용할 수 있으리라 생각합니다. 취미로 게임을 개발하고 싶은 분, 프로그래머라는 큰 꿈을 실현하고 싶은 분을 포함한 모든 분에게 이 책이 도움이 된다면 무엇보다 행복할 것 같습니다.
─ '머리말' 중에서
이 책의 대상 독자
- 국내외 게임 개발 회사에 취업하려는 분
- 게임 크리에이터를 꿈꾸는 분
- 오픈마켓 판매용이나 취미, 개인 소장용으로 게임을 만들고 싶은 분
- 파이썬을 쉽고 재미있게 배우고 싶은 분
작가 소개
지은이 : 히로세 츠요시
와세다 대학교 이공학부를 졸업하고 남코에서 기획자로, 닌텐도와 코나미의 합병회사에서 프로그래머와 디렉터로 근무했다. 이후 유한회사인 월드와이드 소프트웨어를 설립하여 가정용 게임 소프트웨어, 상용 게임기, 휴대전화용 애플리케이션, 웹 애플리케이션 등을 개발해 왔다. 게임 개발사를 운영하는 것 외에도 교육 기관에서 프로그래밍과 게임 개발을 지도하고 있으며, 책도 집필 중이다. 중학교 시절 처음으로 게임을 만들었으며, 이후 본업은 물론 취미로 C/C++, 자바, 자바스크립트, 파이썬 등 다양한 프로그래밍 언어로 게임을 개발하고 있다. 저서로는 《가장 재미있는 자바스크립트 입문 교실(いちばんやさしい JavaScript 入門教室)》, 《가장 재미있는 자바 입문 교실(いちばんやさしい Java 入門教室)》 등이 있다.
옮긴이 : 김연수
소프트웨어 엔지니어이자 번역가다. '나와 주변을 끊임없이 변화시키며 좋은 지식을 전달하는 것'과 '스스로 지속할 수 있는 삶'에 관심이 많아 번역을 시작했다. 옮긴 책으로는 『카이젠 저니』, 『알파 제로를 분석하며 배우는 인공지능』, 『파이썬으로 배우는 게임 개발 입문편 & 실전편』, 『다양한 예제로 배우는 CSS 설계 실전 가이드』, 『효율적 개발로 이끄는 파이썬 실천 기술』(이상 제이펍), 『IT, 전쟁과 평화』, 『팀 토폴로지』(이상 에이콘), 『마케팅 성공률을 높여주는 구글 애널리틱스』(이상 위키북스) 등이 있다.
목 차
1장 게임 개발 기초 지식 1 1
Lesson 1-1 키 입력 2
Lesson 1-2 실시간 처리 7
Lesson 1-3 캐릭터 애니메이션 10
Lesson 1-4 2차원 리스트를 활용한 맵 데이터 처리 18
Lesson 1-5 바닥과 벽 판정 21
COLUMN 파이썬 통합 개발 환경 24
2장 게임 개발 기초 지식 2 29
Lesson 2-1 히트 체크 1 30
Lesson 2-2 히트 체크 2 34
Lesson 2-3 삼각함수 사용법 37
Lesson 2-4 인덱스와 타이머 46
Lesson 2-5 미니 게임을 만들자! 50
COLUMN 게임의 세계관 59
3장 액션 게임을 만들자! -전편- 61
Lesson 3-1 닷-잇 게임이란? 62
Lesson 3-2 미로 표시하기 65
Lesson 3-3 캐릭터 이동하기 68
Lesson 3-4 캐릭터 방향과 애니메이션 74
Lesson 3-5 캐릭터를 부드럽게 움직이기 79
Lesson 3-6 아이템 획득 시 점수 올리기 87
Lesson 3-7 적 등장시키기 92
Lesson 3-8 타이틀, 클리어, 게임 오버 98
COLUMN BASIC과 파이썬 109
4장 액션 게임을 만들자! -후편- 111
Lesson 4-1 여러 스테이지 조합하기 112
Lesson 4-2 캐릭터의 남은 수명 적용하기 123
Lesson 4-3 새로운 적 등장시키기 129
Lesson 4-4 엔딩 만들기 139
Lesson 4-5 다양한 스테이지 준비하기 154
Lesson 4-6 맵 에디터 제작하기 1 156
Lesson 4-7 맵 에디터 제작하기 2 159
COLUMN 유명 애니메이션 게임 개발 비하인드 스토리 1 165
5장 Pygame 사용법 169
Lesson 5-1 Pygame이란? 170
Lesson 5-2 Pygame 설치 172
Lesson 5-3 Pygame의 기본적인 사용법 176
Lesson 5-4 Pygame으로 이미지 그리기 181
Lesson 5-5 이미지 회전, 확대, 축소하기 185
Lesson 5-6 동시에 키 입력하기 189
COLUMN 레트로 게임이란? 192
6장 슈팅 게임을 만들자! -상편- 195
Lesson 6-1 슈팅 게임이란? 196
Lesson 6-2 Pygame으로 고속 스크롤 구현하기 200
Lesson 6-3 플레이어 기체 움직이기 203
Lesson 6-4 탄환 발사하기 212
Lesson 6-5 여러 탄환 발사하기 216
Lesson 6-5 탄막 펼치기 223
COLUMN 유명 애니메이션 게임 개발 비하인드 스토리 2 230
7장 슈팅 게임을 만들자! -중편- 233
Lesson 7-1 적 기체 처리하기 234
Lesson 7-2 적 기체 격추하기 245
Lesson 7-3 폭발 연출 추가하기 252
Lesson 7-4 실드 추가하기 260
Lesson 7-5 타이틀, 게임 플레이, 게임 오버 269
COLUMN 단 3줄로 파티 게임을 만들 수 있는 파이썬 280
8장 슈팅 게임을 만들자! -하편- 283
Lesson 8-1 사운드 추가하기 284
Lesson 8-2 적 종류 늘리기 297
Lesson 8-3 보스 기체 등장시키기 306
Lesson 8-4 게임 완성하기 319
COLUMN 게임 패드로도 조작할 수 있다! 333
9장 3D 카 레이싱 게임을 만들자! -상편- 337
Lesson 9-1 카 레이싱 게임이란? 338
Lesson 9-2 3D CG와 유사 3D란? 341
Lesson 9-3 원근법에 관해 344
Lesson 9-4 도로 표시 방법 고려하기 346
Lesson 9-5 유사 3D로 도로 그리기 pt. 1 349
Lesson 9-6 유사 3D로 도로 그리기 pt. 2 354
Lesson 9-7 도로 커브 표현하기 357
Lesson 9-8 도로 기복 표현하기 pt. 1 362
Lesson 9-10 도로 기복 표현하기 pt. 2 366
COLUMN 도로를 자유롭게 바꾸는 프로그램 370
10장 3D 자동차 레이싱 게임을 만들자! -중편- 373
Lesson 10-1 Pygame 사용하기 374
Lesson 10-2 코스를 실감나게 그리기 376
Lesson 10-3 커브에 맞춰 배경 움직이기 384
Lesson 10-4 도로 기복 표현하기 389
Lesson 10-5 차선 구분선 그리기 395
Lesson 10-6 코스 정의 pt1. - 커브 데이터 400
Lesson 10-7 코스 정의 pt.2 - 기복 데이터 404
Lesson 10-8 코스 정의 pt.3 - 도로 주변 건물 407
Lesson 10-9 플레이어 차량 제어하기 415
COLUMN 처리 누락 판정하기 428
11장 3D 자동차 레이싱 게임을 만들자! -후편- 431
Lesson 11-1 컴퓨터 차량 추가하기 432
Lesson 11-2 차량 충돌 판정 추가하기 444
Lesson 11-3 시작부터 골까지의 흐름 453
Lesson 11-4 랩 타임 추가하기 464
Lesson 11-5 차종 선택 추가하기 476
COLUMN 컴퓨터 게임 인공지능 489
특별부록 Game Center 208X 493
1 Game Center 208X 494
2 블록 낙하 퍼즐 '애니멀' 501
이 책을 마치며 502
찾아보기 504
| 재화 등의 배송방법에 관한 정보 | 상품 상세설명페이지 참고 |
|---|---|
| 주문 이후 예상되는 배송기간 | 상품 상세설명페이지 참고 |
| 제품하자가 아닌 소비자의 단순변심, 착오구매에 따른 청약철회 시 소비자가 부담하는 반품비용 등에 관한 정보 | 배송ㆍ교환ㆍ반품 상세설명페이지 참고 |
| 제품하자가 아닌 소비자의 단순변심, 착오구매에 따른 청약철회가 불가능한 경우 그 구체적 사유와 근거 | 배송ㆍ교환ㆍ반품 상세설명페이지 참고 |
| 재화등의 교환ㆍ반품ㆍ보증 조건 및 품질보증 기준 | 소비자분쟁해결기준(공정거래위원회 고시) 및 관계법령에 따릅니다. |
| 재화등의 A/S 관련 전화번호 | 상품 상세설명페이지 참고 |
| 대금을 환불받기 위한 방법과 환불이 지연될 경우 지연에 따른 배상금을 지급받을 수 있다는 사실 및 배상금 지급의 구체적 조건 및 절차 | 배송ㆍ교환ㆍ반품 상세설명페이지 참고 |
| 소비자피해보상의 처리, 재화등에 대한 불만처리 및 소비자와 사업자 사이의 분쟁처리에 관한 사항 | 소비자분쟁해결기준(공정거래위원회 고시) 및 관계법령에 따릅니다. |
| 거래에 관한 약관의 내용 또는 확인할 수 있는 방법 | 상품 상세설명페이지 및 페이지 하단의 이용약관 링크를 통해 확인할 수 있습니다. |
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
| 반품사유 | 반품 배송비 부담자 |
|---|---|
| 단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
| 고객 부담이 아닙니다. |
| 진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
|---|---|---|---|
| 어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
| 환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
| 결제수단 | 환불시점 | 환불방법 |
|---|---|---|
| 신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
| 계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
| 휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
| 포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
| 상품군 | 취소/반품 불가사유 |
|---|---|
| 의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
| 계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
| 가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
| 자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
| CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
| 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
| 노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |










