오픈 소스 컴포넌트 기반 게임 또는 엔진?


15

구성 요소 기반 게임 디자인에 대한 내용을 읽었지만 구현 방법을 정확히 파악하는 데 여전히 어려움이 있습니다. 더 나은 느낌을 얻기 위해 읽을 수있는 구성 요소 기반 게임이나 게임 엔진의 좋은 예가 있습니까?

답변:


7

개인적으로 좋은 예 는 없다고 생각합니다 . 주로 게임을위한 "컴포넌트 기반 시스템"의 정의가 너무 느슨하게 정의되어 있기 때문에 아무 것도 의미하지 않습니다.

이 답변의 토론 중 일부는 도움이 될 것 입니다. 웹 게임의 항목에 대한 구성 요소 기반 시스템을 구현하는 방법

전체적으로, 접근 방식은 모든 동작을 처리하는 대형 클래스에서 동작을 수행하는 객체를 보유하는 더 간단한 클래스로 모든 종류의 GameObject 또는 Actor를 변경하는 것입니다. 이 작업을 직접 수행하고 게임에 맞는 다른 구성 요소를 만드는 것이 종종 가장 좋은 방법이라고 생각합니다.


들었어요 그것에 대한 좋은 자료를 찾으려고 할 때 거의 모든 사람이 다른 용어를 사용하여 물건을 설명한다는 것을 알았습니다. 기본 구조를 번역하는 데 절반의 시간을 소비 할 때 다른 구현을 비교하기 어렵게 만들었습니다. 엔터티 시스템, 구성 요소 시스템, 게임 개체, 템플릿, 조립, 구성 요소 조립 등
Leniency

2

여기에 당신이 좋아하는 수있는 몇 가지 자원은 다음과 같습니다
있다 놀라운 스레드. 게임 엔진 자체는 아니지만 디자인과 토론은 훌륭합니다. 매우 유사한 주제에 대한 StackOverflow
대한 질문 .

원래 질문에 대답하기 위해 C #의 Elephant 프레임 워크는 원하는 것입니다. 단종되었지만 구현을 위해 여기여전히 존재합니다 .


1

이 사이트는 기본 구현으로 시작합니다.

위의 대부분은 T = Machine 의이 기사에서 영감을 얻었습니다.

위의 두 링크에서 영감을 얻은 기본 구현으로 시작했습니다. 나는 순수한 구성 요소 시스템 이론에서 많은 것을 벗어 났으며 의심 할 여지없이 버그가 있다고 확신하지만 간단한 예제를 찾고 있다면 유용 할 수 있습니다.

브리 클 (C # / XNA)

지금은 일부 기본 엔티티를로드하고 일부 이벤트를 처리하는 등의 작업을 수행하고 있습니다. 찾고있는 주요 위치는 Engine.EntitySystem 폴더 와 엔티티가 실제로 생성 된 PlayScreen 입니다.

간단한 유형 기반 구성 요소 저장소를 만들고 일반적인 EntityManager 뒤에 숨기는 것이 비교적 간단했습니다.

내가 겪었던 첫 번째 과제는 개별 시스템에 여러 구성 요소 유형 (예 : 실제 구성 요소 및 InputMoveable)이 필요한 경우였습니다. 관계형 데이터베이스 언어를 사용하려면 JOIN 쿼리를 수행하는 방법을 찾아야했습니다. 이를 위해 일치하는 구성 요소 유형 쿼리로 작성된 엔터티에 대해 다른 컬렉션 유형을 만들었습니다. 각 엔터티 컬렉션은 OnEntityCreate 이벤트에 연결되어 일치하는지 확인합니다. 여전히 몇 가지 버그가 있습니다.

두 번째 과제는 실제로 '게임 오브젝트'를 만드는 것이 었습니다. 저는 그것들을 템플릿이라고했습니다. 여기서 T = Machine의 사양에 따르면 아마 순수하지는 않지만 작동하는 것 같습니다. 템플릿은 컴포넌트 인스턴스화를 그룹화하고 더 쉬운 엔티티 구성을 허용합니다 (예 : Ball is Drawable and Physical).

도움이 되길 바랍니다. 엔터티 / 구성 요소 시스템은 초기 장애물 중 일부를 극복하기가 어려울 수 있습니다.


1

내가 사용하지 않았지만 코드를 조금 살펴본 또 다른 하나는 Artemis 입니다. 의견이 많고 적극적입니다. 원래 Java 프레임 워크이지만 C # / XNA로 이식되었습니다.

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