실제로 컴포넌트 기반 게임 오브젝트 시스템 [폐쇄]


43

성공의 역사를 보자. 컴포넌트 기반 게임 오브젝트 시스템을 사용하여 제작 된 인기 게임 (및 게임 엔진)은 무엇입니까? 각 답변에는 다음이 포함되어야합니다.

  1. 게임 제목 (답변 당 하나)
  2. 저자 / 회사
  3. 개발 시간 (선택 사항)
  4. 사후 링크 (선택 사항)
  5. 문서 / 소스 코드에 대한 링크 (선택 사항)

7
-1, 지난 10 년 동안 작성된 거의 모든 게임은 어딘가에 컴포넌트 시스템을 사용하고 다른 어딘가에 컴포넌트 시스템을 사용하지 않을 것입니다.

5
당신은 잘못. 많은 엔진이 여전히 정적 계층을 사용합니다. 그리고 실제로 컴포넌트 시스템을 사용하는 게임 및 엔진의 문서 / 사후 모집 / 코드 스 니펫을 수집하고 읽는 것이 흥미 롭습니다.
topright

4
엔진이 정적 계층 구조를 사용하지 않는다고 말하지 않았습니다. 컴포넌트 사용 하는 엔진을 찾는 것처럼 정적 계층 구조 사용 하는 엔진을 찾는 데 어려움을 겪고 있다고 말했습니다 .

2
당신은 잘못. 게임 엔터티 (게임 로직의 핵심), 시각 효과, 게임 엔진 및 편집기 인프라는 구성 요소 기반이거나 아닙니다.
topright

2
@topright : Joe가 옳고 그른지에 관계없이 평범하고 개인적인 'You are wrong'으로 두 번 연속으로 주석을 시작하는 것은 매우 재치가 없으며 그렇게 생각하지 않습니까? 나는 당신의 의견이 그 작은 세 단어가 없으면 관련 정보를 놓치지 않을 것이지만, 그것들을 생략하면 멋지고 정중 한 대화에 훨씬 더 기여할 것입니다. 이것을 고려하십시오 :)
Michael Klement

답변:


19

가스 구동 게임에 의한 던전 포위

Scott Bilas 는 무엇보다도 컴포넌트 기반 시스템을 특징으로하는 Dungeon Siege에 대한 많은 정보를 공개했습니다.

Dungeon Siege는 2002 년에 출시되었습니다.


와우, 훌륭한 연결. 구성 요소 시스템에 대한 그의 이야기는 구성 요소 기반 시스템의 구현을 더 잘 이해하는 데 도움이되었습니다. DS에서 연속 세계가 ​​어떻게 수행되었는지에 대해 깔끔하게 이야기하십시오. 다른 대규모 게임에서 비슷한 기술이 여전히 사용되고 있는지 궁금합니다. 나는 대부분 지역이나 덩어리에 더 가까운 것을 사용하는 경향이 있다고 생각합니다 (Minecraft, Bethesda의 것).
CodexArcanum

19

Insomniac Games의 저항 1-2 (아마도 3) (2006-2008)

Terrance Cohen은 이러한 게임 을 GDC Canada 2010의 고성능 게임 플레이 토크를 위한 A Dynamic Component Architecture에 나열합니다 .

이것이 최근의 Ratchet & Clank 게임에 적용되었는지 확실하지 않습니다.


해당 프리젠 테이션의 오디오가 GDC Vault Paywall 뒤에 있는지 알고 있습니까? 슬라이드만으로도 멋지지만 프레젠테이션에서 대답 할 것으로 의심되는 몇 가지 질문이 있습니다.

이 프리젠 테이션에 대해 몰랐습니다. 대단히 감사합니다!
topright

13

Unity3D 는 기본적으로 컴포넌트 기반 시스템을 사용합니다. 텍스트 파일과 의존성 주입으로 게임 엔티티를 생성하는 데 탁월합니다.

function createEnemy() {

   // extract AI type for enemy
   // definition is a custom structure holding parameters to create the enemy
   var aitypename = definition.ai;

   // AIType can be an interface or abstract class
   // you can create a component from a string or from a type
   var ai : AIType = this.gameObject.AddComponent(aitypename);
   ai.setup(definition.ai_settings);

   // set rule for enemy when it is destroyed
   this.gameObject.AddComponent(definition.when_destoryed); 


}

그 구성 요소는 다음과 같습니다

class AI_Scout extends AIType
{
  // called per update-frame on the game-object with this script
  public function Update() {
    // run Scout AI here
   }
}


class Spawn_Ammo_On_Destroyed extends When_Destroyed
{
   // automatically called by the engine when the game object this script is attached to is
   // destroyed
   public function OnDestroyed() {
    // spawn ammo
    }
}


8

Tony Hawk Pro Skater 3
개발자 : Neversoft
연도 : 2001
시간 : 약 2 년
Post Mortem : 계층 구조 개선 (아마도 가장 링크 된 구성 요소 기반 기사)


1

내 지식으로는 내가 본 최고의 프로젝트는 Burger Engine입니다. jst는 코드를 다운로드하고 그들이 얼마나 잘 구현했는지 확인합니다. 모든 것은 XML에서 데이터 중심이며 엔티티 기반 아키텍처를 잘 사용했습니다.

http://code.google.com/p/burger-engine/source/browse/


2
-1,이 코드는 "Abstract"의 철자가 틀린 것부터 정적 구성 요소 유형 열거, 많은 수의 가상 함수, 각 구성 요소에 28 바이트의 위치 데이터를 포함하는 것에 이르기까지 매우 아마추어처럼 보입니다. 이것이 가장 좋은 경우 다른 곳을 보라.

전체 코드는 데이터 중심 이며이 작업을 훨씬 쉽게 수행 할 수있는 오픈 소스 구현을 찾지 못했습니다. 좋은 코드에 대한 링크가 있으면 링크를 게시하십시오. 맞춤법 오류, 가상 기능- '구성 요소 기반 아키텍처'를 처음 사용하는 사람들에게 유용한 리소스입니다. 실제로 데이터 중심 설계가 어떻게 작동하는지에 대한 귀중한 소개를 제공합니다.
Ayyappa

2
코드에 대해서는 몰랐지만 영어 이외의 언어를 사용하는 국가의 프로그래머도 많기 때문에 철자 실수를 지적하는 것은 잘못된 주장입니다.
Rajavanya Subramaniyan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.