단순히 출퇴근용으로만 자동차를 운전한다면 엔진 원리 등 내부 구조는 몰라도 큰 상관이 없다. 요즘은 무인자동차가 개발되는 추세로 기술이 발달할수록 자동차를 운전하기 위한 필요 지식은 적어지고 있다. 하지만 레이싱카를 모는 프로 카레이서라면 엔진 원리와 자동차 내부 구조를 완벽하게 알아야 하고 경기 트랙 구조도 이해해야 한다. 그래야지 프로로써 생존할 수 있다.
프로그래밍과 게임 개발도 이와 같다. 단순히 취미로 정말 기본적인 기능만 구현한다면 프로그래밍의 기반이 되는 수학을 몰라도 큰 상관이 없다. 또한 게임엔진의 발달로 개발이 더욱 쉬워져 중학생들도 취미로 게임을 만드는 시대가 왔다. 하지만 프로개발자로써 경쟁자보다 더 효율적인 개발, 최적화된 성능을 위해서라면 수학을 제대로 알아야 한다. 수학을 알아야 개발 과정에서 어려움에 직면했을 때 유연하게 대처할 수 있고, 엔진을 더 깊게 이해해 엔진의 기능을 폭넓게 응용할 수 있다.
프로그래밍을 하는데 수학적 지식이 꼭 필요하지는 않다. 하지만 특정 분야에 도전하거나, '정교함'이나 '최적화'를 원한다면 수학이 필요한 순간이 오게 된다. 프로그래머들에게 '수학이 꼭 필요하나요?'라는 질문을 하게 되면 많이들 '어느 순간 수학 때문에 막히는 순간이 오게 된다'라고 말한다.
실제 개발자들에게 '개발과 수학의 관계'를 물으면, 수학을 꼭 잘할 필요는 없지만 수학적 논리력은 꼭 필요하다는 대답이 정말 많이 나온다. (수학을 잘할 필요는 없다의 의미가 '대학원생수준'으로 잘할 필요는 없다 라는 의미인 경우들도 있지만..) 하지만, 특정 분야(인공지능, 셰이더 등)를 개발하거나 논문을 이해하기 위해서는 수학을 어느정도 알아야 한다. '프로'개발자가 되기 위해서는 일정 수준 이상의 수학공부가 필요하다.
'유니티'를 사용하고 있으며, 어떤 수학 공부를 해야할지 모르는 사람에게 추천하는 책이 있다. 대놓고 유니티 사용자들을 대상으로 한 '유니티로 배우는 게임 수학, 구부키 류이치'이다. 게임개발이 그렇듯, 말이 게임 개발이지 3D를 응용한 모든 분야 개발에 적용이 가능한 수학 내용들이 담겨져 있다. 3D 환경에서 가장 핵심이 되는 행렬, 백터, 삼각함수는 물론이고, 사원수와 이원수, 곡선에 대한 설명도 담겨 있다.
무엇보다 '개발자'를 위한 수학으로써, 개발 환경에서 왜 이러한 수식을 사용하는지 알려주고, 어떠한 수식이 연산이 가볍고 무거운지 알려줌으로써 당장 코드 최적화에 응용할 수 있다는 것이 장점이다. 또한 이러한 수식으로 만들어진 예제를 확인함으로 수학적 이해를 더 빠르고 깊게 할 수 있다.
이 책이 설명이 부족하다는 평가가 많다. '이거 볼 빠에 그냥 고등학교 수학책 사서 공부하겠음' 이라고 말하는 사람들도 있지만, 나는 그런 말도 이 책을 봤기 때문에 할 수 있는 말이라고 생각된다. 수학의 정석이나 그 어느 고등학교 수학 서적도 수학공식들을 이용하여 프로그래밍하고, 게임제작 전반에 필요한 수학을 알려주는 서적은 없다. 이 책에서 수학적인 지식에 대해 알려주는 내용은 부실하다고 볼 수도 있으나, 이 책으로 나에게 어떤 수학적 지식이 필요한지 체감하고 앞으로 공부할 것들을 설계하는 로드맵으로 사용하면 큰 발전이 있을 것이다.
이 책을 읽어야하는 사람
- 유니티나 언리얼, cocos 2d같은 엔진의 중수가 되고싶은 사람
- 셰이더를 제대로 만져보고 싶은 사람
- 수학적 지식에 관심이 있고, 이를 개발에 어떻게 활용하는지 궁금한 사람
- 시각적으로 수학을 이해하고 싶은 사람
- 조금이라도 더 효율적인 개발을 하고싶은 사람
책에 수록된 예제들이 저장된 깃허브
관련 추천 도서
- 최신선형대수, Howard Anton
- 인공지능을 위한 수학. 이시카와 아키히코
- 24가지 예제로 배우는 게임 수학&물리 입문, 가토 키요시
- 게임 프로그래밍, 물리로 생각하라, 다니지리 도요히사
- 이야기로 아주 쉽게 배우는 대수학, 더글라스 다우닝
'서평 > 코딩, 개발' 카테고리의 다른 글
게임을 움직이는 수학과 물리 서평 (0) | 2020.09.25 |
---|---|
누워서 읽는 알고리즘 서평 (0) | 2020.09.25 |
성공으로 이끄는 팀 개발 실천 기술 (0) | 2020.09.25 |
읽기 좋은 코드가 좋은 코드다 (0) | 2020.09.25 |
우리는 인공지능의 시대에 살고있다. (0) | 2020.09.19 |