Unity 및 기타 도구보다 C / C ++를 선호합니다. 게임 개발자에게는 큰 어려움이 있습니까? [닫은]


35

학교에서 Unity를 사용하는 큰 게임 프로젝트가 있습니다. 우리 중 12 명이 작업 중입니다. 선생님은 학생들이 높은 수준에서 낮은 수준으로 보이게하기 때문에 학생들을 가르치는 데 중요한 도구라고 확신하는 것 같습니다.

나는 그의 견해를 이해할 수 있고 궁금하다 : 게임 개발 회사에서 화합이 중요한 엔진인가? 다른 것을 사용할 여유가 없기 때문에 그것을 사용하는 많은 회사가 있습니까? 그는 Unity가 게임 제작에서 큰 역할을하는 것처럼 말하고 있지만 가능한 한 빨리 게임을하고 싶은 소규모 인디 게임 회사에만 적합하다고 생각합니다.

업계에서 Unity가 그토록 중요하다고 생각하십니까? C ++ 기술의 가치를 위협 하는가?

내가 유니티를 좋아하지 않는다는 것이 아니라, 그것으로 아무것도 배우지 않고 단지 오우거 또는 SFML로 약간의 단계를 달성하는 것을 선호합니다.

또한, 우리는 C ++ 연습 문제를 가지고 있지만 그것들은 단지 이론으로 연습 할뿐입니다.


9
C ++ 및 OOP의 요점은 객체 재사용입니다. Unity는 그와 플랫폼 간 이식성의 주요 예입니다. XBox 또는 iPhone 또는 Wii에서 게임을 시작하는 데 필요한 모든 도구를 제공합니다. C ++로 모든 것을 처음부터 다시 작성하겠다고 진지하게 말하고 있습니까?
Stephen Furlani

2
당연히, 그건 내가 말하고 싶은 것이 아닙니다. 나는 가비지 수집 언어가 마음에 들지 않고 독점적이므로 코드를 변경할 수 없다는 사실을 말하고 있습니다. 기존의 다른 엔진을 조정할 수있는만큼 조정할 수는 없습니다. . 당신의 요점은 유효하지만, 내가 당신을 따르는 경우, 회사는 Unity로 전환하는 대신 이전 엔진을 재사용 할 수도 있습니다. Unity를 사용하면 실제로 변경할 수없는 것을 고수 할 수 있습니다. 이러한 도구를 생각할 때 항상 가장 큰 문제는 다음과 같습니다. 독점 엔진에는 그 문제가 없습니다.
jokoon

2
그럼 당신은 할 수 있습니다 (대부분의 다른 전문 소스 라이센스처럼 비싼) 소스 라이센스를 얻을 가정 화합을 변경합니다. 또한 꽤 자주 업데이트되므로 기능 세트 측면에서 정적이 아닙니다.
Tetrad

이것은 기본적으로 "사용할 기술"질문입니다. 또한 더 많은 토론 / 의견 지향적입니다. 슬프게도 두 번째로 닫히기 위해 투표 할 수 없습니다 ...
bummzack

답변:


34

이러한 맥락에서 유니티는 완벽하게 유효한 솔루션입니다. 12 명으로 구성된 초를 상상해보십시오. 대부분은 여전히 ​​C ++을 배우는 과정에서 C ++을 사용하여 크고 복잡한 게임 응용 프로그램을 작성하고 있습니다. 혼자 디버깅하는 데 걸린 시간 동안 Unity에서 다른 게임 을 작성할 수 있었을 것입니다 .

C ++ 사용 방법을 아는 것은 중요하지 않습니다. 특히 '주류'게임 산업에 참여할 계획이라면 특히 그렇습니다. 그러나이 경우 강사는 정확할 것입니다.이 프로젝트를 게임 설계에 대해 생각하고 재미있는 일을하는 방법에 대한 학습 경험으로 사용하십시오. 이 과정에서 연습을 사용하여 C ++ 기술을 연마하거나 SFML 또는 다른 기본 프레임 워크를 사용하여 작은 게임을 작성하십시오.

모든 것이 끝나면 많은 것을 배우고 아마도 더 나은 프로그래머가 될 것입니다. 다음 프로젝트는 C ++에서 훨씬 더 자신감을 가지고 해결할 수 있습니다.


