게임 개발, 그 중에서 3D 게임 개발에 필요한 기초 수학으로는
벡터, 행렬, 삼각함수등을 뽑을 수 있다.
렌더링쪽이라면 훨씬 더 많이, 깊이 알아야 하지만,
일반적인 게임 로직을 작성할 때는 저 세 가지 개념이 주로 쓰인다.
캐릭터의 방향을 조정하거나, 투사체를 날리거나 하는 처리가 대부분이기 때문이다.
벡터는 크기와 방향으로 이루어졌다는 것이 가장 큰 특징인데,
처음에는 이 개념을 이해하기가 조금 난해하다.
왜냐하면 우리가 접하는 수는 대부분 하나의 값만 갖고 있는 경우가 많으니까.
일반적으로 1이면 1이지 1과 2를 둘 다 갖고 있지는 않는다.
하지만 벡터는 크기(또는 길이)와 방향이라는 두 가지 개념을 동시에 갖고 있다.
크기는 1,2,3처럼 숫자로 되어 있고,
방향은 오른쪽, 왼쪽 처럼 방향을 가리킨다.
2차원 벡터 (1,0) 이라고 한다면 크기는 1, 방향은 +x축인 오른쪽이 된다.
행렬 역시 여러가지 숫자를 동시에 갖고 있는 개념이다.
프로그래밍을 해봤다면 배열을 생각하면 쉽다.
3D 게임 프로그래밍에서는 주로 버텍스 좌표를 다른 공간으로 이동할때 사용한다.
3차원 좌표에 있는 벡터를 2차원의 모니터에 표현하려면 공간 변환이 필요하다.
이 때 벡터와 행렬을 곱해서 새로운 공간으로 변환된 좌표를 쉽게 얻을 수 있다.
벡터와 행렬의 곱셈을 처음 접하면 복잡하게 느낄 수도 있는데 사실 하나하나 뜯어보면 단순히 숫자와 숫자의 곱셈일 뿐이다.
삼각함수는 흔히 알고 있는 싸인, 코싸인, 탄젠트와 관련이 있다.
우리 일상의 많은 부분을 삼각형으로 나타낼 수 있고, 그 중에서 직각 삼각형으로 표현이 가능한 것은 삼각함수를 써먹을 수 있다.
건물의 높이, 대각선의 길이등등을 구할 때 쓰기도 한다.
포물선 모양, 특정 지점을 왔다갔다하는 등의 움직임에도 삼각함수가 많이 쓰인다.
물론 뭐든 그냥 if문으로 짜도 되지만 다른 소스코드를 보거나
간단히 수식으로 표현하고 싶다면 이런 수학 함수를 알아두는게 편하다.
이렇게 세 가지 기본적인 수학 개념을 장착해 놓으면 3D 관련 코딩할 때 도움이 많이 된다.
엔진 함수를 쓸 때도 이걸 알고 쓰는 것과 모르고 쓰는 것에는 차이가 있다.
AI로 그때 그때 찾아보는것도 꽤 피곤한 일이고,
잘못 알려주는 경우도 있기에 기본적인 부분은 배워놓고 물어보는 것이 좋다.
무엇보다 AI는 물어볼때 마다 답이 약간씩 미묘하게 달라져서 학습의 흐름이 끊기는 느낌이 많이 든다.
이럴때는 잘 정리된 책이나 문서로 기초를 다져 놓는게 필요하다.
작년에 출판한 책 "기초부터 배운다! 3D 게임 프로그래밍"에는 저 세 가지 개념의 아주 기초적인 내용들이 담겨있다.
수학 파트만 따로 떼어 놓으면 꼭 게임 개발을 목표로 하지 않아도,
교양 상식으로 배워놔도 좋을만큼 쉽게 썼다.
종이책과 전자책(PDF) 모두 만들어 놨고,
게임 개발을 처음 하는 사람들 또는 게임 수학의 기초를 심플하게 부담없이 배우고 싶은 사람들에게 추천한다.
누군가에게 수학을 가르칠 때, 쉽게 이해시키려고 일부러 억지스러운 비유를 드는 경우도 있는데,
최대한 그런 부분은 넣지 않고 담담하면서도 이해하기 쉽게 쓰려고 노력했다.
기초부터 배운다! 3D 게임 프로그래밍 | 이석현
C++과 OpenGL로 3D 렌더링의 원리를 직접 구현하며 배우는 입문서다. 폴리곤 출력, 게임 수학, 셰이더, 스플라인 기법을 익히며 그래픽스의 핵심 구조를 이해한다. 엔진 내부 원리를 알면 유니티나
www.aladin.co.kr
출판사 공식 카페 : https://cafe.naver.com/3dgamebook
기초부터 배운다! 3D 게임 프로그래밍 : 네이버 카페
"기초부터 배운다! 3D 게임 프로그래밍" 책 공식 카페입니다.
cafe.naver.com
'게임개발 > 게임개발 팁' 카테고리의 다른 글
| "거지vs거지" - 거지가 동전 줍는 게임 (0) | 2026.04.20 |
|---|---|
| 2026 인디크래프트 (0) | 2026.04.13 |
| 2026.3월에 진행중인 게임제작 지원사업 (0) | 2026.03.13 |
| AI코딩의 숨겨진 비용 (0) | 2026.03.02 |
| 2026 코리아 인디게임 데브캠프 (0) | 2026.02.23 |