본문 바로가기

컴터생각

.NET으로 포팅된 Quake2 소스..

반응형
무척 오래된 내용인데, 블로그에 백업 차원에서.. 음, 이런 글을 스프링노트(위키)에 올려둬야 하는건가?

퀘이크 2는 소스코드가 공개된 Id Software의 유명한 FPS 게임이다.. 소스코드가 공개된 덕에 여러가지 실험(?)에 자주 사용되곤 하는데, 자바 그래픽 엔진을 테스트 하기 위해 사용되기도 하고, Visual C++ .NET의 기능 홍보(?)에 사용되기도 한다.. 이 샘플소스코드는 Microsoft MVP로 활동하던 시절, MSDN 세미나에서 사용했던 샘플이기도 한데, 2004년도에 VS 2003에 포함된 VC++을 홍보하기 위해 많이 사용되었던 샘플이기도 하다.. VC++을 가지고 아주 흥미로운 시도를 한 좋은 샘플이다..
(현재는 그 다음 버젼인 퀘이크3까지 소스코드가 공개되어 있다..)
.NET으로 포팅된 Quake 2 살펴보기
이 샘플이 흥미로운 이유는 공개된 퀘이크2 소스 (C 코드로 되어있다)를 수정하지 않고 .NET 환경에서 바로 사용할 수 있으며, 여기에 몇가지 기능을 더 추가하여 새로 추가되는 기능은 .NET 코드로 작성을 해, 두 코드가 잘 섞여 돌아가는 모습을 보여줬기 때문이다.. 유명한 게임에 내가 원하는 기능을 추가하는 흥미로운 방법으로 보여줘서 샘플로서 효과가 아주 크다고 할 수 있다..

원 게임에는 없는 기능인 레이더 기능(위에 소개된 URL들 중에서 코드프로젝트 사이트에 가보면 화면 캡쳐 이미지가 있다..)이 추가되어 있는데, 이 기능이 .NET 코드로 작성된 코드다.. 즉, C 언어로 작성된 원 게임소스는 컴파일러 및 개발툴에 의해 자동으로 .NET 어셈블리로 빌드되어 추가된 기능과 함께 .NET 환경에서 실행이 되는 것이다..

간단한 빌드 설정만 바꾸면 쉽게 .NET 어셈블리로 빌드가 되는 놀라운(?) VC++의 기능이라 할 수 있겠다.. 예전에 작성된 많은 C 코드들을 쉽게 재활용할 수 있는 기회가 열리기 때문이다.. 하지만, C++ 코드들은 이렇게 되지 못하는 경우가 많아 반쪽짜리 기능 이기도 하다.. .NET을 고려하는 C/C++ 개발자들 중에는 C++ 개발자들이 더 많고, 그들이 C 코드와 C++ 코드 중 어떤 것을 더 많이 가지고 있을지는 뻔하기 때문이다..

이러다 보니 .NET 환경에서의 VC++은 정말 무슨 존재인가 하는 생각이 들기도 한다.. 허브셔터나 스탠리 리프먼 등 많은 C++의 대가들이 대거 Microsoft에 입사하여 C++을 .NET 환경에서 사용하기 편리하게 만드는 작업에 몰두하고 있다.. 이들이 블로그에 올리는 내용이나, 활동하는 뉴스그룹, 메일링 리스트에 관련 내용들이 자주 언급되며 비중도 많이 차지하고 있다.. 하지만, [C++/CLI] Mixed-Type 사용시의 메모리 해제 문제와 같은 글들을 읽어보며 드는 생각은 뭐하러 이렇게 복잡하게 만들어야 하는가 하는 생각 뿐이다..

.NET 환경에서 VC++은 찬밥이 아닌 이유..
  1. Native 코드를 작성할 수 있는 유일한 개발도구이다.. VB .NET 너무 많이 바뀌었다.. C#, 새로운 언어이니 .NET 전용이다..
  2. COM 프로그램을 쉽게 개발할 수 있도록 되었다
  3. 표준 C++ 지원 및 이제는 STL도 지원한다..
  4. 웹서비스 개발에도 최적의 성능을 제공해준다..
  5. Native 코드와 .NET 코드를 섞을 수도 있다..
위와 같은 이유들을 만들어(?) 내긴 하지만, 사실 1번과 5번 이외에는 차라리 C++을 쓰고 말지 하는 생각이 든다.. 굳이 .NET 어셈블리로 만들어 얻는 이득이 없기 때문이다..

이야기가 상당히 다른 방향으로 흘러갔는데, 아무튼 C 코드는 VC++ .NET 덕분에 .NET 환경에서 거의 소스코드의 수정없이 100% 사용이 가능하다는 것을 잘 보여주는 샘플이다..
반응형
  • Favicon of http://www.uxkorea.net BlogIcon 준서아빠 2007.10.16 22:40

    음, 미병님, 준서아빠 입니다.
    .NET과 C++은 계속해서 병존하고 발전하는 기술이라고 생각됩니다. 최근 관련된 일을 진행한 적이 있는데요. 곧 소식이 나오게 될 것 같습니다.

    • Favicon of https://madchick.tistory.com BlogIcon 미친병아리 2007.10.16 23:50 신고

      네~ 안녕하세요..
      맞습니다.. 별도로 가는게 맞는 기술로 보여집니다.. C++ 쪽에서는 뭔가 더 새로운 소식이 나올게 별로 기대는 안됩니다.. 사실 별로 나올 것도 없고, 뭔가 나와도 별로 놀라지도 않을 것 같고.. ㅎㅎㅎ
      C++/CLI쪽은 제가 뭘 몰라서 중요하게 안 보이는 것일지도 모르죠.. 뭔가, C++ 대가들이 몰두할만한 가치가 있는 일이니 그러고 있을테니 말입니다..

  • 2007.10.19 15:55

    비밀댓글입니다

  • Favicon of http://flytgr.tistory.com BlogIcon 호랭이 2007.10.29 11:11

    헐~ 마소 정희용 기자입니다.
    미친병아리님 이게 얼마만입니까.
    앞으로 자주자주 들르겠습니다. ㅎ.ㅎ
    근데 원래 이글루스만 하시는 줄 알았는데, 티스토리에도 블로그가 있었군요!

    • Favicon of https://madchick.tistory.com BlogIcon 미친병아리 2007.10.30 18:04 신고

      안녕하세요.. 오랜만입니다.. 잘 지내시죠?
      하하.. 티스토리에는 개설한지 얼마 안되었습니다..
      사실 개설해놓고 오랜동안 방치해놓고 글을 올린지가 얼마 안되었는데, 여긴 글을 자주 올리는게 쉽지 않네요..
      허허허..
      차린건 없지만, 자주 놀러오세요~

  • Favicon of https://archwin.net BlogIcon archmond 2007.11.10 14:42 신고

    티스토리에 하나 분점을 내셨군요~!!

  • Favicon of https://mckdh.tistory.com BlogIcon 산골 김저자 2008.01.03 17:43 신고

    MS쪽은 저도 잘 몰랐는데 게임얘기가 나와서 그런지
    재밌게 잘 읽었습니다.

    몇 페이지를 읽어봤는데 유명 블로거이며 유명 개발자시군요.
    자주 읽고 배우겠습니다.

    그리고 새해 복 많이 받으세요 ^ ^