2
흥미롭게도 순전히 C ++를 가르치고 학생들이 C ++을 배우는 과정에도 불구하고 전체 게임 엔진과 게임을 처음부터 구축 할 것을 기대하는 학교가 있습니다. 물론 실제로 기술을 연습하는 것은 (학기 나 1 학기 프로젝트에 의한 강의 및 소규모 숙제 프로젝트가 아닌) 기술을 배우는 방법이므로 학교에서 최고 수준의 프로그래머를 생산합니다. 매우 빠르게 Unity 또는 다른 엔진과 같은 도구를 선택할 수있는 프로그래머 쉬운 물건은 나중에 문제가되지 않기 때문에 학생들이 어려운 물건을 배우도록 강요하는 것이 좋습니다.
Sean Middleditch

모든 게임 개발이 프로그래밍 인 것은 아니며, Unity를 사용한다고해서 반드시 "어려운 일을 피하는"것은 아닙니다. 그것은 처음부터 구현하는 것과 다른 어려운 것들을 강조합니다. 프로그래밍보다는 디자인을 제공하십시오. 게임이 처음부터 구현 되었다면 훨씬 더 원시적 인 "프로그래머 예술"을 기대할 것이며 캐릭터 나 줄거리는 기대하지 않을 것입니다.
wrosecrans

43

유니티는 업계에서 주로 소기업에서 인기가 높아지고 있습니다. 그러나 훌륭한 교육 환경입니다. 이 도구는 중요한 교육 도구이지만 주류 회사에서는 일반적이지 않습니다. 당신이 그것을 좋아하지 않는 것은 괜찮습니다.

프로그래밍 학생들 사이에서 종종 혼란스러워하는 것을 보았을 때 여기서 주목할 점이 있습니다. "C ++ 기술"은 장기적으로 유용하지 않습니다. 당신이 찾아야 할 것은 "프로그래밍 기술"과 "디자인 기술"입니다. 프로그래밍 언어 개념과 소프트웨어 시스템의 구성 방식을 이해하면 언어는 실제로 중요하지 않습니다. 나는 훌륭한 개발자라고 생각하지 않지만 기본을 이해하기 때문에 새로운 언어를 선택하고 하루나 이틀 만에 유용한 코드를 만들 수 있습니다.

Unity를 배우면 C ++을 더 잘 활용할 수 있습니다.


Gameforge와 BigPoint는 세계 최고의 회사이며 Unity를 사용합니다 :)
daemonfire300

1
좋은 답변으로 +1 학습 엔진은 99 %의 시간을 처음부터 만들지 않기 때문에 학교에서 매우 중요한 일입니다. 기존 엔진으로 뛰어 들어 엔진의 일부를 인식하고 데이터 흐름을 파악하면 이러한 모든 것이 매우 중요합니다. 위에서 언급했듯이 언어는 C / C ++ 99 %의 시간에도 불구하고 중요하지 않지만 엔진 또는 더 일반적으로 다른 사람의 코드를 이해할 수있는 것은 모든 프로그래밍 분야에서 매우 귀중한 기술입니다. 특히 비디오 게임 인 시간 결정적인 고 스트레스 단어 :)
James

1
나는이 대답에 동의하지 않습니다. 저에게는 스크립터와 프로그래머 사이에 차이점이 있습니다. 유니티의 개발자는 프로그래머이고, 유니티의 사용자는 스크립터입니다. 결과는 동일하지만 게임을 만들지 만 장기적으로는 Unity를 사용하는 것이 문제가 될 수 있습니다. 게임 산업은 풍부하고 이제는 Unity와 같은 도구를 사용할 수 있지만 나에게는 컴퓨터가 더 빠르기 때문입니다. 많은 코드를 던질 수 있습니다. 유니티는 개발 속도, 달러로 인해 시장이 좋아하는 것입니다.
jokoon

14
jokoon : 스크립팅과 프로그래밍의 차이점은 무엇입니까? Unity의 고급 사용자는 셰이더를 작성하고 렌더 순서를 관리하며 AI 코드를 작성합니다. 유니티 "스크립트"는 컴파일되며 원하는 경우 솔직히 여신 저수준 코딩으로 확장 할 수 있습니다. 좋은 유니티 코딩은 유니티가 아닌 좋은 코딩과 같은 원리를 따릅니다. 두 패러다임 사이에는 마법의 차이가 없습니다.
Gregory Avery-Weir

