게임을 만들기 위해 라이브러리, 엔진 및 프레임 워크를 평가할 때 고려해야 할 사항은 무엇입니까?


10

게임을하겠습니다. 사용할 수있는 게임 엔진, 라이브러리 및 프레임 워크가 많으며 어느 것을 사용할지 결정하는 데 약간의 어려움이 있습니다.

나는 이미 일부 프로그래밍 언어에 능숙하지만 전혀 모르는 다른 언어가 있습니다. 도움이된다면 새로운 프로그래밍 언어를 배우는 것에 반대하지는 않지만 내 목표는 게임을 만드는 것입니다.

엔진, 라이브러리 및 프레임 워크를 서로 비교하기 위해 어떤 기준을 사용해야하므로 어떤 것이 내 게임을 가장 생산성있게 만들 수 있는지 결정할 수 있습니까?


11
가치있는 것을 위해, 나는 두 단계 접근법을 사용합니다 : (1) 임의로 하나를 선택; (2) 나중에 결정을 후회하십시오. 장점은 첫 단계를 빠르게 지나칠 수 있다는 것입니다.
카메론 프레드 먼

2
이것이 커뮤니티 위키 질문이 아니어야합니까?
Marton

커뮤니티 Wiki 질문으로 작성되어 기쁘지만 그렇게 할 수있는 옵션이 없습니다. 나는 질문에 대한 CW는 요즘 중재자 전용이라고 가정합니다.
트레버 파월

@Marton 왜 CW 여야한다고 생각하십니까?
MichaelHouse

1
@ Byte56 누군가가 게임 개발을 시작하려고 할 때이 질문이 항상 나오기 때문입니다. 이미 많은 프레임 워크 / 엔진이 있으며 그러한 일반적인 "무엇을 고려해야 할"위키 항목이 실제로 도움이 될 것입니다. 이 사이트에 나타날 많은 "어떤 엔진을 사용해야합니까?"라는 질문에 대한 답변이라고 생각합니다. 후자의 어구는 실제로 그러한 질문을 '건설적이지 않은'것으로 만들 것입니다.
Marton

답변:


14

자동차 나 컴퓨터를 고르는 것과 같습니다. 또는 다양한 기능이 포함 된 거의 모든 것이 있습니다. 그 중 일부는 매우 중요하고 다른 일부는 신경 쓰지 않으며 일부는 포함하지 않을 수도 있습니다.

  1. 관심있는 기능의 목록을 작성하십시오. 즉, 2D / 3D 지원, 조명, 물리학, 잘 알고있는 언어 사용 등
  2. 현재 프로젝트를 기준으로 중요도에 따라 순위를 매 깁니다.
  3. 옵션과 각 옵션에 대해 조사하고 프로젝트 목표에 얼마나 잘 부합하는지에 따라 지원 기능을 평가하십시오.
  4. 목표에 가장 잘 맞는 것을 사용하십시오. 또는 상위 몇 개를 선택하고 테스트 드라이브를 제공 할 수 있습니다. 게임의 간단한 기능을 구현하고 더 좋아하는 기능을 확인하십시오.

나는 이것의 많은 부분이 실제로 당신이 원하는 것을 아는 것으로 귀결된다고 생각합니다. 이것은 당신이 만들고있는 게임에 대한 좋은 아이디어가 필요하다는 것을 의미합니다. 아마도 게임을 구현하는 방법과 포함 할 내용에 대한 상당히 상세한 계획이 필요할 것입니다. 보너스로 자세한 정보를 모두 보유하면 실제로 게임을 완료하는 데 도움이됩니다. 게임에 대한 아이디어를 얻고 코드 작성을 시작하는 것보다 계획을 따르고 목록에서 항목을 확인하는 것이 훨씬 쉽습니다.


3

먼저 게임의 상태와 필요한 내용에 대한 대략적인 아이디어가 있어야합니다. 게임에 물리가 필요한지 여부와 같은 일반적인 질문이 있습니다. 그런 다음 게임이 개발되고 운영되는 환경과 게임의 상업 여부에 관한 상호 관련 질문이 있습니다.

  • 어떤 플랫폼을 지원합니까? 어떤 플랫폼에서 게임을 개발하고 있습니까?
  • 게임을 구현하려는 프로그래밍 언어는 무엇입니까?
    • 지원하려는 플랫폼의 영향을받습니다.
  • 게임에 어떤 종류의 그래픽, 오디오 및 입력이 있습니까?
  • 게임이 프리웨어입니까 아니면 오픈 소스입니까, 아니면 상업적입니까?
    • 오픈 소스 인 경우 나중에 게임이나 첫 번째 게임 엔진을 사용하는 다른 게임과 함께 상용화하겠습니까?

