본문 바로가기

도서 소개

레트로 게임 개발 바이블

 

실기에서 돌아가는 진정한 레트로 게임 개발, 어른이 된 지금이라면 만들 수 있다

 

도서구매 사이트(가나다순)

[교보문고] [도서11번가] [알라딘] [예스이십사] [인터파크] [쿠팡]


전자책 구매 사이트
(가나다순)

교보문고 / 구글북스 / 리디북스 / 알라딘 / 예스이십사

 

출판사 제이펍
저작권사 제이펍
원서명 (없음)
도서명 레트로 게임 개발 바이블
부제 MSX, MS-DOS 등 거의 모든 레트로 시스템에서 작동하는 게임을 C 언어로 개발하는 법
지은이 박주항
옮긴이 (없음)
감수자 (없음)
시리즈 (없음)
출판일 2023. 01. 05
페이지 560쪽
판 형 46배판변형(188*245*26.9)
제 본 무선(soft cover)
정 가 44,000원
ISBN 979-11-92469-78-2 93000
키워드 MSX, DOS, 도스, C, 디버깅, 크로스플랫폼, SDCC, DJGPP, 알레그로, C64, NES, 아미가, PCE, MD, GB, SFC, 3DO, 세가 새턴, GBA
분 야 게임 개발 / 소프트웨어 공학

 

관련 사이트 / 관련 파일 다운로드
도서의 ‘참조 페이지’

관련 포스트

2022.12.19 - [출간 전 책 소식] - 어른이 된 지금이라면 만들 수 있다

 

관련 시리즈

■ (없음)

 

관련 도서

■ (없음)

 




강의 보조 자료(교재로 채택하신 분들은 메일(textbook@jpub.kr)을 보내주시면 다음 자료를 보내드립니다.)
■ 본문의 그림과 표

 

미리보기(차례, 베타리더 후기, 프롤로그, 이 책에 대하여, 1장, 2장 일부)

 

정오표 페이지
■ (등록되는 대로 링크를 걸겠습니다.)

 

도서구매 사이트(가나다순)

[교보문고] [도서11번가] [알라딘] [예스이십사] [인터파크] [쿠팡]


전자책 구매 사이트
(가나다순)

교보문고 / 구글북스 / 리디북스 / 알라딘 / 예스이십사

 

도서 소개

추억 속의 레트로 게임을 모던 개발 툴로 제작하는 거의 모든 방법

 

잠시 1980년대 말로 돌아가자. 당신은 지금 8비트 컴퓨터 앞에 앉아 ‘MSX BASIC 게임’ 같은 책을 보고 있다. 의미도 모른 채 한 글자 한 글자 코드를 입력한 끝에 "RUN"을 치자 게임이 실행될 때의 감격, 하지만 곧 게임 중 뜬 "Syntax error" 앞에 좌절했던 기억. 그땐 게임이 어떻게 돌아가는지, 에러가 왜 나는지도 몰랐지만, 그 환희의 순간을 잊지 못해 지금도 게임을 만들거나 플레이하고 있지는 않은가. 그때는 완성하지 못했던 MSX 게임, 지금이라면 완성할 수 있다.

 

이 책은 크게 MSX와 MS-DOS를 중심으로, 레트로 플랫폼에서 작동 가능한 게임을 오늘날의 도구와 C 언어로 개발하는 방법을 파헤친다. 이를 위해 저자는 MSX 하드웨어 스펙이나 MS-DOS의 메모리 모델 등 오늘날 찾기 어려운 ‘과거의’ 지식을 치밀하게 발굴하고 정리해 현세대 개발자들이 이해할 수 있게 설명한다. 버전 이슈를 막고 실습 편의를 높이기 위해, 각종 툴을 포함한 배포판, 예제 소스 코드, 동영상, 도구 링크 등의 자료를 온라인으로 제공한다.

 

MSX와 MS-DOS용 코드를 작성하고 빌드하는 데에서 그치지 않고, 이를 윈도우, 안드로이드, MS-DOS(MSX의 경우) 등으로 포팅하며 크로스 플랫폼 프로그래밍 기법을 익힌다. 또한 로직 작성만큼이나 디버깅을 중요시하여, 곳곳에 동적 디버깅을 도입해 개발 시간을 줄이고 플랫폼에 대한 이해도 높일 수 있게 했다. 마지막으로 MSX와 MS-DOS에서의 개발 방식을 확장해 코모도어 64, 패미컴, 아미가 등 10개 레트로 플랫폼에서 게임을 개발하는 방법도 개괄함으로써 유일무이한 레퍼런스로서의 가치를 노정한다.

 

