언제 자신의 게임 엔진을 굴려야합니까? [닫은]


20

저는 5 년 동안 소프트웨어 개발자로 일해 왔으며 iOS 게임 개발에 참여하고 싶습니다. 나는 약 2 년 동안 iOS SDK를 가지고 코코아 헤드 회의에 참여해 왔으며 objective-c, cocoa 및 c 및 c ++에 대해 잘 알고 있다고 생각합니다.

게임 아이디어가 있고 Box2D를 사용할 것이라는 것을 알고 있지만 cocos2D를 사용해야하는지 궁금합니다. 주요 이유는 다음과 같습니다.

  1. cocos2d에서 사용할 수없는 그래픽을 현명하게하고 싶을 수도 있습니다.
  2. 내 게임 엔진을 굴리면 더 많은 제어권을 갖게됩니다.

물론 이미 존재하는 게임 엔진을 사용하는 주된 이유는 시간을 절약하고 어려운 작업을 쉽게 할 수 있기 때문입니다. 그러나 기술적 인 갈비를 가진 사람이 자신의 것을 굴릴 필요가 있다면 말이됩니까?


7
당신이 "C / C ++"라고 말하면, 당신은 그들 중 적어도 하나, 그리고 아마도 둘 다를 잘 이해하지 못했을 것입니다.
DeadMG

10
나는 어떤 사람들이 두 가지를 혼동한다는 것을 이해하고 아마도 C / C ++ / Objective-C는 iOS 플랫폼에서 프로그래밍하는 데 사용할 수있는 주요 언어를 이해한다는 것을 반복해야한다고 생각합니다. C / C ++이 자동으로 두 가지를 혼동한다는 의미는 아닙니다.
Joey Green

이 질문은 일반적인 "어떻게 내 엔진을 만들 수 있습니까?" 질문. +1입니다.
Ray Dey

1
@DeadMG "C / C ++"라고 말하고 두 가지를 모두 잘 알고 있습니다.
Ciaran

나는 그것이이었다라고 말하고 싶지만 , 심지어 그것을했다
bobobobo

답변:


38

다른 게시물의 대부분은 "엔진이 아닌 게임을 만들 것"이지만, 특정 게임을 염두에두고 다른 사람의 코드로 시작하는 것이 좋은 아이디어를 알고 싶다고 가정합니다. 베이스 또는 처음부터 시작합니다.

자신의 롤을해야한다는 사실알지 못하면 자신의 기술을 롤백해서는 안됩니다 . 플립 팬트처럼 들릴지 모르지만 실제로는 정답입니다. 대부분의 결정과 마찬가지로 절충이 있습니다. 특정 상황에 대해서만 비용 / 이익 분석을 결정할 수 있습니다.

다음 사항을 이해해야합니다 (이 목록은 모든 것을 포함한 것이 아닙니다).

  • 이미 사용할 수있는 미들웨어 ( "엔진"또는 기타)
  • 그 미들웨어가 테이블에 가져 오는 것은 현명한 기능입니다.
  • 특히 멀티 플랫폼 지원에 관심이있는 경우 미들웨어의 성숙 / 증명
  • 미들웨어가 개발 속도를 높이기 위해 제공하거나 제공하지 않는 도구 (자체 기술로 도구를 할인하지 않음)
  • 미들웨어의 제한 사항 (단순한 예로 Unity 3.x는 iOS의 동적 조명에서 실시간 그림자를 수행하지 않았습니다)
  • 어떤 특정하는 것은 특정 게임 기능을 가지고있다 .
  • 마감일이 무엇인지, 미들웨어가 제공하는 지점과 미들웨어 비용이 어느 정도인지 파악하기 위해 소요되는 시간.
  • 미들웨어의 확장 성 (예를 들어, Blob 그림자 또는 투영 그림자를 사용하여 Unity의 iOS에서 그림자 문제를 해결할 수 있습니다.)

(내가 구체적으로 "더 많은 제어"를하지 않았다는 점에 유의하십시오. "작성하지 않은 코드가 마음에 들지 않습니다"에서 "보고, 이해하고, 볼 수 있어야합니다. 물리 엔진의 모든 변수를 조정하여이 특정 효과를 달성하십시오. "첫 번째 변수는 실제로 유효한 고려 사항은 아니지만 두 번째 변수입니다.)

개인적으로 저예산 게임을 위해 자신의 기술을 굴리는 것은 그만한 가치가 거의 없다는 것을 알았습니다. 요즘 싼 엔진을 얻는 힘의 양은 말도 안됩니다. 수백만 달러의 트리플 A 엔진 라이센스를 결정하려는 시점에 있지 않습니다. 예를 들어 Unity가 3k에 제공하는 것을 이길 수는 없습니다. 또는 Cocos2d는 비용이 든다 (무료가 아닙니까?).

