기존 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.