Unity3D와 같은 엔진이 초보자를위한 OpenGL과 같은 기본 라이브러리를 강조한 이유는 무엇입니까? [닫은]

저는 3D 게임의 초보자 일뿐입니다. 선호하는 플랫폼은 Android입니다. 다른 포럼에서 “사용할 내용 : OpenGL 또는 Unity3d?”에 관한 질문을 게시했습니다. 그들은 모두 Unity3D와 내장 기능 및 도구를 강조했습니다. OpenGL을 사용하려면 직접 코딩해야합니다. 그러나 누군가는 대부분의 복잡한 게임에는 맞춤형 엔진이 필요하다고 말합니다. OpenGL에서 Unity3D와 같은 엔진을 사용하는 이유는 무엇입니까?



답변

나는 당신이 이미이 질문에 스스로 대답했다고 생각합니다. 당신은 “나는 3D 게임의 초보자 일뿐” 이라고 말했습니다 . 또한 당신은 “… Unity3D와 그것을 사용하는 것은 내장 된 기능과 도구이며, OpenGL을 사용하려면 직접 코딩해야합니다”라고 말했습니다 .

본질적으로 이것은 OpenGL을 단독으로 사용하는 경우 게임 엔진을 작성하고 몇 년 후에 게임을 작성한다는 의미입니다. 게임에 집중하고 싶다면 가능한 리소스를 활용하여 가능한 한 그 목표에 근접하게하십시오. 게임 엔진을 사용하는 것은 게임을 만드는 데 필요한 모든 것을 작성하는 대신 게임을 만드는 데 집중하는 가장 좋은 방법입니다.

이 관련 질문을 참조 : 라이브러리와 엔진 사이의 차이는 무엇입니까 이 하나의 게임 엔진에 비해 게임 프레임 워크입니다 무엇?


답변

초보자는 정의에 따라 자신이하는 일을 모릅니다 .

OpenGL은 학습 곡선을 가지고 있습니다. 물론, 몇 개의 glBegin 명령을 내릴 수 있고, 화면에 삼각형을 배치하는 것에 흥미를 느끼고, 아직 갈 준비가되어 있지 않은 좀 더 복잡한 무언가로 깊이 빠져 나갈 수 있습니다. 배우기에는 좋은 방법이 아닙니다. 비유 (약간 과장된)가 기본적인 고등 물리학을 배우고 나서 대형 하드론 충돌체를 담당하고있을 수 있습니다. 그것은 싱크대 또는 수영 대가 아니며, 수영 또는 방치 형입니다.

대부분의 사람들은 “게임을 만들고 싶습니다. 무엇을 사용해야합니까?”라고 묻는 것으로 가정합니다. 질문은 실제로 게임을 만들고 싶어합니다 (그렇지 않으면 반드시 다른 질문을 했었을 것입니까?). 따라서 답변은 질문에 맞춰져 있으며 기존 툴킷, 프레임 워크 또는 엔진을 사용하는 것이 그러한 야심을 달성하는 데 도움이되는 한 가지 방법입니다 단일 매트릭스를 업데이트하기 위해 UBO 또는 glUniform 호출이 바람직한 지 여부에 대해 고민하여 산만하지 않습니다.

이것은 한 번에 한 걸음 씩 나아가 학습 과정을 더 쉽게 만들고 끝 부분에 보람있는 일입니다. 게임 제작 방법 성숙하고 강력한 3D API 를 동시에 올바르게 사용하는 방법 을 배우는 것은 초보자에게는 너무 많은 것일 수 있습니다. 이것은 독촉-크루거 효과 에서 음의 의미를 뺀 것과 같습니다 . 당신은 당신이 모르는 것을 모르므로, 당신이 실제로 무엇을하고 있는지에 대한 사실적인 그림을 실제로 가지고 있지 않습니다.

반면에 OpenGL을 배우는 것이 목표라면 실제로 게임을 만들고 싶지는 않습니다! OpenGL을 배우고 싶고 게임을 만드는 맥락에서 그것을하는 것은 재미있는 학습 방법이 될 수 있지만, 게임을 만드는 것은 그 자체가 목적이 아닌 목적을위한 수단입니다 (그리고 OpenGL을 배우는 유일한 방법은 아닙니다) ). 당신은 아마 그것을 공개하지 않을 것입니다, 그리고 당신은 거의 확실히 몇 년 안에 그것을 되돌아보고 당신이 한 어리석은 일들에 의해 끔찍하게 당황하게 될 것입니다.


답변

이 프로젝트에서 무엇을 얻고 싶은가에 달려 있습니다. 주요 목표가 게임 디자인에 초점을 맞추는 것이라면 미리 제작 된 엔진을 사용하는 것이 좋습니다. 그 이유는 게임 제작 부분에 훨씬 더 빨리 도달 할 수 있기 때문입니다. 게임 제작의 프로그래밍 부분에 대해 배우는 것이 목표라면 (특히 업계에서 직업을 준비하려는 경우) OpenGL을 사용하는 것이 더 소중한 경험이 될 것입니다. 위의 내용 중 100 %는 사실이 아님을 명심하십시오.