이제 게임이 다른 엔진이 제공 할 수 없거나 합리적인 프레임 속도로 제공 할 수없는 기술에 중점을 둔 경우 수행 할 수있는 작업을 조사 할 가치가 있습니다. 그렇다고 다른 미들웨어를 완전히 버리는 것은 아닙니다. 렌더러와 같이 자신 만의 것이 필요하다고해서 물리 나 사운드 또는 UI를 위해 다른 미들웨어를 사용할 수 없다는 의미는 아닙니다.


7
동의했다. tldr : 질문을 해야하는 경우 기존 엔진을 사용하는 것이 좋습니다.
Chris Subagio

굵게 표시된 메모는 내 경험을 요약합니다.
엔지니어

1
커뮤니티도 중요합니다. XNA와 같이 강력한 커뮤니티를 가진 사람은 누군가가 전에 해본 적이 있거나 포인터를 줄 수 있기 때문에 특정 문제 를 훨씬 쉽게 해결할 수 있습니다.
ashes999

14

자신의 엔진을 굴리지 마십시오. 당신은 자신의 게임을 롤. 동시에 엔진을 작성하는 경우에는 좋을 것입니다. 그렇지 않은 경우 재사용 할 수있는 부품을 항상 "엔진"으로 만들기 위해 항상 리팩터링 할 수 있습니다.

사람들은 종종 게임의 "엔진"부분을 작성하는 데 필요한 것을 과대 평가합니다. 필요한 것만 수행하면 오래 걸리지 않습니다. 어려운 부분은 쓰기 인프라를 고수하지 않고 문제를 해결하기 위해 반드시 필요한 것을 작성하는 것입니다.

다음과 같은 경우 기존 엔진을 사용합니다.

  • 마감일이 촉박합니다
  • 알려진 고정 기능 세트가 있으므로 엔진을 선택할 수 있습니다

3

게임을 작성 해야한다고 생각하며 나중에 엔진을 사용하게 될 것 입니다. OpenGL 외에는 아무것도 사용하지 않고 처음부터 그래픽 엔진을 작성하는 것이 시간 낭비입니다. 비교적 잘 해결 된 문제이므로 일반적으로 사용 가능한 다른 타사 솔루션과 비교하여 중요한 새로운 기능을 많이 추가하지 않고 API의 모양 만 변경하면됩니다.

Cocos2D 또는 다른 그래픽 레이어가 현재 요구 사항을 충족하면 사용하십시오. 개발 과정에서 요구 사항이 변경되면 렌더링 백엔드를 비교적 쉽게 교체 할 수 있습니다. 경험이 있고 엔진을 직접 만들 필요가 있다고 생각되면 스왑 아웃과 같이 게임을 구성하는 데 필요한 사항이 있어야합니다. 렌더링 백엔드는 비교적 사소한 작업입니다.

게임을 빌드하고 특정 요구 사항에 따라 작성하는 코드의 기능 세트를 구동하고 재사용 성과 우수한 아키텍처를 염두에두고 코드를 작성하십시오. 이와 같은 몇 가지 프로젝트를 완료하면 자연스럽게 "엔진"으로 끝나게되며 프레임 워크 수준의 기능 크립에 빠지지 않기 때문에 더 빨리 프로젝트를 완료하게됩니다.


그의 목표가 배우는 것이라면 시간 낭비가 아닙니다.
Ciaran

3

매우 간단합니다. 학습 또는 시장 출시시기의 기본 목표는 무엇입니까?

라이브러리가 해결하는 개념을 구현 한 경험을 배우는 것이 주된 목표 인 경우 라이브러리를 사용하지 마십시오. 게임 (파트 타임)을 개발할 때마다 제 목표는 순전히 학습입니다. 얼마나 오래 걸리든 상관 없기 때문에 처음부터 다시 시작해야합니다! 이제 결정합니다.


0

당신이 때 당신은 당신의 자신의 게임 엔진을 출시한다 알고필요 그것을 위해가.

예를 들어, Unity에 쓸 돈이 없다고 가정하십시오. 또는 대신 새 하드웨어에 사용하는 것이 좋습니다. 또는 사용 가능한 무료 엔진에 성능 문제가 있거나 낮은 수준에서 더 많은 제어 기능 이 필요 합니다.

소프트웨어 작성을 위해 소프트웨어 작성을 좋아한다면 게임 엔진 작성을 좋아할 것입니다. 초보 게임 프로그래머 의 일반적인 함정 은 일종의 영원한 프로젝트로 엔진작성하는 것 입니다. 솔직히 이것이 오픈 소스 게임 엔진이 등장한 방식이라고 생각합니다.

그런 경우 자신의 엔진을 작성하십시오.

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