9

다른 것을 사용할 여유가 없기 때문에 그것을 사용하는 많은 회사가 있습니까?

그렇습니다. 그러나 "afford"는 단순히 달러 가치를 높이는 것 이상입니다.

예, Unity Pro가 청구하는 비용으로 제공하는 기능 세트는 특히 타이틀 당 라이센스 대신 라이센스 라이센스라는 사실을 고려하면 우스꽝 스럽습니다.

그러나 그 외에도 사용하기 매우 쉬운 도구입니다. 예술가와 디자이너에게 미술 파이프 라인 사용법을 배우는 데 많은 시간을 소비하지 않습니다 . "텍스처와 모델을 드래그하기 만하면됩니다.

게다가, 그것은 어떤 종류의 규칙 성을 가지고 브라우저에서 실제로 3D를 할 수있게 해주는 매우 적은 도구 중 하나입니다. 고정 기능에서 DX9 + 및 Mac 및 Windows에 이르기까지 거의 모든 쉐이더 플랫폼을 지원합니다. 성장하는 "브라우저 기반 게임"시장을 목표로 삼고 싶다면 이 기술만으로도 귀중한 가치 가 있습니다.

프로그래밍 측면에서 Unity에서 얻는 것은 구성 요소 디자인 (일반적으로 상속 측면에서 너무 무거운 자체 C ++ 엔진을 롤링하는 것과 비교할 때)과 매우 빠르고 시각적 인 환경을 시도하는 것입니다. 게임 코드. 앞으로 C ++ 엔진으로 넘어갈 수있는 Unity를 사용하여 좋은 디자인 방법을 배우십시오.

물론, 한 언어를 다른 언어보다 선호하는 것이 좋습니다. 개인적으로 저는 C ++보다 C #을 선호합니다. 그러나 어떤 언어를 사용 하느냐는 프로젝트 요구 사항에 따라 다른 어떤 것보다 더 중요합니다. 어떤 이유로 든 도구 나 언어가 마음에 들지 않기 때문에 개발자는 시장에서 빠져 나가고 싶지 않기 때문에 팬보이가 될 여유가 없습니다.

게다가, 일단 당신이 제 2의 언어를 배우면 당신은 그것이 단지 새로운 구문과 패러다임을 선택하고 있다는 것을 알 수 있으며, 일반적으로 툴 벨트에 새로운 툴을 추가하는 것은 그리 어렵지 않습니다. 그렇습니다. C ++을 배우고 이해해야하지만, 높은 수준에서는 먼저 좋은 디자인을 이해해야합니다.


설명 : Unity Pro의 라이센스가 일반 Unity와 비교하여 가치가 있다는 것을 의미합니까? 당신의 의견은 저에게 조금 불분명했습니다.
Kyle C

7
나는 무료 라이센스를 사용하지 않았습니다. 단지 $ 1500 / seat 라이센스는 다른 상용 엔진 라이센스에 비해 더 저렴합니다.
Tetrad

현재 무료 버전을 사용하는 데 아무런 문제가 없으며 사소한 제한이 있습니다.
XandruCea

9

내가 볼 수있는 핵심 문제는 C ++ 또는 Unity3D가 아니라 상위 레벨 솔루션 또는 하위 레벨 솔루션이 필요하다는 것 입니다.

저수준 솔루션은 입력 처리, 메모리 관리 또는 모델로드 프로세스로 인해 더러워지는 솔루션입니다. 높은 수준의 솔루션은 Unity3D와 같은 하나의 깔끔한 패키지를 얻는 것입니다.

나에게 Unity3D (또는 다른 게임 엔진) 또는 C ++ 사용 여부는 게임 및 프로젝트의 목표에 달려 있습니다.

  • 개발 시간이 빠르거나 게임이 성능 집약적이지 않거나 그래픽 / 계산 성능이 최고가 아닌 경우 Unity3D를 사용하십시오. 게임 플레이에 집중하고 Unity3D가 제공하는 기본 도구가 괜찮다면 Unity3D 사용을 고려할 수 있습니다

  • 다른 라이브러리와의 C ++, 개발 시간이 더 길면 게임에 더 많은 계산 / 그래픽 성능이 필요하거나 Unity3D가 통합 할 수없는 일부 기술을 사용합니다.

