게임 엔진을 개발하기 위해 프로그래머가 알아야 할 특정 수학, 물리, AI 및 일반 개념은 무엇입니까? [닫은]


9

웹 및 DB 중심 응용 프로그램의 프로그래머이기 때문에 목록, 트리, 그래프 등과 같은 데이터 구조에 대한 지식이 있습니다. 나는 평범한 배열로 정렬하는 것을 제외하고는 코딩에서 이러한 데이터 구조 알고리즘을 거의 사용하지 않습니다. 모든 핵심 기능이 기본 제공되는 클라이언트 지향 프레임 워크와 거의 전적으로 협력했습니다. C, PHP, Java, HTML, PL / SQL 및 MySQL을 알고 있습니다. 나는 현재 파이썬을 배우고 있습니다.

게임 개발부터 시작하고 싶습니다. 초보자를위한 게임 개발에 대한 제안, 팁 및 접근 방식에 관한 다른 질문을 보았습니다. 나는이 요점을 이해하고 대답을 명확하게합니다. 게시하고 며칠 후 기사 쓰기 엔진이 아니라 기사를 읽고 게임 엔진을 만들기 전에 게임을 구현해야한다는 것을 깨달았습니다. 여전히 질문이 있습니다.

내 목표는

  • 데이터 구조 알고리즘, 수학 및 물리 개념 사용을 포함하여 핵심 수준의 프로그래밍 기술을 향상시킵니다.
  • 코어 레벨 코딩에 빠져 들기 위해 좋은 게임 엔진을 구현하십시오.
  • 인공 지능 연구 분야로 나아 가기 위해

게임 엔진을 개발하기 위해 프로그래머가 알아야 할 특정 수학, 물리, AI 및 일반 개념은 무엇입니까?

답변:


11

데이터 구조 : 확실히 유효한 질문입니다. 그러나 일부 데이터 구조는 모든 종류의 게임에 유용하지만 (이미 언급 한 것과 같은 Lists, Trees ...) 다른 특정 구조가 있습니다. 예를 들어 Octrees는 3D 프로그래밍에 매우 유용 할 수 있지만 순수한 2D 환경에서는 필요하지 않을 것입니다.

알고리즘 : 동일한 경험 법칙이 적용됩니다. 예를 들어 순수한 2D 환경에서 충돌 감지는 3D와 매우 다르게 작동합니다.

중요한 수학 영역 : 엔진 개발자를위한 가장 중요한 역할을 한 지역은 잘 알고 있어야 선형 대수 및 고급 대수학 항목 (사원 수)입니다. 매우 간단합니다. 선형 대수에 익숙하고 간단한 행렬 곱셈을 넘어 서면 좋은 출발을 할 수 있습니다.

다음은 Engine Dev의 선형 대수와 잘 연결되는 ist Geometry이며, 언급 할 필요는 없습니다.

또한, 기본 미적분학을 제대로 이해하는 것이 결코 아프지 않습니다. 이것은 Physics Engine 또는 고급 음영 주제를 다룰 때 유용합니다.

기타 관심 주제는 조합론, 통계

물리학 : 간단한 게임을하려는 경우 필수는 아닙니다. 아프지 않지만이 경우 고등학교 물리학으로 잘 지낼 수 있습니다.

물리 엔진을 작성하거나 기존 아키텍처를 구현하려는 경우 필수입니다. 그러나 Game-Dev를 위해 특별히 작성된 많은 물리 책이 있습니다. 물리학으로 게임 코딩을 시작하기 전에이 내용을 읽으십시오. 게임에 물리학이 필요한 경우 이러한 엔진은 핵심 아키텍처와 밀접한 관련이 있습니다.

AI : AI가 당신의 주요 관심사라면 전적으로 솔직히 말해서, 전체 엔진을 작성하는 데 신경 쓰지 않을 것입니다. AI는 기존 아키텍처를 가지고있을 때 훨씬 더 재미 있습니다. 엔진을 작성하는 것은 고통스럽고 재미있는 AI 알고리즘을 구현할 수있을 때까지는 꽤 오래 걸릴 것입니다.

어떤 종류의 게임을 개발하고 싶습니까? 이 정보로 이러한 요점에 대해 더 자세히 설명 할 수 있습니다.