386, 486도 아니고 8비트 컴퓨터의 각종 제약을 극복하며 게임 제작에 필요한 개발 스킬을 익히는 것이 이 책의 핵심이다. 엔진과 프레임워크에 매몰되어 초심을 잃은 게임 개발자라면, 이 책을 통해 ‘세대를 초월한 프로그래밍의 재미’를 되찾고 다시 타오를 수 있을 것이다.

 

책의 구성

1부는 MSX 플랫폼을 개괄하고, 빌드 시스템 및 WSL 환경을 구축한다. 2부의 핵심은 C 언어로 작성된 ubox MSX 라이브러리를 활용한 게임 제작이다. 비주얼 스튜디오 코드로 간단한 샘플 코드를 작성하는 것에서 시작해, <왕가의 계곡>과 유사한 완성도 높은 게임 소스 코드를 분석하며, 맵, 스프라이트, 사운드 등 리소스 사용법과 간단한 제작법까지 살펴본다. 여기까지의 코드를 대상으로, 3부에서 처음으로 디버깅과 크로스 플랫폼 프로그래밍을 설명한다. 4부는 실제 MSX 내에서 MSX-C, MSX 베이직, 어셈블리 등으로 개발하는 방법을 살펴보고, SDCC, HI-TECH C 컴파일러, Fusion-C 등 관련 도구, 그리고 샘플 프로젝트들을 분석한다.

 

5부는 MSX 개발에서 배운 지식을 바탕으로 MS-DOS에서 작동하는 게임을 만드는 방법을 알아본다. MS-DOS 개발의 가장 큰 걸림돌인 메모리 관리 모델을 자세히 설명하고, 개발 및 디버깅의 편의를 위해 두 운영체제를 활용하는 ‘듀얼 시스템’ 방법론을 도입한다. 도스박스, DJGPP, VGALIB, 알레그로4 등으로 샘플 소스들을 빌드해보며 모던 개발 환경에서 MS-DOS 게임을 제작하는 방법을 익힌다. 디버깅 또한 한 챕터를 할애해 좀 더 자세히 다루고, SDL과 HX 도스 익스텐더를 사용한 더욱 확장된 크로스 플랫폼 프로그래밍의 가능성에 대해서도 살펴본다.

 

6부는 앞에서 익힌 지식을 바탕으로, 코모도어 64, (슈퍼)패미컴, 아미가, PC 엔진, 메가 드라이브, 게임보이 (어드밴스), 3DO, 세가 새턴 등 10가지 레트로 플랫폼에서 게임을 개발하고 빌드하는 방법을 간단히 살펴본다.

 

지은이 소개

박주항

서강대학교에서 컴퓨터공학과 물리학을 전공했으며, JCE(현 조이시티) 온라인 게임 서버 프로그래머, 라인의 백엔드 플랫폼 프로그래머, 그리고 모바일 게임 개발 회사 대표를 거쳐 현재 프리랜서로 활동 중이다. 안 되는 걸 되게 하는 것에 관심이 많으며, 고전 어드벤처 게임을 좋아해 번역되지 않은 다수의 명작 어드벤처 게임의 한국어화 패치를 제작했다.

 

주요 저서로는 한빛미디어에서 출간한 《CGSF를 활용한 게임 서버 제작》(2014), 《CGSF 파헤쳐 보기》(2014), 《C++ 개발자를 위한 WIN32 오픈소스 라이브러리 100》(2015), 《SDL과 C++를 이용한 크로스 플랫폼 프로그래밍》(2015), 에이콘에서 출간한 《C++로 나만의 운영체제 만들기》(2018), 《YUZA OS Vol.1 : 소프트웨어편》(2021) 등이 있다. 번역서로는 한빛미디어에서 출간한 《데이터베이스 첫걸음》(2016)과 에이콘에서 출간한 《Game Programming in C++》(2019), 《0부터 시작하는 OS 자작 입문》(2022)이 있다.

 

차례

베타리더 후기 xiii

프롤로그 xv

이 책에 대하여 xvii

 

PART I 준비운동

 

CHAPTER 1 MSX 플랫폼과 친해지기 3

1.1 에뮬레이터 5

1.2 MSX1 게임 7

1.3 MSX1 스펙 9

1.4 메모리 레이아웃 11

마치며 13

 

CHAPTER 2 개발 환경 구축 14

2.1 IDE 17

2.2 WSL2 18

2.3 우분투 20.04 LTS 18

