레트로 게임 개발 바이블 (MSX, MS-DOS 등 거의 모든 레트로 시스템에서 작동하는 게임을 C 언어로 개발하는 법)

레트로 게임 개발 바이블 (MSX, MS-DOS 등 거의 모든 레트로 시스템에서 작동하는 게임을 C 언어로 개발하는 법)

$46.93
Description
실기에서 돌아가는 진정한 레트로 게임 개발, 어른이 된 지금이라면 만들 수 있다
추억 속의 MSX 게임을 오늘날의 개발 툴로 제작하는 방법을 파헤친다. C 언어와 비주얼 스튜디오 등 현세대 도구로 32 KB에 불과한 롬팩에 들어갈 게임을 코딩하고 빌드해본다. 이 코드베이스를 윈도우, 안드로이드, MS-DOS 등으로 포팅하며 크로스 플랫폼 프로그래밍과 동적 디버깅 기법을 익힌다. MSX 다음으로는 MS-DOS 게임 제작에 필요한 지식과 ‘듀얼 시스템’ 개발법을 자세히 살펴본다. 마지막으로 C64, NES, 아미가, PCE, MD, GB, SFC, 3DO, 세가 새턴, GBA 등 레트로 플랫폼에서의 개발 및 빌드 방법을 개괄한다. 현존하는 모든 레트로 게임 개발 지식을 가장 포괄적으로 집대성한 책이라고 자부한다.
저자

박주항

서강대학교에서컴퓨터공학과물리학을전공했으며,JCE(현조이시티)온라인게임서버프로그래머,라인의백엔드플랫폼프로그래머,그리고모바일게임개발회사대표를거쳐현재프리랜서로활동중이다.안되는걸되게하는것에관심이많으며,고전어드벤처게임을좋아해번역되지않은다수의명작어드벤처게임의한국어화패치를제작했다.
주요저서로는한빛미디어에서출간한《CGSF를활용한게임서버제작》(2014),《CGSF파헤쳐보기》(2014),《C++개발자를위한WIN32오픈소스라이브러리100》(2015),《SDL과C++를이용한크로스플랫폼프로그래밍》(2015),에이콘에서출간한《C++로나만의운영체제만들기》(2018),《YUZAOSVol.1:소프트웨어편》(2021)등이있다.번역서로는한빛미디어에서출간한《데이터베이스첫걸음》(2016)과에이콘에서출간한《GameProgramminginC++》(2019),《0부터시작하는OS자작입문》(2022)이있다.

목차

베타리더후기xiii
프롤로그xv
이책에대하여xvii

PARTI준비운동

CHAPTER1MSX플랫폼과친해지기3
1.1에뮬레이터5
1.2MSX1게임7
1.3MSX1스펙9
1.4메모리레이아웃11
마치며13

CHAPTER2개발환경구축14
2.1IDE17
2.2WSL218
2.3우분투20.04LTS18
2.4빌드시스템및WSL환경구축19
__2.4.1콘솔을이용하는방법20/2.4.2GUI프로그램을이용하는방법21
__2.4.3retro_msx배포판의내용22
2.5소스코드설치23
2.6소스코드빌드24
마치며25

PART2MSX1게임개발

CHAPTER3기초다지기29
3.1uboxMSX라이브러리30
3.2HelloWorld33
__3.2.1소스분석35/3.2.2uboxAPI38
__3.2.3crt0.z8040/3.2.4Makefile42/3.2.5실습42
3.3콘솔모드HelloWorld43
3.4타이머45
3.5외부라이브러리활용하기48
3.6배경음악50
3.7효과음52
마치며54

CHAPTER4샘플게임프로젝트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.3MSX1의스프라이트시스템84/4.4.4게임로직88
마치며92

CHAPTER5GREEN프로젝트94
5.1프로젝트구성95
5.2메인함수및시스템초기화97
5.3게임로직100
__5.3.1초기화100/5.3.2게임루프106/5.3.3상호작용107
마치며112

CHAPTER6리소스유틸리티115
6.1맵데이터116
__6.1.1Tiled맵에디터116/6.2.1map.py121/6.1.3정리126
6.2타일데이터126
6.3스프라이트데이터127
6.4사운드130
__6.4.1배경음악131/6.4.2효과음133
마치며134

CHAPTER7피라미드퀘스트136
7.1게임로직137
7.2맵데이터만들기144
7.3유틸리티커스터마이징147
마치며150

CHAPTER8그래픽작업152
8.1타일셋152
__8.1.1기본아이디어153/8.1.2근접색상구하기156/8.1.324비트PNG로변환157
8.2스프라이트제작157
8.3실전162
마치며166

PART3심화주제

CHAPTER9디버깅169
9.1로깅170
9.2openMSX디버거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

CHAPTER10크로스플랫폼프로그래밍과포팅191
10.1크로스플랫폼프로그래밍192
10.2Win32프로젝트193
__10.2.1기본아이디어194/10.2.2uboxAPI수정195
__10.2.3GREEN프로젝트196/10.2.4uboxAPI구현197/10.2.5정리204
10.3안드로이드프로젝트205
__10.3.1기본프로젝트생성206/10.3.2안드로이드SDL212
__10.3.3가상패드217/10.3.4포팅218/10.3.5정리219
10.4YUZAOS220
10.5에뮬레이터222
마치며226

PART4진짜MSX의세계

