가장 먼저해야 할 중요한 점은이 질문에 대한 '좋은'답변이 없다는 것입니다.
정답에 가장 가까운 것은 다음과 같습니다. 게임 유형, 대상 플랫폼, 제약 조건 (시간) 등에 따라 크게 다릅니다.
그것은 다른 사람들 이이 문제에 대답하기 위해 어떻게 노력했는지 보여줄 좋은 기사가 있다고 말했습니다.
공산주의 오리 가 게임 개발에 대한 열정 기사를 언급하면서 게임 아키텍처의 일부를 이해하는 데 도움이되었습니다.
내 현재 디자인은 Quake3 / Doom3 의 하이브리드이며 약간의 .NET 클래스 라이브러리입니다. :)
나는 두 개의 라이브러리 (정적 또는 동적 당신이 / 건설 제공하는 방법에 따라 달라짐)이 Framework
과를 Library
.
라이브러리에는 게임 소프트웨어 제작에 도움이되는 모든 도우미 클래스가 포함되어 있지만 이러한 종류의 제품에만 국한되지는 않습니다. 즉, 게임 코드에 최적화되어 있지만 링크 된 목록의 서비스가 필요한 모든 것이 사용될 수있는 링크 된 목록의 구현이 있습니다.
프레임 워크는 '엔진'의 내장입니다. 이 중 많은 부분이 Quake3의 디자인 철학 (보다 객체 지향적 인 방식)을 따릅니다. 여기에는 CLI , 타이밍 관리, OS 특정 코드 및 결국 네트워킹 계층 등이 포함됩니다.
그런 다음이 두 개는 생산중인 실제 앱과 연결됩니다. Game
당신은 게임의 특정 코드를 포함하는, 좋아합니다. Quake3는 재생중인 'mod'에 따라 DLL을로드하는 것과 거의 같은 방식입니다.
여기에 구조에 대한 아이디어를 제공하기 위해 각 라이브러리에 대한 폴더와 내용을 빠르게 분석했습니다.
- 뼈대
- IO (전문가 파일 관리 클래스, 텍스트 인쇄 클래스 (예 : CLI) 및 로깅 등)
- 회로망
- 클라이언트 (Framework에서 '게임을하는 사람 / 게임하는 사람'으로 간주하는 것을 나타내는 클래스)
- 서버 (프레임 워크에 대한 연결을 관리하고 플레이어를 관리하는 클래스)
- 플랫폼 (키보드 / 마우스 / 컨트롤러 처리 클래스, getTime ()과 같은 OS 특정 루틴)
- 시스템 (오류 메시지, 타이밍 클래스 및 CLI 자체의 인쇄를 지원하는 오류 클래스와 같은 매우 낮은 수준의 클래스)
- 렌더러 (자체 설명)
- 기타
- 도서관
- 콜렉션 (데이터 콜렉션, 링크 된 목록 / 해시 테이블 등을 나타내는 클래스)
- 수학 (벡터 및 행렬과 같은 기본 수학 도우미 클래스)
- 기타
HTH! 당신에게 몇 가지 조언을 주어야합니다 ...