기존 FOSS 구성 요소 기반 프레임 워크가 있습니까? [닫은]


25

컴포넌트 기반 게임 프로그래밍 패러다임이 점점 더 대중화되고 있습니다. 재사용 가능한 컴포넌트 프레임 워크를 제공하는 프로젝트가 있습니까? 어떤 언어로든, 나는 그것에 대해 신경 쓰지 않는다고 생각합니다. 그것은 내 자신의 프로젝트가 아니며 단지 궁금합니다.

특히 기본 Entity클래스, 기본 Component클래스 및 일부 표준 구성 요소 를 포함하는 프로젝트가 있습니까? 휠을 재발 명하고 싶지 않거나 GraphicsComponentDirect3D로 스프라이트를 수행 하려는 게임을 원한다면 게임을 시작하는 것이 훨씬 쉬울 것 입니다.

빠른 인터넷 검색으로 Rusher 가 나타납니다 . 누구든지 이것을 들어 본 적이 있습니까? 인기있는 것이 없다면 왜 안됩니까? 이와 같은 것을 재사용하기가 너무 어려우며 무거운 맞춤화가 필요합니까? 내 구현에서 프레임 워크에 넣을 수있는 많은 상용구를 발견했습니다.


4
가장 먼저 글을 써야합니다! :)
— Ricket

1
글쎄, 나는 내 자신의 프로젝트를 위해 C #으로 하나를 썼다. 어쩌면 우리 모두가 기여할 수 있을까?
— Tesserex

나는 그 C # 프로젝트 작업에 전적으로 달려 있습니다. 예, 표준이 작동하는 방법에 대한 큰 합의는 없지만 XNA에 초점을 맞출 수 있습니다 (배를 떠 다니는 것). 거대 무리가 최선의 방법을 선언하지 않았다고해서 우리가 시도하거나 실험 할 수 없다는 것을 의미하지는 않습니다.
— Michael Coleman

컴포넌트 기반 디자인이 프로그래머보다 프로젝트 관리자를 끌어 들이기 때문일 수 있습니다.
— M. Utku ALTINKAYA

답변:


45

인기있는 것이 없다면 왜 안됩니까?

그러한 프레임 워크의 작동 방식에 대한 합의와 유사한 것은 없기 때문입니다.

Gamedev.net의 스레드에서 사람들이 구성 요소 기반 게임 시스템에 대해 이야기 할 때 실제로 3 가지 요소를 기반으로 구성 요소가 작동 할 것으로 예상되는 방식에 대해 적어도 8 가지 가능한 순열이 있다고 결정했습니다.

인보 드 및 아웃 보드 -구성 요소를 엔티티로 집계해야합니까 아니면 서브 시스템의 일부 여야하고 엔티티 ID로만 연관되어야합니까?

정적 대 동적 구성 -엔티티는 잘 알려진 인터페이스를 통해 코드로 통신 할 수있는 알려진 컴포넌트 세트 (예 : 1 물리, 1 애니메이션, 1 AI 등)로 구성되거나 엔티티에 임의의 수량의 컴포넌트가 추가 될 수 있습니다. 그들 (다른 관심있는 구성 요소를 찾기위한 관련 전략과 함께)

구성 요소에 대한 데이터와 엔티티에 대한 데이터 -주로 작동하는 구성 요소가 데이터를 보유해야합니까? 아니면 모든 구성 요소가 액세스 할 수있는 공유 공간의 엔터티에 데이터를 저장해야합니까?

구성 요소가 어떻게 통신해야하는지 (공유 데이터를 통해? 기능 포인터를 통해? 신호 / 슬롯을 통해? 전혀 아닙니까?), 구성 요소 유형에 따라 고정 된 순서로 구성 요소를 업데이트하는 방법에 대한 추가 질문이 있습니다. -생성 시점에 정의 된 엔티티 순서? (토폴로지 종류의 구성 요소 상호 의존성에 따라?) 등)

이러한 각 선택은 완전히 임의적이며 한 시스템으로 수행 할 수있는 모든 작업을 다른 시스템으로 수행 할 수 있습니다. 그러나 코드를 작성하는 방법은 각 경우마다 상당히 다릅니다. 그리고 사람들은 자신에게 가장 적합한 방법에 대해 강한 의견을 갖고있는 것 같습니다.

현재 사람들은 여전히 ​​구성 요소가 어떻게 객체 지향을 대체 할 수 있다는 생각에 여전히 사로 잡혀 있으며, 전통적으로 게임이 만들어 졌던 방식과는 다른 큰 변화를 상상하고 있습니다. -사람들은 연령대에 따라 다양한 하위 시스템을 요소에서 제외했습니다.) 아마도 몇 년 안에 상황이 해결되었을 것이고 사람들은 하나 또는 두 개의 상당히 표준적인 접근법에 정착 할 것입니다.


1
이 답변이 오래되었지만 고맙지 만 현재 틀 렸습니다. 인기있는 프레임 워크가 있으며이 주제에 대한 토론은 거의 없습니다. 게임을 작성할 때 위의 대부분의 질문은 중요하지 않습니다. 코드 디자인에 영향을 미치지 않거나 한 방법은 다른 방법이 아닌 경우 빠르고 재사용 할 수 있습니다. 실제로, 인기있는 프레임 워크가 많이 있습니다. 다른 답변 중 하나에 링크 된 위키는 좋은 출발점입니다 (실제로 배송 된 게임과 프레임 워크를 쉽게 찾을 수 있도록 많은 사람들이 유지합니다)
— Adam

1
@Adam : 나는 다윈 진화가 이겼 던 접근법에 대한 세부 사항에 대한 링크를 원합니다. 내가 세부 사항을 말할 때, 나는 내외부에서 듣고 싶지 않다. 해시 맵, 벡터, 할당 자, 개인, 공개, 루프, 구성 요소에 대해 듣고 싶다.
— v.oddou

@ v.oddou 누군가가 이미 답변으로 위키 링크를 게시했습니다 (아래 참조). 세부 사항을 원하십니까? 소스 코드 가 가득 합니다 .
— Adam

10

이 모든 것들의 예를 모은 위키가 있습니다.

http://entity-systems.wikidot.com/

... 다른 접근 방식의 차이점에 대한 설명과 함께.


Ash와 Artemis (위키 모두)는 실제로 취미 게임 개발과 함께 상용 게임 개발에 사용되는 것으로 유명합니다.
— Adam

4

이 아키텍처와 관련하여 알게 된 프레임 워크를 확인하십시오 ...

www.burgerengine.com

푸시 버튼 엔진

Arthemis 프레임 워크 - https://github.com/artemis-esf/artemis-framework/tree/master/src/com/artemis

Unity Api를 살펴보십시오. 컴포넌트 기반 아키텍처와 관련하여 많은 것을 찾을 수 있습니다. (더 이상을 찾 자마자 목록을 업데이트 할 것입니다 ...)

최신 정보:

      https://code.google.com/p/spartanframework/

이것은 좋은 방법으로 엔티티 시스템에 대해 설명합니다 ... http://piemaster.net/2011/07/entity-component-primer/


2

플래시 용 푸시 버튼 엔진이 있습니다 : http://pushbuttonengine.com/

그리고 C ++ / python 용 Panda3D가 있습니다 : panda3d dot com (죄송 합니다만 게시물 당 1 개의 URL 만 n00b로 허용됩니다)

나는 더 많은 톤이 있다고 확신합니다 :)

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