- 책_곽용재님 홈페이지
- 책_노란북 - 책 가격비교
- 책_김재우-SICP번역
- 플밍_쏘쓰포지
- 플밍_CodingHorror ?
- 플밍_상킴
- 플밍_김민장님
- GPGStudy
- 플밍_미친감자님
- 플밍_jz
- 플밍_샤방샤방님
- 플밍_글쓰는프로그래머2
- 플밍_키보드후킹
- 사람_재혁
- 사람_kernel0
- 사람_박PD
- 사람_경석형
- 사람_nemo
- 사람_kikiwaka
- 사람_Junios
- 사람_harry
- 사람_어떤 개발자의 금서목록..
- 사람_모기소리
- 사람_낙타한마리
- 사람_redkuma
- 사람_영원의끝
- 사람_민식형
- 도스박스 다음카페
- 플레이웨어즈 - 게임하드웨어벤치마크
- http://puwazaza.com/
- David harvey의 Reading Marx's c…
- 씨네21
- 한겨레_임경선의 이기적인 상담실
- 본격2차대전만화 - 굽시니스트
- 영화_정성일 글모음 페이지
- 영화_영화속이데올로기파악하기
- 음식_생선회
- 죽력고
- 사람_한밀
- 플밍_수까락
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- c++
- 인문학
- 강유원
- 삼국지
- 삼국지6
- programming challenges
- 책
- template
- 유머
- Programming
- 고전강의
- 정신분석
- 고등학교 사회공부
- 프로그래밍
- 진삼국무쌍5
- BSP
- 김두식
- 진중권
- 태그가 아깝다
- 노무현
- 유시민
- modernc++
- stl
- 게임
- 일리아스
- 건강
- 정성일
- 단상
- 영화
- 소비자고발
- Today
- Total
lancelot.com
게임 프로그래밍의 정석 - 히라야마타카시 지음 / 김성훈 역 본문
'세가의 신입사원 교육과정에서 배우는' 이라는 부제가 붙은 책이다.
아직 파트1의 챕터1밖에 읽지는 못했는데, 목차를 훑어보니, '게임프로그래밍이란 이런 것이다' 라는 것을 컴퓨터 공학을 전공한 학생들을 대상으로 가르치기에 충분한 책처럼 보인다. 물론 전공이 아니더라도 프로그래밍에 대한 기초적인 이해가 있다면 얼마든지 볼 수 있을 것 같다.
한마디로 훌륭한 초보자용 입문서.
목차는 크게
Part1. 2차원 게임
Part2. 3차원 게임
Part3. 판매용 제품으로 가는길
이렇게 세부분으로 나뉘어져있고, 각 부분마다 직접 간단하게 게임을 만들어보는 과정을 통해 게임만드는데 필요한 기술에는 이런것들이 있어~ 하고 설명하는 식으로 책이 구성되어있다.
전체 목차는 링크에.
맨처음 머릿말에서
- 이 책은 어떤 책인가.
- 이 책의 대상 독자.
이것을 명확하게 써주어서 더 매력적으로 보였다.
글쓴이는 적어도 무엇을 어디까지 할 것인가가 명확했기때문이다. 그래서 아직 파트1의 챕터1밖에 읽지못했는데도 이 글을 쓰고, 따라한 내용을 여기 써보기로 결정했다.
--------------------------------------------------------------------
Part1. 2차원게임
챕터1. 처음 만들어보는 게임.
간단한 퍼즐게임 '배달맨'을 콘솔 출력 텍스트로 만들어보면서 게임에 대한 기초적인 이해를 돕는다.
이런 종류의 게임인데, 나는 이 게임의 이름을 '창고지기'라고 알고있다.
처음부터 이렇게 그래픽으로 만드는 것은 아니고 콘솔로 만들게된다.
내 생각에, 일반 어플리케이션과는 조금 다른, 가장 중요한 게임 프로그래밍에 대한 개념이 여기서 등장하는데, 바로 게임이 무한루프를 도는 프로그램이고, 그 안에서 매 프레임마다 Draw와 Update를 반복하는 프로그램이라는 사실이다.
아마 저자도 이런 기초적인 개념을 먼저 알려주기위해 이렇게 시작하지 않나 싶다.
글쓴이의 모든 예제는 여기에 있고 책에도 설명이 있다. 하지만 스스로 만드는게 제일 좋으니, 일단 기본적인 룰만 보고 혼자서 만들어보았다(이거하면서 GitHub 사용법도 익히느라 2배로 삽질한듯)
while(true)
{
draw()
input()
update()
}
저자는 2시간안에 만들면 좋고, 반나절이 걸려도 상관없다고 했지만, 나는 이거 며칠 만들었는데... ㅠㅠ
https://github.com/lancelot50/sokoban.git
이렇게 따라 만들었다. (나중에 글쓴이 코드를 보니 엄청 간단하게 만들었는데, 내코드는 왜이래 ㅠㅠ)
챕터1의 1.1~1.2 에서 게임을 간단하게 만들고, 스테이지를 파일로부터 읽기(1.3), C++추가 공부(1.4~1.8)등으로 챕터1을 끝낸다.
저자의 예제에는 1.3부터 추가로 설명한, Array2D class를 사용한 버전, 비트연산을 사용한 버전, 메모리 할당을 하지 않고 전체를 하나의 메모리블럭으로 사용한 버전 등이 있는데, 그것들도 차근차근 살펴보면 좋을 것 같다(예제의 주석이 일본어인 듯 하지만 어짜피 코드만 보면 되니까)
한번 Github에 올려두었으니 시간 날때마다 책에 나오는 방향으로 코드를 개선하도록 하자.
챕터2는 다음에~
책에서 제공하는 라이브러리를 사용하여 Visual Studio 2019 에서 컴파일하려니 오류가 발생한다.
제공하는 라이브러리가 예전버전이라서 그런데, 아래 링크를 참조해서 Visual Studio 2019 에서 라이브러리의 소스를 불러서 빌드해주면된다.(제공하는 예제에 라이브러리들의 소스가 있다)
Gameframework 빌드 -> Scene_d.ib 없다고함 -> Module 빌드 (여기에 scene_d.lib 포함)
이런식으로 진행한다.
pre-build event, post-build 이벤트 제거 해주는게 핵심
아래 링크와 다르게 gameframework 빌드할때 locale이 오류가 추가로 나서 #include<locale>을 추가해주었다.
그리고 예제의 라이브러리들은 x86버전인데 반해, visual studio 2019 같은경우는 기본 프로젝트 설정이 x64인 것을 주의하자. (예제 라이브러리들을 모두 x64로 만들기는 좀 힘들것같고, 기본 프로젝트를 x86으로 맞추는 것이 쉽다)
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lunapro&logNo=220949568182
이렇게 빌드된 lib 들을(debug/release 모두) 필요한 lib 폴더에 복사하면 성공!