어떤 기능이 엔진에 속하고 어떤 기능이 게임에 속합니까?


19

현재 2D 게임 엔진의 새로운 기능을 엔진에 직접 코딩하여 구현하고 테스트하고 있습니다. 동시에 스크립트 지원을 갖춘 쇼케이스 게임이 있는데 엔진 기능을 호출해야합니다. 예를 들어 게임을 위해 특별히 스크립트를 작성하는 대신 고정 타일 이동을 엔진의 Entity 클래스에 연결합니다. 이것은 분명히 하나 이상의 게임에 사용되는 일반 엔진의 아이디어를 깨뜨리고 있습니다.

올바른 부분 (즉 엔진 대 게임)에서 올바른 구현에 계속 집중하는 모범 사례가 있습니까?

답변:


25

이것에 대해 몇 가지 생각하는 방법이 있습니다. 하나는 엔진이 가지고 있어야하는 특정 기능을 나열하는 것입니다 (여기에서 요청한 내용). 다른 방법은 "엔진"에 대해 너무 걱정하지 않고 게임을 시작한 다음 여러 기능 사이에서 재사용되는 기능을 재사용하는 것입니다 게임 (특히 모든 게임 에서 사용되는 기능 )은 특정 게임의 소스에서 "engine"이라는 공유 코드베이스로 마이그레이션해야합니다.

결국 게임이 아닌 엔진에서 특정 기능을 원하는 이유는 여러 게임간에 공유되기 때문입니다. 일반적으로 이는 드로잉 명령, 입력 컨트롤러 및 네트워킹 코드와 같은 것입니다. 2D 게임 엔진에는 이미지로드, z 순서의 디스플레이 계층 구조, 스프라이트 시트 처리, 트위닝 등과 같은 2D 그래픽 기능이 많이 있습니다. 반면에 많은 게임에는 물리 시뮬레이션이 필요합니다. 그 동안 거의 모든 게임에서 사용되는 "언더 후드"항목에는 타이머, 이벤트 메시징 및 게임 개발 고유의 수학 함수 (예 : distanceToTarget ()


긴 이야기 요약 :

A) 엔진에는 대부분의 게임에서 공유하는 기능이 있어야합니다.

B) 많은 게임을 만들어 어떤 기능을 공유하는지 배웁니다.


7
한 -just start making games without worrying too much about the "engine"
JCM

1
그럼 just start making games without worrying too much about the "engine"확실히 좋은 제안입니다.
Christian Ivicevic

3
위의 두 의견에 동의하지만 "엔진에 대해 걱정하지 않고 게임을 만들자"라는 말은 문맥에서 벗어 났으며 나머지 사항 없이는 의미가 없습니다. "여러분이 발견 한 기능은 여러 게임에서 재사용됩니다 (특히 , 모든 게임에 사용되는 기능)을 사용하여 특정 게임의 소스에서 "엔진"이라는 공유 코드베이스로 마이그레이션해야합니다. 간단히 말해서, 가능한 많은 게임을 만들어 엔진 아래에서해야 할 일과해야 할 일을 파악하십시오. t.

2
이것은 실제로 게임에 필요하지 않은 엔진 기능을 구현하지 못하게하기 때문에 좋은 아이디어입니다.
Zachary Yates

2
3규칙의 정신을 유지하기 위해 +1 .
Joshua Drake
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.