프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
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 소스는 존카맥님이 주시는 매우 좋은 재료가 될 수 있습니다. 앞으로 저와 같이 작은 클래스들부터 시작해서 차근차근 정복해보아요~


댓글을 달아 주세요

  1. Favicon of https://gamedevforever.com 조진현 2011.12.15 09:25 신고  댓글주소  수정/삭제  댓글쓰기

    완전 재미있겠는데요~~ ㅎㅎ
    분석을 예전부터 해보고 싶었지만,
    좋은 설명 기대하겠습니다.^^
    어서 저도 따라해봐야겠어욤~ ㅎㅎ

  2. Favicon of https://gamedevforever.com 끼로 2011.12.15 12:50 신고  댓글주소  수정/삭제  댓글쓰기

    어서 다음화가 올라왔으면 좋겠습니다! 둠3 소스가 공개되었다는 소식을 듣고 한번 살펴보고 싶었었는데 이렇게 친절하게 하나하나 설명해주시다니.. 천천히 따라서 해보겠습니다!

  3. Favicon of http://vieworld.kr 우성웃엉 2011.12.15 12:58  댓글주소  수정/삭제  댓글쓰기

    완전 기대됩니다 ^ㅠ^

  4. 오라오라 2011.12.15 19:52  댓글주소  수정/삭제  댓글쓰기

    차근차근 진행할수 있을거 같아요~
    왕 기대~

  5. Favicon of http://twitter.com/choijaekyu 최재규 2011.12.15 20:19  댓글주소  수정/삭제  댓글쓰기

    기대해주셔서 감사합니다. 스팀 상점에서 Doom3의 여러 패키지들이 있어서 헷갈리실 것 같아서 내용을 추가했습니다.

  6. Favicon of http://Junios.net Junios 2011.12.16 09:54  댓글주소  수정/삭제  댓글쓰기

    오 완전 기대 기대 입니다. +_+

  7. 디치리 2011.12.16 11:39  댓글주소  수정/삭제  댓글쓰기

    오오 기대됩니다. 화이팅이에요

  8. urere 2011.12.20 17:15  댓글주소  수정/삭제  댓글쓰기

    즐겨찾기 했습니다. 잘 보겠습니다. 꾸벅 (__)

  9. Favicon of https://gamedevforever.com ozlael 2011.12.21 05:02 신고  댓글주소  수정/삭제  댓글쓰기

    님촘촹인듯

  10. Favicon of http://bongman.tistory.com 가리봉맨 2011.12.22 14:01  댓글주소  수정/삭제  댓글쓰기

    감사합니다! 앞으로 잘 따라가 보겠습니다~ "3.게임설치" 부분은 생략해도 되죠?ㅋ

  11. JazzEz2dj 2011.12.22 19:30  댓글주소  수정/삭제  댓글쓰기

    우왕!!! ... 근데 결제할 돈이 없당 ㅠ_ㅠ

  12. kpro 2011.12.26 22:46  댓글주소  수정/삭제  댓글쓰기

    제일 기대하고 있어요~~ *_*

  13. 2014.06.04 16:10  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다