Windows 전용이 되려면 DirectX 및 C # 기반 라이브러리가 강력한 후보입니다. 멀티 플랫폼이 되려면 OpenGL 및 C / C ++ 기반 라이브러리를 보거나 게임이 2D 인 경우 Flash를 사용하여 Adobe 도구를 사용할 수 있습니다. 플랫폼과 마찬가지로 프로그래밍 언어는 사용 가능한 라이브러리에 영향을줍니다. C ++로 작성된 프로그램은 Java 라이브러리를 호출하는 데 어려움이 있습니다.

게임이 상업적인 경우 Unity와 같은 엔진 구매를 고려할 수 있습니다. 게임이 프리웨어 또는 오픈 소스 인 경우 오픈 소스이거나 비영리 프로젝트 인 경우에는 무료 인 라이브러리에 집중해야합니다. 오픈 소스 라이브러리는 물론 상업 프로젝트에도 유용합니다. 오픈 소스 라이브러리를 볼 때 라이센스를 확인하십시오. 일부 라이센스에서는 라이브러리 사용 방법에 따라 자체 소프트웨어 오픈 소스의 일부를 만들어야합니다. 오픈 소스 라이브러리로 자신을 제한하면 사용할 수있는 라이브러리에 또 다른 한계가 있습니다.

도서관을 볼 때 개발 및 커뮤니티가 얼마나 활발한 지 확인하십시오. 1999 년 이후로 업데이트되지 않은 다른 사람의 대학 웹 페이지에서 호스팅되는 라이브러리보다 잘 알려져 있고 적극적으로 유지 관리되는 라이브러리를 신뢰합니다.

이, 첫 번째 게임 프로젝트되지 않습니다 특히 마지막으로 질문은, 여부가 측면 게임은 당신이 것을해야합니다 알고 당신은 당신이 그것을 자신을 시도 할 경우에 어려움을 겪고 있습니다. 이러한 측면은 특히 라이브러리를 찾기위한 후보이기 때문입니다. 게임에서 충돌 감지가 필요하고 직접 충돌 감지를 구현할 수없는 경우 (물론 불가능한 경우) 물리 엔진을 선택하고 충돌 감지 기능을 활용하는 것이 좋습니다.


1
  • 도서관이 필요한 일을합니까?
  • 필요한 작업을 전문으로합니까? 그것에 얼마나 많은 혼란이 붙어 있습니까?
  • 어떻게 설계 되었습니까? 볼 때 구토하고 싶습니까? 그렇다면 건강과 건강을위한 최선의 선택이 아닐 수도 있습니다.
  • 그것은 당신의 요구에 충분히 유연합니까? 코드의 절반을 이미 작성한 후에는 라이브러리가 작동하지 않는다는 것을 알지 못합니다.
  • 도서관은 미래의 증거는 무엇입니까? 개발자가 시간이 지남에 따라 기능을 추가하고 있습니까? 그는 물건을 고치고 있습니까? 그는 일을 개선하고 있습니까? 게임 개발에 몇 년이 걸리는 경우에는 큰 차이가있을 수 있습니다. 한 달 안에 나올 소규모 프로젝트에는 그다지 중요하지 않습니다.
  • 크기가 적절합니까? 소규모 프로젝트의 경우 플레이어가 20MB 또는 200MB를 다운로드해야하는지 여부에 큰 차이를 만들 수 있습니다. 더 큰 프로젝트는 아마도 미들웨어의 크기가 거의 차이가 없을 정도로 충분히 클 것입니다.

1

사람들이 언급 한 게임 별 기능 외에도 몇 가지 일반적인 질문도 고려해야합니다.

  1. 지원 구조-게임 엔진이 완벽하더라도 지원이 너무 비싸거나 존재하지 않을 수 있습니다.
  2. 배우는 것이 얼마나 쉬운가-배우는 시간이 엄청 나기 때문에 너무 큰 것을 원하지 않을 수 있습니다.
  3. 미래의 계획을 다루고 있습니까? 현재 완벽한 엔진을 배우는 데 시간을 투자하지 않고 다음 프로젝트를 위해 새로운 엔진을 처음부터 다시 배우는 것뿐입니다. 아니면 당신은 그것을 원할 수도 있습니다.
  4. 라이센스-폐쇄 소스 게임을 만드는 경우 엔진 라이센스가 공개 소스가 아닌지 확인하십시오.

