-
프로그래머 워밍업 2프로그래밍 언어 C, C++ 2021. 1. 9. 22:29728x90
지난 번 내용에서 이어간다.
얼마전 인디라에 올라 왔는데, 요즘 온, 오프라인에서 자주 접하는 글 중 하나다.
개발자를 준비하는 사람들이
엔진(유니티, 언리얼, ...),
엔진 사용 언어(유니티C#, 언리얼 C++, ...)
이 2가지를 가장 우선 순위에 둔다.
어쩌면 아주 스마트한 생각이다.
근데 또 어쩌면 쉽게 시작하고, 빨리 포기해 버릴 수도 있겠다는 조심스럽게 걱정이 된다.
당연히 엔진과 언어가 아주 중요한 부분임에는 부정하지는 못하지만,
그게 게임 제작에 있어서 최우선 기준이 되어서는 안된다고 말하고 싶다.
게임을 제작할때면 개발자들의 혼을 갈아 넣을 만큼 많은 노력이 들어간다.
어차피 시작을 하게 되면 오랜시간 갈고 닦는 노력을 해야 할것이니,
무엇을 준비할지 천천히 순서대로 곰곰히 잘 생각 해보고 합리적인 결과를 얻은 다음 시작하기를 바란다.
1. 궁극적으로 만들고 싶은 게임이 무엇인지를 알아야 한다.
본인이 게임을 좋아하지만, 왜 좋아하는지를 모른다?
게임을 좋아하는데는 분명히 이유가 있다. 좋아하게 된 계기가 무엇이었는지, 어떨때 즐겁게 플레이 했던건지, 누구와 플레이 할때 혹은 누군가의 특정한 플레이가 흥미롭게 느꼈는지, 누군가의 해설이 즐거웠는지 등을 곰곰히 생각 해보길 바란다. 그 속에 즐거움을 지배하는 무언가를 발견할 수 있을것이다.
꼭 정확히 알 필요까지는 없다. 게임 장르라도.. 그림체라도... 컨트롤이었을지도...그런 막연하게라도 알아 낼 필요가 있다.
처음 시작하는 것이라면 아무것도 없는 상태다. 한참 애정을 쏟은 다음이야 한게 아까워서 쉽게 포기하지 않지만, 처음엔 동기부여란 놈이 있으면 생각보다 도움이 될것이고, 또한 이 부분이 사실 가장 중요한 것 중 하나라는 것을 경력이 쌓일때마다 느낄것이다.
2. 플랫폼을 결정하자.
개발하고자 하거나 평소 관심이 많이 쏠렸던 플랫폼을 찾아내자. 데스크탑, 콘솔, 모바일, 아케이드 등등.
모두다? 그러지 말고 하나만 결정하자. 어렵다면 1순위와 2순위까지 정하자.
플랫폼 결정이 왜 중요하냐면,
환경적인 요소(해상도, 성능, 컨트롤러 등), 개발적인 요소(OS, 하드웨어 가속영향을 미치는 DirectX, Vulkan, OpenGL, Metal 등), 마켓 요소(MS, Apple, Google, Steam, 에픽 등) 등 제공 SDK에 영향을 받아서 프로그래밍 언어가 달라질테고, 2D, 3D냐, 퍼포먼스 혹은 UI/UX에 유용함에 따라 상용/비상용 엔진 혹은 네이티브 개발이 결정할 수 있다. 그리고 같이 개발할 팀원이 상당히 영향을 미칠 것이다.
개발 기술의 방향을 제시해주는 요소라 왠만하면 특정한 플랫폼을 타겟으로 잡는것이 좋을 것이다.
3. 우선 순위 스펙 쌓기
1) 프로그래밍 언어 (아래 그림은 2020년 10월 프로그래밍 언어 순위다. 게임 프로그래밍 언어 순위가 아니다.)
게임프로그래밍 언어로는 Java, C/C++를 추천하며 가능하다면 C#도 해보길 바란다. 반드시 2개이상의 언어를 해보길 추천한다.
언어 공부는 문법으로 공부하지 말고, 게임을 만들면서 필요한 것들을 즉각 배워가면서 공부하기를 바란다. 책에 나오는 모든 내용 보다는 게임을 만들면서 자주 쓰게 되는 기법들을 연구하면서 언어를 익혀나가길 바란다.
절대 시험공부처럼 언어를 공부하지 마라.
2) 프로그래밍 수학
사실 프로그래밍은 수학은 뗄래야 뗄수 없는 아주 밀접한 관계다.
수학을 잘 하는 사람이 무조건 프로그래밍을 잘 하고,
수포자라서 무조건 프로그래밍을 잘 못한다는 그런 말이 아니며, 약간(?)의 도움이 될 뿐이다.
지금은 잘 못 하더라도 개발을 하면서 몰랐던 부분들을 그때 그때 학습해간다면, 그 간격은 서서히 좁혀질 것이다.
수학도 따지고 보면, 게임에서의 아름다운 표현을 하기 위한 언어에 불과하며,
사실은 그 아름다운 표현을 아느냐 모르느냐가 더 중요하다고 생각한다.(흔히들 센스가 있다 없다라고 표현들 한다)
엄밀하게 말하면, 프로그래밍 수학은 학교에서 배웠던 수학과는 조금(?) 다르게 보는 것이 좋다.
학교에서의 수학은 진학을 목표로, 학생들간 등급을 내기 위해 시험 공부에 가까웠다.
강압적인 분위기 였을테고, 억지로 하다 보니 흥미는 당연히 별로 없고 오히려 거부감이 많이 들었을 것이다.
게다가 제한 시간내에 많은 문제를 풀어야 했고 실수를 하면 점수로 이어지지 않는 상실감도 컷을 것이다.
게임에서의 수학은 직접 계산할 필요가 없으며 명령만 잘 하면 된다. 설령 그 명령이 틀렸더라도 제대로 고치면 된다.
(물론 최적화 작업시에는 퍼포먼스 향상을 위해 연산량을 줄이거나 하는 곳에서 수학적인 부분으로 머리를 싸메야 한다)
캐릭터나 발사체의 이동 및 충돌은 수학 같지 않고 흥미의 연장선처럼 느껴질테고,
광원 같은 화려한 이펙트는 내가 RGBA를 계산한다기 보다 물감을 섞는 기분이 들게 해줄 것이다.
아마 게임을 제작하다 보면, 이미 수학은 게임을 제작하는 도구가 되어 가고 있을 것이다.
따로 시간내서 억지로 수학 공부하려고 하지마라.
그냥 게임을 제작하다가 막힐때, 알고보면 수학적인 부분일 경우 그때 그 부분만 땜빵하듯이 공부하면 충분하다.
그러다 정말 갑자기 공부하고 싶을때, 그 때 해도 늦지 않다.
3) 자료구조, 알고리즘, CS
게임 프로그래밍을 하는데, 그게 자료구조였다둥, 그게 알고리즘이었다는 둥
그런것들이 나중에 아주 뒤늦게 컴퓨터 프로그래밍과 관련된 이론이었다는걸 알도록 준비를 해라.
굳이 특별히 하나의 특정한 과목으로 나누듯이 잘라서 공부하지 마라.
언어도 수학도 마찬가지 처럼 좋아하는 게임 만들면서 부족한 것들을 채워가며 자연스럽게 익혀라.
4) 포트폴리오
혈연, 학연, 지연등은 어차피 자신이 살아온 긴 과정이니 짧은 시간내에 쉽게 못 바꾼다.
하지만, 포트폴리오는 자신이 최근에
무엇을 보았으며,
그것을 위해 무얼 준비하였고,
그걸 표현하는데 얼마나 노력을 많이 했는지,
또한 그걸 달성하기 위해 어떤 각오를 담았는지,
자신을 보여주는 거울과 같은 상징물이다.
포트폴리오는 무조건 혼자하기를 추천한다.
스케일이 너무 클 경우라면 2명까지는 괜찮다. 그 이상의 인원이라면 의미가 없다.
4. 엔진과 언어
이제 고려해보면 된다.
'프로그래밍 언어 C, C++' 카테고리의 다른 글
정의 vs 선언 2 (0) 2021.01.16 정의 vs 선언 1 (0) 2021.01.16 프로그래머 워밍업 1 (0) 2021.01.07 개발자, 무엇을 준비 할까? (0) 2021.01.04 Visual Studio 2019 셋팅 (0) 2021.01.04