가장 잘 설계된 오픈 소스 게임 엔진은 무엇입니까? [닫은]


15

가능한 중복 :
게임 코드의 좋은 (잘 구성된) 예제는 어디에서 찾을 수 있습니까?

여러 C ++ 게임을 코딩했으며 이제 내 게임 엔진과 편집기를 만들고 있습니다.

디자인에 대해 의문이 있으며 따라야 할 훌륭한 예를 찾고 싶습니다.

귀하의 의견으로는 가장 잘 설계된 것은 무엇입니까?

객체 지향적이어야합니다. 프로그래밍 언어는 중요하지 않지만 C ++, C #, Java 또는 이와 유사한 순서로 선호합니다.

편집 : 더 명확히하기 위해 게임 특정 코드에 관심이 없습니다. 범용 게임 엔진을 원합니다.

편집 : 이 기사는 게임 엔진이 무엇인지 설명합니다 : wikipedia의 게임 엔진 및 여기 알려진 게임 엔진의 목록이 있습니다 : wikipedia의 게임 엔진 목록


3
실제로 내 질문을 이해합니까? 내가 원하는 게임 엔진 (뿐만 아니라 게임 ). 그리고 나는 객체 지향이어야합니다 . 당신이 말한 스레드에서 답은 게임에만 해당됩니다 (Doom3, Prototype 등) 또한 그래픽 툴킷 (OpenSceneGraph)이 있지만 해당 스레드의 "게임 엔진"에 대한 구체적인 내용은 없습니다 ... 닫을 수 있습니다 또는 당신이 그것을 좋아하지 않으면 내 질문을 삭제하지만, 나는 투표를 이해하지 못한다 ... :( 내 질문 동일 하지 않습니다
Dani

2
더 명확히하기 위해 게임 관련 코드에 관심이 없습니다. 범용 게임 엔진을 원합니다.
Dani

3
차이점이 있습니다. 모든 게임이 범용 엔진에서 실행되는 것은 아닙니다. Doom3에는 FPS 전용 엔진이 있고 프로토 타입이 다르므로 등등 ... 리소스가 공통적 일 수 있지만 (리소스 관리, 스크립팅 ...) 이것은 내 질문과 관련이 없습니다. 제 질문은 "여러 C ++ 게임을 코딩했습니다"라는 문구로 시작합니다. 반복해서 : 내 필요는 좋은 범용 게임 엔진 소스 코드를 찾는 것입니다. 재사용 가능한 코드를 검색하는 게임 소스가 아닙니다.
Dani

1
Doom 3에는 "FPS 전용 엔진"이 있지만 리소스 관리 및 스크립팅, 3D 렌더링, 물리 등 일반적인 엔진에 필요한 모든 부품이 있습니다. 그것은 일반적인 엔진 이며 그 이상 은 아닙니다.

2
@Joe Wreschnig이 주제에 대해 @Dani에 동의하는 경향이 있습니다. 모든 게임은 엔진 형태로 구동되지만 "일회용"엔진에 사용되는 아키텍처 패턴과 여러 타이틀에서 작동하도록 설계된 엔진은 스크립트, 리소스 관리, 3D 렌더링, 등의 구성 요소. 또한 동일한 스튜디오에서 개발 한 엔진을 기반으로 개발 된 게임 코드를 보는 것이 현명한 선택이 아닐 수 있습니다. 타사 환경에서 엔진이 얼마나 유연하고 사용하기 쉬운 지에 대한 진정한 표시는 제공하지 않기 때문입니다.
Ari Patrick

답변:


6

게임 엔진을 구축하는 가장 좋은 방법은 이미 알고있는 것부터 시작하여 지루하거나 반복적 인 기능을 추가하는 것입니다.

예를 들어, Python / pygame (SDL 래퍼 인)으로 많은 작업을 수행하지만 시스템을 약간 즐기지 만 나를 방해하는 세 가지가 있습니다.

  • 애니메이션 루프를 만드는 것은 지루하며 모두 거의 동일합니다.
  • 기본 스프라이트 오브젝트는 매우 제한적입니다. 방향과 속도, 다양한 화면 가장자리 조건, 여러 이미지 및 여러 충돌 방식을 처리 할 수있는 향상된 스프라이트를 원했습니다.
  • 파이 게임에는 UI 기능이 없습니다.
    게임에 쉽게 추가 할 수 있는 간단한 레이블, 버튼 및 숫자 선택기 를 원했습니다.

이러한 기능을 중심으로 객체 지향 래퍼를 만드는 것이 비교적 쉽습니다. 10 장과 여기에있는 게임 엔진 문서를보십시오 : http://aharrisbooks.net/pythonGame/

(이것은 책의 일부로 작성되었지만 책을 원하지 않더라도 게임 엔진에 오신 것을 환영합니다.)

10 장에서는 기본 2D 게임 엔진을 구축하기위한 동기와 기술에 대해 설명합니다. 자신 만의 것을 만들면서 즐길 수도 있습니다. 실제 언어는 그다지 중요하지 않습니다 (물론 OOP를 지원하려면 OOP 언어가 필요합니다). 이미 C ++과 함께 SDL을 사용하고 있다면 내 엔진을 C ++ / SDL에 맞게 조정할 수 있습니다.


8

유능한 Quake (ID tech) 엔진 디자인은 시간의 테스트를 견뎌냈으며 아마도 가장 성공적인 게임 엔진 디자인 일 것입니다. 렌더러 이외의 모든 것은 90 년대 후반 이후 크게 바뀌지 않았으며 여전히 ETQW와 같은 현대 게임에서 사용됩니다.

이 엔진의 4 번의 반복 (Quake 1 ~ 3, Wolf ET)에 대한 전체 소스 코드는 GPL에 따라 제공됩니다. 현대에 관련성을 유지하는 활발하게 개발 된 커뮤니티 지원 퀘이크 기반 게임 엔진이 수백 가지가있을 것입니다. XreaL은 환상적인 렌더러로, ioQuake3는 현대 하드웨어에 최적화 된 Quake 3의 충실한 유지 관리를 위해 특히 가치가 있습니다. 또한 엔진의 최신 "공식"ID 버전의 경우 게임 엔진 (전체 엔진이 아님)도 사용할 수 있습니다.

이 게임 엔진을 사용하지 않더라도 잘 고려한 클라이언트-서버 분리 아키텍처와 낮은 수준의 세부 정보에서 게임 로직을 분리하는 것이 좋습니다.


1
그래도 Pre-Doom3 id 기술 객체 지향을 정확하게 호출하지는 않습니다.
Tetrad

3
아니요, 객체 지향적이지는 않지만 제가 말했듯이 연구 할 가치가 있습니다. c'mon을 의미합니다. 단지 절차 적이라고해서 눈을 if을 때 눈에 암을 유발한다는 의미는 아닙니다! ;)
Max E.

6

Ogre3D 렌더링 라이브러리는 엔진 코드에 매우 가깝고 내가 들었던 모든 계정에서 매우 잘 설계되었으며 매우 OO입니다.

http://www.ogre3d.org/


+1 위대한 엔진. 감사합니다 Tetrad! 이미 알고 있지만 소스 코드를 사용하거나 본 적이 없습니다. AI가 통합되어 있는지 알고 있습니까 (예 : 경로 찾기 등)
Dani

3
렌더링과 관련이 있다고 생각합니다.
Tetrad

2
오우거는 그래픽 렌더링 라이브러리입니다. 객체 지향 그래픽 렌더링 엔진.
Jonathan Sternberg

0

게임 엔진에 대해 이야기 할 때 렌더 엔진, 사운드 엔진, 물리 엔진, 입력 엔진 등이 아닌 것에 대해 생각하고 있다고 생각합니다.

따라서 게임 아키텍처, AI 또는 디자인 패턴 / 시스템 등에 대해 생각할 수 있습니다. 소프트웨어는 데이터 및 기타 구성 요소를 관리하여 일종의 장면 / 그런 / 환상을 생성하여 관리 할 수있는 규칙 세트를 생성하는 데 사용됩니다. 실제 "비디오 게임"을 만들도록 조정하십시오.

이것은 비디오 게임의 실제 최상위 계층이며, 심지어 그것에 대해 조금 배우려고했는데, 광대하고 복잡하며 다른 모든 주제에 대한 많은 지식이 필요합니다. 어떤 상황에서든 대체 현실을 재현하고, 매 이벤트마다 신중하게 추적하고, 계산하고, 그 순간에 정확한 데이터를 재생성하고 싶다고 상상해보십시오. 모든 종류의 게임에는 일종의 하위 세트 게임 엔진이 있으며, 실제로 수학적으로 빠른 일반 엔진을 만드는 것이 가능하다고 생각합니다. 단일 캐릭터를 제어하는 ​​게임의 경우에도 다양하고 여전히 전체 아키텍처를 변경하기 위해 게임을 필요로하는 많은 것들이 있습니다.

게임 산업은 다른 분야의 컴퓨터 과학과 마찬가지로 오픈 소스에 의해 잘 보존되지 않습니다. 오락에는 예술 라이센스와 관련된 다양한 종류의 라이센스 유형이 있기 때문입니다. 게임 제품은 고객 만 지불하고 AFAIK는 Hord3d, NeoAxis, blendelf, Panda3D : 당신을 위해 충분히 작동하는 엔진은 거의 없습니다. 그러나 Unity, Torque, C4 및 기타와 같은 도구만큼 쉽게 사용할 수 있다고 확신 할 수는 없습니다. 게임 엔진은 그래픽 렌더러와 함께 게임 제작에서 찾을 수있는 가장 어려운 유형의 소프트웨어라고 생각합니다.


0

Pygame과 함께 Python을 사용하는 것이 좋은 해결책입니다. 어쩌면 파이썬은 약간 느리지 만 오늘날의 컴퓨터에서는 게임을 최적화하려고 시도해도 중요하지 않습니다. 파이 게임은 파이 게임의 원본 사이트에 아주 좋은 문서를 가지고 있습니다. 그러나 먼저 튜토리얼을 시작하여 몇 가지 기본 사항을 배우십시오. 속도 최적화 (이미지 변환 등)를 위해서는 쉽게 찾을 수있는 다른 예제가 필요합니다.

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