0

라이브러리, 프레임 워크, 엔진 및 SDK를 평가하고 최고를 선택하기위한 짧은 치트 시트

  • 라이브러리, 프레임 워크, 엔진 SDK 등은 문제를 해결하거나 문제를 해결하고 특정 요구 사항을 충족하도록 돕기위한 도구입니다.
  • 평가는 어느 것이 가장 요구 사항을 충족하는지 파악하는 것을 의미합니다.

따라서 평가를 시작하기 전에 평가에 의해 답변되어야하는 질문이기 때문에 어떤 시나리오에서 어떤 요구 사항을 갖고 있는지 / 필요한지 명확해야합니다.

시나리오는 요구 사항의 출처를 정의합니다 (요구 사항과 요구 사항을 결정하는 사람).


일반적인 시나리오는 다음과 같습니다.

가장 취미적인 프로젝트 시나리오

당신은 당신 자신 또는 일부 친구들과 함께 당신의 (아마도 첫 번째) 게임을 만들고 싶어합니다. 완벽하게 모든 것을 스스로 결정할 수 있으며 기본 기술 요구 사항 및 기술 요구 사항 (모바일 게임, PC 게임, 콘솔 게임, 웹 게임이어야 함)으로 제한됩니다. 원하는 것을 결정할 수 있습니다.

암시 적 요구 사항은 특정 내용 (언어, 특정 프레임 워크 / 엔진)을 배우고 싶을 것입니다.

학생 시나리오

교사로부터 요구 사항이 올 수 있습니다. 이 경우의 일반적인 요구 사항 : 게임에는 물리 요소와 멀티 플레이어 네트워크 지원이 필요합니다. 또는 C ++로 작성해야합니다. 따라서 평가가 쉬워집니다. C ++로 코딩 할 수 있고 이미 네트워크 및 물리 엔진을 포함 할 수있는 게임 엔진을 찾고 있습니다.

더 악한 (실제) 요구 사항 : 모든 것을 처음부터 작성해야하지만 라이브러리 사용은 허용됩니다. 따라서 편집기가 허용되지 않습니다 (예 : Unity3D). 따라서 엔진 / SDK가 아닌 라이브러리를 찾고 있습니다.

인디 게임 시나리오

나중에 게임으로 돈을 벌고 싶습니다. 따라서 게임을 판매하려는 상점에서 어떤 요구 사항이 있는지 확인하는 방법을 판매해야합니다.

Java 게임, HTML5 게임 등을 허용합니까? ...)

특정 라이브러리를 포함해야합니까 (있는 경우 해당 언어로 제공되는 라이브러리)

Google Playstore에서는 게임을 Android 게임으로 작성해야하고 Apple AppStore에서는 게임을 iOS 앱으로 작성해야합니다. 또는 멀티 플랫폼 엔진을 선택해야합니다.

전문 시나리오

요구 사항을 제공하는 상점이있을뿐만 아니라 요구 사항에 대한 상상력이있는 게시자 또는 고객 일 가능성이 높습니다. 이 시나리오에서는 더 많은 고용 된 개발자로 구성된 팀도 있습니다. 기술 세트에 따라 새로운 요구 사항이 발생합니다 (프로그래머는 c ++ 만 작성할 수 있으므로 새로운 것을 배우는 데 많은 시간이 필요없는 순수한 Java / Android 게임 엔진을 사용할 수 없음).

이 시나리오에 대해서는 자세히 설명하지 않습니다. 일단 직원으로 구성된 팀을 구성하고 고객 / 출판사를 찾은 후에는 평가할 대상을 이미 알고 있습니다.


내가 취미 나 인디이고 다른 사람이 없을 때 내 요구 사항이 무엇인지 어떻게 결정합니까?

