꽃미남 프로그래머 김포프가 창립한 탑 프로그래머 양성 교육 기관 POCU 아카데미 오픈!
절찬리에 수강생 모집 중!
프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
Posted by 알 수 없는 사용자


1. 들어가며

  안녕하세요. 앞으로 저와 같이 함께 둠3 소스를 분석해보겠습니다. 먼저 빌드부터 해보겠습니다.



2. 소스받기

  둠3 소스는 Visual Studio 2010 솔루션으로 세팅되어있습니다. 아쉽게도 Express 버전은 진행이 매끄럽지 않습니다. https://github.com/TTimo/doom3.gpl 에 가셔서 메뉴 "Downloads"의 "Download as zip" 버튼을 눌러서 풀소스를 다운로드 받습니다. 압축 파일을 푸시고 안에 들어있는 폴더 이름 TTimo-doom3.gpl-7db8be7을 TTimo-doom으로 바꿔줍니다. 그리고 C:\ 로 옮깁니다. 최종 폴더 구조는 다음과 같습니다.





3. 게임설치

  게임은 아래 두가지 방법으로 설치할 수 있습니다.

 - CD 설치
 - 스팀 구매 (http://store.steampowered.com/sub/425/)

  CD 설치는 둠3, 둠3-확장팩(Resurrection of Evil)을 설치하시고 1.3.1 패치까지 해주셔야 합니다. 스팀 구매는 위의 링크로 가셔서 Doom3 Pack(오리지날+확장팩)을 구입하시면 됩니다. 결제 후 다운로드만 받으시면 됩니다. CD는 구하기도 쉽지 않고 공개된 프로젝트의 기본 경로도 스팀으로 되어있어서 스팀 구매를 추천합니다.



4. 빌드

  C:\TTimo-doom\neo\doom.sln 파일을 엽니다. 메뉴에서 빌드(Build) -> 구성 관리자(Configuration Manager)를 클릭하시고 "Debug"로 활성화시킵니다. F7 키를 눌러서 빌드를 시작합니다. 빌드 중에 몇가지 에러가 발생합니다.

  C:\TTimo-doom\neo\sys\win32\win_input.cpp(146) 에서 첫번째 컴파일 에러가 발생합니다. 코드페이지 문제로 글자가 깨집니다. 다국어 지원쪽이라 소스분석과 크게 상관없어 해당 부분을 삭제하겠습니다. win_input.cpp 파일의 100줄~252줄까지 삭제합니다. 다음, Sys_InitScanTable 함수에서 else if ( lang.Icmp( "spanish" ) == 0 ) 부분 부터 해당 함수의 마지막 줄까지 삭제합니다. 결론적으로 s_scantokey_spanish, s_scantokey_french, s_scantokey_german, s_scantokey_italian 배열 변수를 사용하는 부분들을 지워주시면 됩니다. (수정된 win_input.cpp 파일을 첨부했습니다. 해당 경로에 덮어쓰기 카피를 해주세요.)

  다시 F7키를 눌러 빌드를 걸면 C:\TTimo-doom\neo\sound\snd_system.cpp 에서 두번째 컴파일 에러가 발생합니다. 166줄에서 #if ID_OPENAL ~ #endif 으로 감싸져 있는 부분을 주석처리합니다. (수정된 snd_system.cpp 파일을 첨부파일로 올렸습니다. 덮어쓰기 카피를 해주세요.)

  이제 빌드가 성공하고 F5 키를 눌러서 게임을 실행시킬 수 있습니다. 그럼 씨디키를 물어보는데요. 이것도 귀찮으니 소스 수정으로 통과해보겠습니다. 

  C:\TTimo-doom\neo\framework\Session.cpp 파일에서 2985줄 ReadCDKey 함수를 보시면 중간에 cdkey_state = CDKEY_UNKNOWN; 문장과 xpkey_state = CDKEY_UNKNOWN; 문장이 있습니다. 이것들을 각각 cdkey_state = CDKEY_OK; 와 xpkey_state = CDKEY_OK; 으로 수정해줍니다. 다시 F5 키를 눌러 실행시키면 씨디키를 물어보지 않음을 볼 수 있습니다. (수정된 Session.cpp 파일을 첨부파일로 올렸습니다. 덮어쓰기 해주세요.)

  게임 메뉴에서 Option -> System 으로 들어가셔서 Screen Size는 적절하게 줄여주시고 FullScreen은 No로 해주시면 디버깅 할 때 편리하겠습니다.







5. 마무리

  소스코드 읽기는 현업인에게 요구되는 중요한 능력입니다. 입문자들은 특히 꼭 한번쯤은 경험해봐야 할 산이라고 생각합니다. 잘 만들어진 게임의 에셋과 소스 모두를 구비해서 분석할 수 있는 기회는 흔치 않습니다. 그런 경험은 본인이 참가하고 있는 프로젝트에 국한될 수 밖에 없는데요. 그런 측면에서 둠3 소스는 존카맥님이 주시는 매우 좋은 재료가 될 수 있습니다. 앞으로 저와 같이 작은 클래스들부터 시작해서 차근차근 정복해보아요~


반응형
,