Quake 3 엔진 연구에 도움이되는 자료 [닫기]


14

코드 자체를 넘어 Quake 3 엔진의 코드를 연구 할 수있는 좋은 자료 (설명서, 튜토리얼 등)가 있습니까?

나는 그것이 교육 목적으로 어떻게 구성되어 있고 아마도 약간의 수정을하는 방법에 대해 알고 싶습니다.

답변:


13

따라서 id Tech 3 에 관한 Wikipedia의 기사를 살펴 보는 것이 좋습니다 . 브라이언 훅 (Brian Hook)의 GDC 토크 요약Element 61 블로그 의 오래된 것들에 의해 보강 될 수있다 . 그 외에도, 진행중인 작업을 재구성하고 재구성하기 위해 찾을 수있는 오래된 모드 튜토리얼을 탐색해야합니다.

나는 현재 진행중인 상황 (입력이 엔진 내에서 처리되고 지시되는 방법, 어떤 종류의 기본 이벤트)을 실제로보기 위해 ioquake3 또는 무엇을 대신하여 id에서 원래 소스 릴리스로 시작하는 것이 좋습니다. 구조 등이 사용됩니다).

내가 일할 때 도움이 된 몇 가지 핵심 사항 :

  • 항상 서버가 있습니다. 프레임 처리 위에 클라이언트 로직이있을 수도 있습니다.
  • 입력은 먼저 콘솔 (관심이있는 경우), GUI (GUI), 게임 정보로 연결됩니다.
  • 트랩 기능을 사용하여 엔진 자체가 게임 로직과 분리됩니다 (하드!). cgame을 살펴보고 (메모리가 제공되는 경우) 실제 엔진 코드를 찾기 위해 프로젝트를 렌더링하십시오.
  • 게임 로직은 Quake 3 가상 머신에서 실행되도록 완전히 작성 될 수 있습니다. 네이티브 dll을 모딩하고 사용할 때 quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0엔진이 VM 코드 대신 네이티브 코드를 실행할 수 있도록 게임을 실행해야 합니다.
  • 메뉴 시스템의 UI는 구조와 콜백이 이상하고 악의적이며 뒤틀린 스택입니다. 일단 퍼즐을 풀면 사용할 수 있지만 시행 착오를 겪을 수 있습니다. 스택입니다.
  • 네이티브 .dll로 코드를 작성하는 경우 메모리를 할당하거나 C ++로 작성하거나 보트를 떠 다니는 모든 것을 자유롭게 느끼십시오. STL도 사용할 수 있습니다. 엔진과 직접 인터페이스하는 경우를 제외하고는 C 관용구를 엄격하게 따를 이유가 없습니다.

동료와 함께 한 멋진 것들 :

  • 콘솔에서 쉘 명령을 호출하고 stdout / stderr 스트림을 콘솔 (Quake 콘솔)로 다시 덤프하는 간단한 명령 행 인터페이스.
  • 레코드를 가져오고 표시하기 위해 SQL 데이터베이스와 인터페이스합니다.
  • 막대 그래프, 텍스트 상자, 그림 상자, 상황에 맞는 메뉴, 크기 조정 가능 창 등을 사용하여 클라이언트 HUD에 유연한 디스플레이를 만들기위한 유연한 창 및 위젯 툴킷.
  • 느린 로켓. :)

개인적으로, 나는 엔진이 정말 멍청한 방식으로 수행 된 정말 똑똑한 일, 정말 똑똑한 방식으로 수행되는 멍청한 일, 정말 똑똑한 방식으로 수행 된 똑똑한 일의 훌륭한 조합이라는 것을 알았습니다. 중규모 C 프로젝트에서 모듈 성과 구조화 된 디자인을 얻는 방법에 대한 훌륭한 예입니다.

마지막으로, 시간이 걸리더라도 기분 나빠하지 마십시오. 엔진에서 내가 찾던 것을 어디에서 찾을 수 있는지 알기 위해서는 한 달이 걸렸습니다. 다른 모든 것이 실패하면 응용 프로그램 init에서 시작하여 함수로 터널 다운하여 푯말로 의견을 남기십시오. 내 모니터는 기능 이름, 줄 번호 및 수행 한 작업에 대한 간단한 설명과 함께 분홍색 포스트잇 메모로 끝났습니다.



1

물론.

http://en.wikipedia.org/wiki/Quake_engine 은 무엇이 있는지에 대한 좋은 개요이지만 인용을 통해 아키텍처의 세부 사항을 매우 빠르게 얻을 수 있습니다.

나는 또한 당신이 찾고있는 것과 더 일치 할 수있는 게임 엔진 아키텍처에 관한 몇 권의 책을 제안 할 수 있습니다. Quake에 한정되지는 않지만 엔진 설계의 세부 사항으로 들어가서 Quake 엔진의 여러 측면과 병행하여 실행됩니다.

  • 3D 게임 엔진 아키텍처 -978-0122290640
  • 3D 게임 엔진 프로그래밍 -978-1592003518

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.