정교하게 답변 해 주셔서 감사합니다. 귀하의 질문에 대한 답변으로..이 순간에 나는 내 두뇌에 아무런 생각이 없지만 3D 게임 엔진을 개발하고 싶습니다. 그러나 2D 게임으로 시작하여 환경을 이해하는 것이 좋습니다. 이 모든 것들 전에 게임의 모양과 느낌을 알기 위해 몇 가지 게임을해야합니다 (비디오 게임을 한 적이 없습니다 :-)). 그래서 책 용어와 다른 것들을 이해하기가 쉽습니다. 나는 매우 도움이 아래를 발견
droidsites

미안 내 이전의 코멘트에있는 링크를 놓친 : gamedev.stackexchange.com/questions/8502/...은
droidsites

과거에는 3D 게임을 개발하려면 먼저 2D 게임으로 시작하는 것이 좋습니다. 그러나 XNA와 같은 건축 문제로 인해 3D로 직접 들어가는 것이 더 재미 있다고 생각합니다. C # / XNA를 이미 살펴 보셨습니까? 프로그래밍 배경에서 문제가되지 않아야합니다
Michael Kissner

아니요, 확인하지 않았습니다. 그렇습니다 .C #을 사용하는 것은 문제가되지 않습니다. 그러나 나는 파이썬에 관심이 있습니다 :-)
droidsites

Python에 관심이 있고 게임 제작 기술을 구축하는 대신 게임 제작에 더 관심이 있다면 Panda3D 또는 Blender Game Engine을 확인하십시오.
Sean Middleditch

1

게임 개발에 가장 많이 사용되는 데이터 구조를 묻는 것이 타당 할 수 있지만 특정 문제에 어떤 데이터 구조가 사용되는지 묻는 것이 더 효과적입니다. 해시 테이블은 게임에서 매우 일반적이라는 것을 쉽게 알 수 있지만 자신의 코드에서 해시 테이블을 언제 어디에서 사용하고 사용하지 않아야하는지에 대해서는 유용한 정보가 없습니다. :)

수학의 관점에서 선형 대수 (벡터, 행렬, 선형 시스템 해석 등)를 매우 강하게 파악하고, 삼각법을 매우 강하게 이해하고, 최소한 미적분학 (단순 미분 및 적분)을 이해해야합니다. . 입문 대학 수준의 선형 대수 과정은 일반적인 3D 그래픽 원리로 작업을 시작하기 위해 알아야 할 모든 것에 대해 가르치지 않으면 올바른 길로 안내해야합니다. 또한 도움이 될만한 책을 아래에 연결합니다.

물리학을 위해, 당신은 타고 있습니다. 물리학은 충돌 감지와 충돌 응답의 두 가지 범주로 나눌 수 있습니다. 수학은 그래픽을 수행하는 데 필요한 것 (특히 폐색에 필요한 나무와 맵을 만드는 데 필요한 것)과 다소 동일하므로 충돌 감지의 배후에있는 수학을 반드시 알아야합니다. 많은 게임 로직도 있습니다.

충돌 반응은 "단순"에서 어리석은 수준까지 다양 할 수 있으며, 단순한 것조차도 처음에는 직관적이지 않을 수 있습니다. 기존 수학 및 알고리즘에 익숙하지 않을 때까지는 해당 자료를 Bullet, Havok, PhysX 등과 같은 기존 라이브러리 (또는 2D 게임 플레이를 수행중인 경우 Box2D)에 두는 것이 좋습니다. 물리 엔진의 작동 방식을 배우고 자합니다. 그런 다음 첫 번째 시도로 매우 간단한 2D 물리 엔진을 구축하는 것이 좋습니다. 3D 물리 엔진은 엄청나게 복잡한 짐승이며, 게임 프로그래밍에서 가장 복잡하고 어려운 부분입니다. 물리적 엔진은 게임에서 가장 일반적으로 사용되는 타사 기술입니다. 당신은 단지 많은 게임을 보지 못합니다. 집에서 만든 그래픽 엔진과 코어 엔진 코드를 스크래치하는 게임 수에도 불구하고, 전문 세계에서 Havok 또는 PhysX를 사용하지 않습니다. 게임 엔진을 빌드하는 것 외에는 아무것도하지 않는 회사조차도 일반적으로 물리 엔진 라이센스를 부여합니다. 예를 들어 Unreal은 자체 물리 엔진을 포함하지 않고 PhysX 만 사용합니다.

시작하려면 다음 책을 추천합니다. 첫 번째는 3D 게임 프로그래머로서 알아야 할 기본 수학에 대한 입문 레벨 책입니다.

http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869

두 번째는 충돌 감지 알고리즘 (충돌 응답이 아님)으로 감지 된 책으로, 그래픽 코딩과 물리 코딩 모두에 도움이됩니다.

http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

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