CHAPTER11MSX-C229
11.1개발환경구축230
11.2컴파일이해하기234
11.3편집기235
11.4컴파일속도높이기235
__11.4.1MSX-C툴성능개선236/11.4.2하드웨어교체236
__11.4.3플로피에서하드디스크로전환236
11.5샘플프로젝트237
__11.5.1슈터237/11.5.2틱택토238/11.5.3TinyShell240
마치며241

CHAPTER12MSX개발을위한레퍼런스243
12.1SDCC245
__12.1.1환경구축245/12.1.2스타트업코드246
__12.1.3SkeletonCprojectforMSX246/12.1.4libMSX247
__12.1.5MSXSDCCBoilerplate248/12.1.6I.N.E.R.T.I.A.249
__12.1.7MSXFighter250/12.1.8azombie251
12.2HI-TECHC컴파일러251
__12.2.1HelloWorld252/12.2.2Cexperimentsformsx253/12.2.3CR3254
12.3Fusion-C255
__12.3.1환경설정256/12.3.2bncball257
__12.3.3BrickBreakerSantaDemo258/12.3.4Captainkik260
__12.3.5Atlanta260/12.3.6StarRangers262/12.3.7레퍼런스263
12.4비주얼스튜디오263
__12.4.1메이크파일프로젝트264/12.4.2MSX-Templates-for-VisualStudio266
__12.4.3Arya267/12.4.4테트리스267
12.5Z88DK268
__12.5.1환경구축269/12.5.2plot269/12.5.3틱택토270
__12.5.4balloons270/12.5.5DeathStar271
__12.6RetroDeluxe게임엔진272
12.7MSX2DAAD274
마치며276

CHAPTER13기타언어MSX프로그래밍278
13.1MSX베이직278
__13.1.1가상플로피디스크준비278/13.1.2스피드게임280
__13.1.3베이직명령어281/13.1.4PAPPLE281
__13.1.5MSXPen282/13.1.6레퍼런스284
13.2Z80어셈블리285
__13.2.1HelloWorld286/13.2.2트랜스볼289/13.2.3MSXPen290
__13.2.48bitworkshopIDE293/13.2.5펭귄플랫포머게임294
__13.2.6퐁295/13.2.7메탈기어296
13.3자바297

MSX편마무리302

PART5MS-DOS용게임만들기

CHAPTER14MS-DOS살펴보기307
14.1XT310
14.2286310
14.3메모리관리314
__14.3.1EMS318/14.3.2XMS319
14.4386321
__14.4.1EMM386322/14.4.2도스익스텐더323
14.5486326
마치며326

CHAPTER15개발도구살펴보기328
15.1도스박스329
15.2컴파일러333
15.3환경구축333

CHAPTER16도스게임프로젝트335
16.1메모리모델335
16.2도스박스빌드시스템338
__16.2.1테트리스338/16.2.2슈터프로젝트와MegaBreak340
__16.2.3LittleGameEngine342/16.2.4CommanderKeeninKeenDreams343
16.3콘솔도스빌드시스템345
__16.3.1Jump'nBump345/16.3.2Eradicate346
마치며347

CHAPTER17VGALIB349
17.1Win32빌드350
17.2도스박스+볼랜드C++IDE350
17.3도스박스+비주얼스튜디오코드351
17.4듀얼모니터를활용한디버깅352
마치며354

CHAPTER18알레그로4355
18.1개발시스템구축:Win32/DOS컴플리트시스템356
18.2HelloWorld358
__18.2.1Win32빌드359/18.2.2DOS빌드360
__18.2.3Makefile362/18.2.4정리363
18.3알레그로4프로그래밍기초363
__18.3.1기본프레임워크363/18.3.2디버깅365
18.4알레그로4API활용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테트리스2382/18.5.4스네이크바이트383
18.6게임프로젝트:고급편386
__18.6.1슈터386/18.6.2RA2387/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.1zlib404/18.8.2ppcol404/18.8.3dumb406
__18.8.4jptui407/18.8.5pmask407/18.8.6libxml2409
18.9폭스레인저리메이크409
__18.9.1서드파티412/18.9.2한글출력414/18.9.3게임로직417
__18.9.4게임리소스421/18.9.5정리423
마치며424

CHAPTER19디버깅실전426
19.132비트프로그램427
19.2PlumberNoMore429
__19.2.1리모트디버깅430/19.2.2디버깅실전431
마치며435

CHAPTER20SDL+HX도스익스텐더437
20.1제약조건438

출판사 서평

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

잠시1980년대말로돌아가자.당신은지금8비트컴퓨터앞에앉아‘MSXBASIC게임’같은책을보고있다.의미도모른채한글자한글자코드를입력한끝에"RUN"을치자게임이실행될때의감격,하지만곧게임중뜬"Syntaxerror"앞에좌절했던기억.그땐게임이어떻게돌아가는지,에러가왜나는지도몰랐지만,그환희의순간을잊지못해지금도게임을만들거나플레이하고있지는않은가.그때는완성하지못했던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언어로작성된uboxMSX라이브러리를활용한게임제작이다.비주얼스튜디오코드로간단한샘플코드를작성하는것에서시작해,〈왕가의계곡〉과유사한완성도높은게임소스코드를분석하며,맵,스프라이트,사운드등리소스사용법과간단한제작법까지살펴본다.여기까지의코드를대상으로,3부에서처음으로디버깅과크로스플랫폼프로그래밍을설명한다.4부는실제MSX내에서MSX-C,MSX베이직,어셈블리등으로개발하는방법을살펴보고,SDCC,HI-TECHC컴파일러,Fusion-C등관련도구,그리고샘플프로젝트들을분석한다.

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

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