Unity3D의 장점은 실제 개발 (C # 또는 JavaScript)을 반영하는 스크립팅 언어를 여전히 사용한다는 것입니다. 학습 한 OOP 및 소프트웨어 엔지니어링 개념 (싱글 론, 파사드, 상태 머신, 데코레이터, 컴포지션)을 Unity3D에 적용 할 수 있습니다. 리소스 관리, 장면 그래프, 모델 로딩, 렌더링, 장면 저장 등과 같은 쿠키 커터 프로세스를 관리하는 데 도움이됩니다. Unity3D가 제공하지 않는 기능이 필요한 경우 더 잘 수행 할 수 있습니다. DLL 코딩.

어디에서 C ++를 떠나나요? C ++는 언어이며 Unity3D, sans 메모리 관리 또는 템플릿에서 수행 할 수있는 C ++에서 수행하는 많은 프로그래밍 개념이 있습니다 (Unity 3.2를 사용하면 언어 사양이 클로저를 포함하도록 향상되었습니다).

내가 말했듯이 실제로 C ++ 대 Unity3D는 아닙니다. Unity3D에 비해 "C ++ plus 라이브러리 / SDK 또는 자체 엔진 롤"에 가깝습니다. 그것은 당신의 목표와 목표에 달려 있습니다. 렌더링 파이프 라인 또는 입력을 제어해야하는 고급 게임 또는 게임의 경우 C ++과 엔진을 사용하여 문제를 해결할 수 있습니다. 그렇지 않다면 Unity3D를 3D 게임의 기본 선택으로 사용합니다.

그러나 Unity3d에 대한 지식은 경험이 많지 않지만 게임 개발의 전체 프로세스를 배우기 시작하기에 좋은 곳입니다. 예를 들어, 렌더러를 작성하고 모델을 OpenGL에로드하고 기본 장면 그래프와 입력을 공부하려면 학기 동안 공부해야 할 것입니다. 하루 안에 단 3 분 안에 Unity3D에서 작업 할 수 있습니다.


또는 Ogre3d와 함께 작업하십시오!
jokoon February

Ogre3D를 사용한 마지막 작업은 오래 전입니다. 게임을 시작하려면 Unity3D보다 더 많은 작업이 필요하다고 생각하며, 실제 상황이 어떻게 작동하는지 엿볼 수있는 좋은 방법입니다.
Extrakun

이것에 +1. C / C ++와 Unity 자체는 사과와 오렌지이기 때문에 선호 할 수 없습니다. 그래도 C / C ++에서 제공하는 더 낮은 수준의 개발 또는 Unit에서 허용하는 더 높은 수준의 개발 작업을 수행 할 수 있습니다.
팀 홀트

8

아니요, Unity3D는 C ++ 기술을 위험에 빠뜨리지 않습니다. 사실, C ++를 아는 것이 게임 프로그래머에게는 더 중요합니다.

Unity3D는 게임 개발을위한 훌륭한 도구입니다. 나는 그것을 정말로 좋아하고, 거의 모든 게임, 특히 소규모 팀에게 추천합니다. 그러나 Unity3D 자체는 C ++로 작성되었습니다. 그리고 어떻게 작동하는지 이해하려면 C ++ (및 다른 저수준 항목)을 알아야합니다.

Unity3D를 사용하더라도 C ++ 기술과 관련된 원칙과 알고리즘에 대한 저수준 이해만으로이를 최대한 활용할 수 있습니다. 이것은 다른 게임 엔진에도 적용됩니다.

그리고 정말 좋은 일을하고, 선택한 플랫폼에서 모든 마지막 성능을 짜내고, 가능한 많은 최첨단 효과와 알고리즘을 사용하려면 C / C ++ 이외의 다른 것을 사용할 수 없습니다. 아마도 어셈블러 비트가있을 것입니다.


이것은 내가 +1하기를 기다리는 대답이다 :]
Notabene

3