당신의 목표와 게임에 대해 스스로 질문을하십니까?

  • 내 게임은 무엇이어야합니까? 모바일, PC, 웹 (html / Js), 사용할 컨트롤러 (터치 스크린, 자이로 스코프, 게임 패드)

  • 내 게임의 새로운 기능과 다른 게임에도 어떤 기능이 있습니까? 다른 게임들 (렌더링, 오디오, 입력 처리)이 가지고있는 부분들은 여러분이 찾을 수있는 대부분의 (게임 엔진) 도구에 의해 수행 될 것입니다.

  • 내 프로젝트의 크기는 무엇입니까 : 화난 새나 하늘 림? Angry Birds는 거의 모든 도구에서 수행 할 수 있으며 skyrim은 수년 간의 추가 사용자 정의를 통해 고성능 도구로 제한됩니다 (고성능 지형 엔진은 쉽지 않습니다)

  • 게임을 끝내는 것이 나의 유일한 목표입니까? 예? 완벽하게도 Unity, Unreal과 같은 고급 기능을 사용할 수 있습니다. 편리한 편집기와 대규모 커뮤니티를 통해 자습서를 제공하고 질문에 답변 할 수 있습니다. 메시 로딩, 자체 수학 함수 구현 등과 같은 저수준 작업을 처리해야하는 부담을 덜어줍니다.

  • 무언가를 배우는 것이 나의 목표입니까? 예? 무엇을 배우고 싶습니까?

  • 어떤 언어를 선택해야합니까? 목표가 여전히 게임을 끝내는 것이라면 자신 / 팀이 가장 잘 알고있는 것을 선택하십시오. 특정 언어를 배우려면 해당 언어로 된 도구를 선택하십시오.

  • 도구 X가 내 게임에 충분한 성능을 발휘합니까? 아마, 당신은 알지 못할 것입니다. 대량 생산에서도 최적화 및 연마 단계는 오랜 시간이 걸리며이를 달성하기위한 큰 노력입니다. 성능 문제가 발생했을 때 성능에주의를 기울이십시오. 한계에 도달하지 않으면 도구의 성능을 모릅니다. 도구 개발자 웹 사이트의 모든 내용은 대략적인 추측입니다. 몇 년 동안 도구를 평가 한 후 개발자 웹 사이트에서 아무것도 보이지 않았습니다.


이러한 질문에 대답하면 요구 사항이 나타납니다. 평가에서 도구 목록을 찾고 도구가 제공 할 수 있거나 제공 할 수없는 것 (홈페이지를 읽는 것이 아니라)을 테스트하고 있습니다.


요구 사항은 돌로 자르지 않고 동적입니다. 그들은 개발하는 동안왔다 갔다 할 것입니다. 게임에 물리가 필요한지 여부는 디자인에 달려 있습니다. 설계가 변경되면 요구 사항도 변경 될 수 있습니다.

요구 사항을 충족하고 시작하십시오. 변화하는 요구 사항은 프로젝트 규모와 경험 수준에 관계없이 매일 고통받는 개발자, 행복하고 행복한 개발자입니다.


0

여기로 가십시오 .

많은 게임 엔진이 있음에도 불구하고 실제로 많은 선택의 여지 가 없습니다 .

  1. 라이센스 제한. 일부 엔진은 예 를 들어 iOS에 컴파일하기 위해 추가 비용을 청구하는 데 사용되는 Unity 와 같은 대규모 라이센스 비용을 먼저 지불하지 않고 제품을 출시하는 기능을 방해합니다 (예 : 2016 년에 변경됨 )
  2. 플랫폼. 여러 플랫폼을 타겟팅하는 데 관심이 있습니까? 어느 것?
  3. 2D 또는 3D? 일부 엔진은 2D를 수용합니다.
  4. 물리학이 필요하십니까? 일부 엔진은 물리를 제공합니다
  5. FPS, RTS? 만들고있는 게임 유형에 특화된 엔진을 사용하는 것이 좋습니다.
  6. 분명히 당신이 좋아하는 언어로 일하고 싶습니다. C를 좋아하지 않습니까? 그런 다음 Allegro를 사용하지 마십시오!
  7. 당신은 거대한 디자인 패턴입니까, OOP 팬입니까? 잘 알려진 OGRE "과용"패턴
  8. 활발한 개발? 블리딩 엣지 기능의 가용성 (DX11 / OGL 4)과 몇 년 전 개발이 중단 된 엔진의 안정성 간의 상충 관계를 고려해야합니다.
  9. 사용자 기반? 사용자 수가 많을수록 일반적으로 포럼이 개선되므로 질문에 쉽게 답변 할 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.