2.4 빌드 시스템 및 WSL 환경 구축 19

__2.4.1 콘솔을 이용하는 방법 20 / 2.4.2 GUI 프로그램을 이용하는 방법 21

더보기

__2.4.3 retro_msx 배포판의 내용 22

2.5 소스 코드 설치 23

2.6 소스 코드 빌드 24

마치며 25

 

PART 2 MSX1 게임 개발

 

CHAPTER 3 기초 다지기 29

3.1 ubox MSX 라이브러리 30

3.2 HelloWorld 33

__3.2.1 소스 분석 35 / 3.2.2 ubox API 38

__3.2.3 crt0.z80 40 / 3.2.4 Makefile 42 / 3.2.5 실습 42

3.3 콘솔 모드 HelloWorld 43

3.4 타이머 45

3.5 외부 라이브러리 활용하기 48

3.6 배경음악 50

3.7 효과음 52

마치며 54

 

CHAPTER 4 샘플 게임 프로젝트 56

4.1 스네이크 56

__4.1.1 게임 로직 57 / 4.1.2 정리 63

4.2 소코반 64

__4.2.1 게임 로직 65 / 4.2.2 정리 71

4.3 테트리스 71

__4.3.1 자료구조 72 / 4.3.2 게임 로직 73 / 4.3.3 정리 79

4.4 브레이크아웃 80

__4.4.1 스프라이트 81 / 4.4.2 현대적 렌더링 시스템 81

__4.4.3 MSX1의 스프라이트 시스템 84 / 4.4.4 게임 로직 88

마치며 92

 

CHAPTER 5 GREEN 프로젝트 94

5.1 프로젝트 구성 95

5.2 메인 함수 및 시스템 초기화 97

5.3 게임 로직 100

__5.3.1 초기화 100 / 5.3.2 게임 루프 106 / 5.3.3 상호작용 107

마치며 112

 

CHAPTER 6 리소스 유틸리티 115

6.1 맵 데이터 116

__6.1.1 Tiled 맵 에디터 116 / 6.2.1 map.py 121 / 6.1.3 정리 126

6.2 타일 데이터 126

6.3 스프라이트 데이터 127

6.4 사운드 130

__6.4.1 배경음악 131 / 6.4.2 효과음 133

마치며 134

 

CHAPTER 7 피라미드 퀘스트 136

7.1 게임 로직 137

7.2 맵 데이터 만들기 144

7.3 유틸리티 커스터마이징 147

마치며 150

 

CHAPTER 8 그래픽 작업 152

8.1 타일셋 152

__8.1.1 기본 아이디어 153 / 8.1.2 근접 색상 구하기 156 / 8.1.3 24비트 PNG로 변환 157

8.2 스프라이트 제작 157

8.3 실전 162

마치며 166

 

PART 3 심화 주제

 

CHAPTER 9 디버깅 169

9.1 로깅 170

9.2 openMSX 디버거 173

__9.2.1 디버거 사용법 175 / 9.2.2 심벌 파일 176 / 9.2.3 심벌 변환 및 추가 179

__9.2.4 브레이크포인트 테스트 181 / 9.2.5 변수 조회 184 / 9.2.6 변수 조회 실습 187

마치며 190

 

CHAPTER 10 크로스 플랫폼 프로그래밍과 포팅 191

10.1 크로스 플랫폼 프로그래밍 192

10.2 Win32 프로젝트 193

__10.2.1 기본 아이디어 194 / 10.2.2 ubox API 수정 195

__10.2.3 GREEN 프로젝트 196 / 10.2.4 ubox API 구현 197 / 10.2.5 정리 204

10.3 안드로이드 프로젝트 205

__10.3.1 기본 프로젝트 생성 206 / 10.3.2 안드로이드 SDL 212

__10.3.3 가상 패드 217 / 10.3.4 포팅 218 / 10.3.5 정리 219

10.4 YUZA OS 220

10.5 에뮬레이터 222

마치며 226

 

PART 4 진짜 MSX의 세계

 

CHAPTER 11 MSX-C 229

11.1 개발 환경 구축 230

11.2 컴파일 이해하기 234

11.3 편집기 235

11.4 컴파일 속도 높이기 235

__11.4.1 MSX-C 툴 성능 개선 236 / 11.4.2 하드웨어 교체 236

__11.4.3 플로피에서 하드 디스크로 전환 236

11.5 샘플 프로젝트 237

__11.5.1 슈터 237 / 11.5.2 틱택토 238 / 11.5.3 Tiny Shell 240

마치며 241

 

