본문 바로가기
Engineer/물리엔진

물리엔진 개발 로드맵(Harrold Serrano)

by _제이빈_ 2022. 3. 27.

Harrold Serrano 는 Untold Engine이라는 인디 게임엔진을 개발하였다. 

그가 물리엔진을 개발하는 방법에 대해 공유하고 있어 이를 번역하려 한다.

 

 

어떻게 게임엔진 개발자가 되는가?

 

Step 1: 선형대수학을 배우자!

선형대수학을 먼저 배우자. 벡터나 행렬 계산을 자유롭게 할 수 있도록 익혀두자. 예를들면 내적, 외적, 회전행렬이 있다. 

Step 2: 프로그래밍 언어를 배우자 (C++)

다음으로는 프로그래밍을 할 수 있어야 한다. 일단 추천하는 언어는 C++이다.  전문가가 될 필요는 없으나, 꼭 알아야할 개념이 있다: classes, methods, inheritance, polymorphism and encapsulation.

Step 3: 이제 수학 엔진을 만들자

이전에 익힌 벡터와 행렬연산을 기초로해서 수학엔진을 만들어보자. 게임엔진에서 계----속 사용될 내적, 외적, 그리고 회전행렬을 만들자

Step 4: 컴퓨터 그래픽에 대해 배우자

이제 재밌는 파트에 들어섰다. 컴퓨터 그래픽에 대해 익숙해 지도록하자. 특히 렌더링 파이프라인과 셰이더에 대해서 알아보자. 일단 지금단계에서는 직접 코드를 치기보다는 개념을 익히도록하자. 바로 OpenGL등을 사용하면 오히려 햇갈리고 한정된 지식만 알게 된다.

Step 5: OpenGL을 배워보자 그리고 여러 프로젝트도 진행해보자.

컴퓨터 그래픽 개념에 익숙해지면, OpenGL의 API 와 Shader를 배우자.  최대한 많은 프로젝트를 진행하여라. 캐릭터를 랜더하는 방법, 캐릭터를 회전시키는 방법, 질감이나 빛을 어떻게 다루는지 익혀라. 재밋는 부분이니, 최대한 많은 프로젝트를 해보아라!

Step 6: 디자인 패턴을 배워라

이제 진짜 개발자가 되기 위해 API에 쓰이는 디자인 패턴들을 배워보자. 게임은 간단하게 말하면 API이고, 프래임워크이다. 랜더링과 물리계산, 수학계산을 하는 API이자 프레임 워크이다. API를 모듈화하고 유연하고 지속가능하고 적용성 높게 개발하도록 도와줄 것이다.특히 Singleton, Observer, Strategy, Composite, Factory를 배우자

Step 7: 랜더링 엔진을 개발하자

이제 선형대수, 컴퓨터 그래픽, 그리고 OpenGL에 대해 어느정도 익혔으니 랜더링 엔진을 개발해보자.

Step 8: 뉴턴의 운동법칙을 익히자

랜더링 엔진을 개발했다면 이제 가장 어려운 파트인 물리엔진을 개발하러 가보자. 물리학자 정도까지는 필요 없고, 운동법칙을 알면 된다. 그리고 Runge Kutta와 같은 몇가지 개념들도 익혀보자

Step 9: 기하학 계산 알고리즘을 익히자

물체간의 충돌을 감지하는 기능 없이는 게임엔진이라 할 수 없다. 이를 위해서는 기하 계산 알고리즘들을 익혀야한다. GJK, BVH, and Sutherland-Hodgman 등이 있다. 어디서 충돌이 일어나는지 감지하는 알고리즘이다.

Step 10: 물리엔진을 개발하자

위 알고리즘들을 모두 익혔다면, 이제 물리엔진을 개발할 준비가 다 되었다.

Step 11: 물리엔진을 활용해 게임을 개발하자.

이제 게임엔진을 갖게 되었따! 이제 게임을 개발하며 디버깅을 하고 새로운 기능을 추가해보아라! 

 

도움이 되는 책들

3D Math

  1. 3D Math Primer For Graphics and Game Development

Rendering Engine

  1. OpenGL Superbible: Comprehensive Tutorial and Reference
  2. Graphics Shaders: Theory and Practice, Second Edition

Physics Engine

  1. Physics for Game Developers: Science, math, and code for realistic effects
  2. Game Physics Engine Development: How to Build a Robust Commercial-Grade Physics Engine for your Game
  3. Real-Time Collision Detection

 

반응형

댓글