1장 롤플레잉 게임을 만들자 ... 1 롤플레잉 게임(RPG)이란 무엇인가? ... 2 컴퓨터 게임으로서의 RPG ... 2 RPG의 분류 ... 3 스토리성 ... 3 이동 ... 4 전투 ... 5 시스템의 개요 ... 6 RPG의 작성 환경 ... 7 프로그래밍에 필요한 환경 ... 7 C/C++ 컴파일러 ... 8 최신의 서비스 팩 ... 8 컴퓨터 ... 9 기타 사양 ... 9 자료 ... 10 맵 에디터 등 RPG 작성을 위한 툴 ... 10 2장 게임 시스템의 설계 ... 11 RPG 시스템 ... 12 표시 방법 ... 12 스토리 ... 13 이동(비전투 시) ... 14 전투 ... 15 이동 단위(전투 시) ... 15 윈도의 크기 ... 16 시스템 정리 ... 16 RPG에 필요한 기능과 설계 ... 17 RPG 부분 ... 17 맵의 표시 ... 17 이동 ... 20 전투 ... 21 CPU 측의 행동 루틴 ... 21 파라미터 ... 22 이벤트 부분 ... 23 게임의 전체 흐름 ... 24 3장 Windows 프로그래밍 ... 27 게임에 필요한 기능 ... 28 화면 표시 ... 28 기타 기능 ... 29 윈도를 연다 ... 30 가교적인 부분의 작성 ... 30 Windows 프로그램의 흐름 ... 30 기본 클래스 작성 ... 31 애플리케이션 ... 31 윈도의 작성과 메시지 처리 ... 36 윈도 ... 36 메시지 처리 ... 45 CG를 표시한다 ... 45 비트맵의 개요 ... 46 DIB의 구조 ... 46 CG를 표시하는 애플리케이션 ... 53 윈도 스타일의 설정 ... 57 DIB의 작성과 CG 읽기 ... 59 DIB의 표시 ... 59 CG/스프라이트를 겹친다 ... 60 레이어 처리용 클래스 작성 ... 61 복사용 함수 ... 63 레이어 처리용 함수 ... 63 DIBSection ... 65 DIBSection의 그림 그리기 ... 68 스프라이트 표시 ... 69 4장 맵과 캐릭터의 표시 ... 73 맵의 좌표계 ... 74 맵 좌표에서 화면 좌표로의 변환 ... 74 화면 좌표에서 맵 좌표로의 변환 ... 76 색 분류 맵을 이용한다 ... 76 좌표 변환 계산식 ... 77 해결안 ① : 실수 연산을 사용한다 ... 78 해결안 ② : 시프트 연산을 사용한다 ... 78 해결안 ③ : 오프셋을 추가한다 ... 78 해결안 ④ : 경우 분류 ... 79 스프라이트의 표시 ... 79 스프라이트의 표시 순서 ... 79 표시 샘플 프로그램 ... 81 컨피그 ... 81 좌표 변환 ... 82 스프라이트 클래스의 확장 ... 83 입력 조작 ... 85 윈도의 조작 ... 87 전투 클래스 ... 92 마우스 이벤트 ... 100 샘플의 실행 ... 101 동작을 검증한다 ... 101 고의로 오류를 만드는 방법도 있다 ... 101 5장 캐릭터의 이동 ... 103 이동의 개념 ... 104 이동 가능한 장소를 판단한다 ... 104 이동 거리의 탐색 ... 105 이동 판단 테스트 ... 107 지정한 위치로의 이동 ... 110 이동 애니메이션 ... 111 애니메이션 패턴 ... 111 이동 애니메이션 등록 ... 113 이동 샘플 프로그램 ... 115 전투 클래스의 확장 ... 115 입력 처리 내장 ... 120 샘플 실행 ... 122 6장 전투 ... 123 맵 데이터 읽기 ... 124 설정 파일을 준비한다 ... 124 텍스트 파일 읽기 ... 126 텍스트 파일 읽기 ... 126 자구(字句) 해석 ... 129 전투 클래스에 설정 파일의 읽기 기능을 내장한다 ... 136 전투의 룰 ... 148 판단 루틴의 결정 ... 149 계산에 필요한 파라미터 ... 149 데미지 계산 ... 149 난수의 개념 ... 150 난수로 크리티컬 히트를 가한다 ... 151 사정 거리 구하는 방법 ... 151 공격 시의 애니메이션 ... 152 애니메이션 패턴 ... 152 공격 처리의 절차 ... 153 마법 공격의 처리 ... 161 시각 효과를 추가한다 ... 161 보조 마법 ... 162 CPU 측의 사고 루틴 ... 163 공격 상대의 선택 ... 163 공격의 절차 ... 164 CPU 측 캐릭터의 공격 ... 166 이동 장소 후보의 검색 ... 165 이동 장소의 결정 ... 165 플레이어 캐릭터에의 공격 ... 166 코드의 해설 ... 169 CPU 측을 움직인다 ... 169 메시지 대기 처리 ... 169 샘플의 실행 ... 172 스테이터스의 표시 ... 172 팝업 스테이터스의 작성 ... 173 커맨드의 입력 ... 176 7장 이벤트 ... 181 이벤트의 실행 방법 ... 182 시나리오를 준비한다 ... 182 커맨드 결정 ... 183 커맨드 ... 185 메인 메뉴용 커맨드 ... 190 커맨드의 실행 처리를 만든다 ... 191 인터프리터형인가 컴파일러형인가? ... 191 「구문 해석」과 「자구 해석」 ... 192 스크립트 해석과 커맨드 실행 ... 193 스크립트 실행 ... 193 이벤트 시의 입력 처리 ... 197 처리 내용을 작성한다 ... 198 커맨드의 처리 ... 198 텍스트 표시 ... 206 메뉴 표시 ... 207 그림 그리기 ... 208 이펙트 ... 210 타이머 처리 ... 210 와이프 인 ... 211 페이드 ... 213 이미지의 합성 ... 214 샘플 실행 ... 216 8장 파라미터의 편집 ... 219 파라미터 ... 220 파라미터에 의한 게임 밸런스의 조정 ... 220 파라미터 에디터 ... 221 모형 작성 ... 221 다이얼로그 작성 ... 221 코딩 ... 222 파일의 읽기/기입 ... 223 파라미터의 편집 처리 ... 226 샘플 실행 ... 232 더미를 이용한다 ... 233 9장 게임을 완성시킨다 ... 235 부족한 기능 추가 ... 236 파라미터를 외부 파일로부터 가져온다[import] ... 236 소스 코드 변경 ... 237 저장 파라미터 ... 237 전투 부분과 이벤트 부분의 결합 ... 240 전투 시작 ... 240 전투 종료 ... 241 종료 판정 ... 242 음악 연주 ... 243 MCI를 이용한다 ... 243 벤더와 라이브러리 추가 ... 254 저장/로드 ... 254 효과음 내기 ... 260 레벨업 ... 262 레벨업의 타이밍 ... 262 레벨업의 처리 ... 263 맵을 이용한 다이렉트 점프 ... 266 다이렉트 점프의 커맨드 ... 267 샘플 시나리오 ... 270 시나리오 해설 ... 277 10장 리얼타임 시스템 ... 279 리얼타임 시스템의 개념 ... 280 플레이어 캐릭터의 이동 ... 280 자유도가 높은 이동 시스템 ... 282 적(敵) 캐릭터의 이동 ... 283 전투 ... 283 부록 CD-ROM 사용 방법 ... 284 찾아보기 ... 286