CHAPTER 12 MSX 개발을 위한 레퍼런스 243

12.1 SDCC 245

__12.1.1 환경 구축 245 / 12.1.2 스타트업 코드 246

__12.1.3 Skeleton C project for MSX 246 / 12.1.4 libMSX 247

__12.1.5 MSX SDCC Boilerplate 248 / 12.1.6 I.N.E.R.T.I.A. 249

__12.1.7 MSX Fighter 250 / 12.1.8 azombie 251

12.2 HI-TECH C 컴파일러 251

__12.2.1 HelloWorld 252 / 12.2.2 C experiments for msx 253 / 12.2.3 CR3 254

12.3 Fusion-C 255

__12.3.1 환경 설정 256 / 12.3.2 bncball 257

__12.3.3 Brick Breaker Santa Demo 258 / 12.3.4 Captain kik 260

__12.3.5 Atlanta 260 / 12.3.6 Star Rangers 262 / 12.3.7 레퍼런스 263

12.4 비주얼 스튜디오 263

__12.4.1 메이크파일 프로젝트 264 / 12.4.2 MSX-Templates-for-VisualStudio 266

__12.4.3 Arya 267 / 12.4.4 테트리스 267

12.5 Z88DK 268

__12.5.1 환경 구축 269 / 12.5.2 plot 269 / 12.5.3 틱택토 270

__12.5.4 balloons 270 / 12.5.5 Death Star 271

__12.6 RetroDeluxe 게임 엔진 272

12.7 MSX2DAAD 274

마치며 276

 

CHAPTER 13 기타 언어 MSX 프로그래밍 278

13.1 MSX 베이직 278

__13.1.1 가상 플로피 디스크 준비 278 / 13.1.2 스피드 게임 280

__13.1.3 베이직 명령어 281 / 13.1.4 PAPPLE 281

__13.1.5 MSXPen 282 / 13.1.6 레퍼런스 284

13.2 Z80 어셈블리 285

__13.2.1 HelloWorld 286 / 13.2.2 트랜스볼 289 / 13.2.3 MSXPen 290

__13.2.4 8bitworkshop IDE 293 / 13.2.5 펭귄 플랫포머 게임 294

__13.2.6 퐁 295 / 13.2.7 메탈기어 296

13.3 자바 297

 

MSX 편 마무리 302

 

PART 5 MS-DOS용 게임 만들기

 

CHAPTER 14 MS-DOS 살펴보기 307

14.1 XT 310

14.2 286 310

14.3 메모리 관리 314

__14.3.1 EMS 318 / 14.3.2 XMS 319

14.4 386 321

__14.4.1 EMM386 322 / 14.4.2 도스 익스텐더 323

14.5 486 326

마치며 326

 

CHAPTER 15 개발 도구 살펴보기 328

15.1 도스박스 329

15.2 컴파일러 333

15.3 환경 구축 333

 

CHAPTER 16 도스 게임 프로젝트 335

16.1 메모리 모델 335

16.2 도스박스 빌드 시스템 338

__16.2.1 테트리스 338 / 16.2.2 슈터 프로젝트와 MegaBreak 340

__16.2.3 Little Game Engine 342 / 16.2.4 Commander Keen in Keen Dreams 343

16.3 콘솔 도스 빌드 시스템 345

__16.3.1 Jump 'n Bump 345 / 16.3.2 Eradicate 346

마치며 347

 

CHAPTER 17 VGALIB 349

17.1 Win32 빌드 350

17.2 도스박스 + 볼랜드 C++ IDE 350

17.3 도스박스 + 비주얼 스튜디오 코드 351

17.4 듀얼 모니터를 활용한 디버깅 352

마치며 354

 

CHAPTER 18 알레그로4 355

18.1 개발 시스템 구축: Win32/DOS 컴플리트 시스템 356

18.2 HelloWorld 358

__18.2.1 Win32 빌드 359 / 18.2.2 DOS 빌드 360

__18.2.3 Makefile 362 / 18.2.4 정리 363

18.3 알레그로4 프로그래밍 기초 363

__18.3.1 기본 프레임워크 363 / 18.3.2 디버깅 365

18.4 알레그로4 API 활용 366

__18.4.1 비트맵 로딩 367 / 18.4.2 더블 버퍼링 368 / 18.4.3 타이머 370

__18.4.4 바운딩 박스를 통한 충돌 감지 371 / 18.4.5 스네이크 바이트 373

__18.4.6 데이터 파일 사용하기 374 / 18.4.7 정리 377

18.5 게임 프로젝트: 기초편 377