내가 알 수있는 한, 그것은 대상 플랫폼에 달려 있으며 AAA 게임 및 콘솔 (XBOX, Wii 등) 게임은 일반적으로 최대 성능을 얻기 위해 C ++로 제공되지만 브라우저 기반 게임을 작성하는 경우 Unity도 자주 익숙한.

그러나 귀하의 질문에 관해서는 Unity와 같은 도구를 사용하는 것이 단순히 표준화 된 프레임 워크를 제공한다고 생각합니다. 반 년의 프로젝트에서 절반의 구운 프로토 타입과 예쁜 게임의 차이를 만들 수 있습니다.


3

저는 펜실베이니아 대학의 컴퓨터 그래픽 및 게임 기술 석사 프로그램에갔습니다. 여기서 C ++, OpenGL, CUDA 등의 프로젝트를 통해 모든 프로젝트를 가장 낮은 수준으로 수행했습니다. 프로젝트에는 물리 기반 애니메이션, 건축 캐릭터 애니메이션 및 다양한 형태의 베 지어 곡선을 나타내는 IK ... 프로그래밍, 선형 대수 및 미적분학의 전문 지식을 활용하는 기준선입니다.

그런 다음 Unity를 다운로드하고 엉덩이를 만들어 작업하는 모든 것이 누구나 사용할 수있는이 무료 제품군에 포함되어 있음을 알았습니다.

나는 그것에 의해 화가 되었습니까? 조금은 인정하지만 학교에서 이해하는 것이 Unity와 같은 도구를 사용할 때 훨씬 더 위험하다는 것을 알았습니다. 저는 현재 게임에서 일하고 있습니다. 여기서 우리는 1 년 이내에 개념에서 시장으로 게임을 가져옵니다. 그리고 여전히 "수학적인 것"에 관해서는 여전히 사람입니다. 당신에게 나의 충고는 동의를 통해 이루어집니다; 업계에 진출하면 귀중한 가치가 있습니다.


(이론적으로) 배지를 얻을 수 있습니다. :)
Cyclops

포럼 에서처럼 질문이 오래되고 "사라지지"않기 때문에 여기서는 괴로움이 없습니다. :) 늦은 답변은 항상 괜찮습니다.
doppelgreener

0

답장에 늦었을 수도 있지만 이것은 혼란을 겪는 사람들 중 일부에게 도움이 될 것입니다.

처음에 저는 C ++ 프로그래머입니다. 저는 제 3 자 엔진 (예 : 화합)을 사용하는 것을 싫어했습니다. 저수준 프로그래밍 측면에서 많은 학습 과정이 필요하다고 생각하지 않습니다.

화합을 시도한 후, 나는 게임 개발자에게 필요한 다음과 같은 것들을 보았습니다. 여기서 나는 화합을 위해 구체적으로 나열하지 않고 높은 수준의 관점에서가는 장점을 나열합니다.

  1. 낮은 수준의 최적화를 고민하는 것보다 높은 수준의 디자인 방법을 이해하는 것이 중요합니다.
  2. 엔터티 아키텍처 시스템 (구성 요소 기반 아키텍처)이있는 엔진은이 아키텍처가 얼마나 도움이되는지 학습하는 데 도움이됩니다.
  3. 최신 기술 (최소한 용어로)을 알고 그래픽과 관련하여 업계에서 최신 정보를 얻을 수 있습니다. 이것이 제가 통일을 시도하는 주요 이유입니다!
  4. 다른 리소스 임포터 도구에 소요되는 시간을 건너 뜁니다 (물론 자유 시간에 더 재미있을 것이므로 C ++로 내 3D 임포터를 작성하는 것을 좋아합니다)

위는 고수준 엔진을 선택하는 몇 가지 이유입니다. 그러나 동시에 완벽한 게임 개발자를위한 가장 필요하고 유용한 언어로 C ++ 학습을 중단해서는 안됩니다.

먼저 높은 수준의 시각화를 이해하고 Unity로 빠른 프로토 타입을 만들고 그 경험을 사용하여 C ++로 좋은 게임을 디자인하십시오.

곧 나는 더 높은 수준에서 unity와 함께 좋은 경험을 얻었으므로 c ++로 돌아갈 것입니다 :)

행운을 빕니다!


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