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


43

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

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

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.