__18.5.1 브레이크아웃 377 / 18.5.2 테트리스 381

__18.5.3 테트리스 2 382 / 18.5.4 스네이크 바이트 383

18.6 게임 프로젝트: 고급편 386

__18.6.1 슈터 386 / 18.6.2 RA2 387 / 18.6.3 테트리스 388

__18.6.4 스케이터 388 / 18.6.5 마리오 카트 389 / 18.6.6 동키 390

__18.6.7 어드벤처 데모 프로젝트 390 / 18.6.8 호환성 확인 391

18.7 매피 에디터 392

__18.7.1 맵 데이터 작성 393 / 18.7.2 맵 데이터 로드 395

__18.7.3 맵 데이터와 상호작용 397 / 18.7.4 최종 테스트 401 / 18.7.5 정리 402

18.8 서드파티 403

__18.8.1 zlib 404 / 18.8.2 ppcol 404 / 18.8.3 dumb 406

__18.8.4 jptui 407 / 18.8.5 pmask 407 / 18.8.6 libxml2 409

18.9 폭스레인저 리메이크 409

__18.9.1 서드파티 412 / 18.9.2 한글 출력 414 / 18.9.3 게임 로직 417

__18.9.4 게임 리소스 421 / 18.9.5 정리 423

마치며 424

 

CHAPTER 19 디버깅 실전 426

19.1 32비트 프로그램 427

19.2 Plumber No More 429

__19.2.1 리모트 디버깅 430 / 19.2.2 디버깅 실전 431

마치며 435

 

CHAPTER 20 SDL + HX 도스 익스텐더 437

20.1 제약 조건 438

__20.1.1 파일 이름 길이 439 / 20.1.2 컴파일러 선택 439

__20.1.3 그래픽 카드 440 / 20.1.4 SDL 버전 문제 440

20.2 환경 구축 441

20.3 샘플 프로그램 442

__20.3.1 Hello 프로젝트 443 / 20.3.2 팩맨#1 444 / 20.3.3 팩맨#2 445

20.4 GREEN 프로젝트 446

마치며 448

 

MS-DOS 편 마무리 450

 

PART 6 그 밖의 레트로 플랫폼 게임 프로그래밍

 

CHAPTER 21 코모도어 64 455

21.1 환경 구축 455

21.2 Ball 458

21.3 C64maze 459

 

CHAPTER 22 패밀리 컴퓨터 461

22.1 환경 구축 461

22.2 HelloWorld 462

22.3 2D 플랫포머 게임 463

 

CHAPTER 23 아미가 465

23.1 에뮬레이터 467

23.2 빌드 환경 구축 472

23.3 비주얼 스튜디오 코드 아미가 익스텐션 474

 

CHAPTER 24 PC 엔진 477

24.1 환경 설정 477

24.2 HelloWorld 478

24.3 bonks 479

 

CHAPTER 25 메가 드라이브 480

25.1 환경 설정 480

25.2 IDE 설치 481

25.3 HelloWorld 484

25.4 샘플 2D 플랫포머 485

 

CHAPTER 26 게임보이 486

26.1 환경 구축 486

26.2 HelloWorld 487

26.3 고급 예제 488

26.4 동적 디버깅 489

 

CHAPTER 27 슈퍼패미컴 492

27.1 환경 설정 493

27.2 HelloWorld 493

27.3 BreakOut 495

 

CHAPTER 28 3DO 496

28.1 환경 구축 497

28.2 샘플 프로젝트 빌드 498

28.3 Space Invaders Invaders 499

 

CHAPTER 29 세가 새턴 500

29.1 조 엔진 501

29.2 Saturn Orbit 504

 

CHAPTER 30 게임보이 어드밴스 506

30.1 환경 구축 507

30.2 문자 출력 507

30.3 Tank Gameboy Advance 508

30.4 Skiing Advance 509

30.5 BATTLE-CITY-GBA 510

30.6 Programmer’s Notepad 511

 

APPENDIX 부록

 

APPENDIX A 비주얼 스튜디오 2019 519

A.1 vcpkg 520

A.2 단축키 521

 

APPENDIX B SDL 524

B.1 플립 프로젝트 525

B.2 레퍼런스 527

 

에필로그 513

 

APPENDIX C 우분투 이미지 만들기 529

C.1 SDCC 4.0 설치 530

C.2 파이썬 3.9 설치 530

C.3 hex2bin 531

C.4 아코스 트래커 2 531

 

찾아보기 533

 

 

제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)

네이버 책 포스트 유튜브 인스타그램 트위터 페이스북