이런 종류의 일을 결정할 때 실제로 규칙이 없습니다. 이런 종류의 질문에서 당신이 듣는 대부분의 의견은 의견이며, 그들 중 자신의 프로젝트 및 기술과 완전히 관련이있는 사람은 거의 없습니다.


답변

차이점은 간단합니다. Unity는 4 개의 둥근 바퀴가 달린 캐리지로 장소를 제공합니다. OpenGL은 상점을 설립하고 개선되고보다 현대적인 캐리지와 휠을 성형 할 수있는 톱밥입니다. 그것은 사람들이 먼저했던 일을 배우기 위해 많은 시간을 투자하는 경우입니다.

초보자로서의 목표는 기존 캐리지와 그 디자인을 먼저 연구하는 것입니다. 창 밖으로 모든 것을 버리고 처음부터 시작하는 것은 중요하지 않습니다. 먼저 이미 존재 하는 것을 배우고 철저한 지식을 얻으십시오. 그렇지 않은 경우 제한 사항을 어떻게 알 수 있으며 제한을 모르는 경우 어떻게 제한을 극복 할 수 있습니까? 쓸모없고 이미 사용 가능한 모든 활기찬 기존 도구에 무해한 평범한 것을 만드는 요점은 무엇입니까?

신생 게임 개발자의 단계는 다음과 같습니다.

  1. 현대적인 프레임 워크 / 엔진을 익히고 그것에 대한 깊은 이해를 얻으십시오 (게임 디자인, 그래픽 및 OpenGL의 다양한 측면을 모두 배우는 데 도움이 될 것입니다).
  2. 그것으로 작은 게임을 만들고 그 과정에서 더 많은 것을 배우십시오.
  3. 엔진에는 유기적으로 장애물과 한계가 있습니다.
  4. 주제에 대해 자세히 알아보십시오.
  5. 개선이 필요한 영역을 개선하기 위해 노력하십시오.

이미 만들어진 것을 만들기 위해 혼자서 일하는 것은 당신이 진실로 생산적이지 못하거나 그 문제에 대한 좋은 학습자가 아니기 때문에 누군가에게 소중한 개발자가 될 수는 없습니다. 읽고 이해하십시오. 오래된 포켓몬이 말한 것처럼 “매우 효과적이지 않다 …”.

최악의 부분은 이런 종류의 접근 방식은 만족스럽지 않기 때문에 다루기가 쉽지 않다는 것입니다. 당신은 매일 만족을주는 무언가를해야합니다. 그렇지 않으면 당신의 의지는 그것을 유지할 수 없을 것입니다.

요약하자면, 엔진으로 작업을 수행 할 수 있고 그런 식으로 성공할 가능성이 훨씬 높기 때문에 엔진이 강조됩니다. 훌륭한 게임 제작자조차도 다른 사람의 이전 작업에 의존했으며 그와 같은 것은 진보의 본질입니다. 자신 만의 맞춤형 레고 조각을 만들기 전에 큰 그림을 이해하고 다른 사람이 제공 한 레고 조각을 가지고 노는 방법을 알아야합니다.


답변

당신의 목표를 가정하면 게임을 만드는 것입니다,하고 사용자 정의 엔진에 대해 이야기 남자 요구는 잘못됐다. 복잡한 게임을 위해서는 오랜 기간 동안 또는 그 품질에 맞는 (적어도 주어진 게임의 목적을 위해) 업계에 종사 한 전문가가 설계, 구현, 최적화, 테스트를 거쳐 유지 관리되는 성숙한 엔진이 필요합니다. 가능하다면.

대규모 게임 개발자는 사내 엔진을 구축하지만 향후 게임에 여전히 많이 재사용합니다. 그러나 예산과 팀 규모 및 기타 많은 요소가 독립 개발자와는 크게 다르다는 점을 명심하십시오. 기존 엔진이 기술적으로 부족하지 않더라도 자체 엔진을 구축하는 것이 훨씬 더 비즈니스 적 의미가있을 수 있습니다.

물론 기존 엔진에는 많은 기능이 기본적으로 존재하지 않으므로 해당 엔진에서 전혀 구현할 수 없지만 일반적으로 부정확하기 때문에 오해가 여전히 있습니다.

Portal 및 Antichamber와 같은 가장 혁신적인 최신 게임 중 일부는 기존 엔진을 사용하여 제작되었습니다. Aion 및 TERA와 같은 다소 복잡한 온라인 게임은 기존 엔진을 사용하여 제작되었습니다. Bioshock Infinite 및 Thief와 같이 시각적으로 아름다운 게임 중 일부는 기존 엔진을 사용하여 제작되었습니다. 물론 일부는 그렇지 않았습니다. 그러나 요점은 : 내가 본 것 중 실제로 는 맞춤형 엔진 이 필요 하지 않은 것입니다 .

반면에 그래픽 프로그래밍의 개념을 배우는 것이 목표라면 OpenGL을 사용하는 것이 좋습니다. 그럼에도 불구하고 기존 엔진 몇 가지에 익숙해지면 자신이하는 일과 목표를 이해하는 데 큰 도움이됩니다.