게임 프로그래머의 만담, 게임코디 2nd
0 투표
3.3k views 만담 (6p) , 3.3k views
내년 29살, 공부 자금은 어느정도 모아두었습니다. 매일 공부할 시간도 확보해 두었습니다. WinAPI를 이용한 게임을 하나 완성해본 정도의 실력입니다. C C++는 초급정도 되는거같습니다.

1. 인프런의 루키스님 리누얼되는 "dx12와 게임수학"을 듣고 winapi + dx12 포폴을 제작한 뒤에 어소트락 오프라인 학원에서 언리얼 수강. -> 29살 말경에 취업도전가능.

 

2. 그냥 오프라인 학원가서 8개월간 dx11 듣고 다시 5개월간 언리얼 듣거나 바로 츼업하거나. -> 30 중후반

 

1안과 2안중에 추천하시는 경로가 있을까요?
로그인 후 투표 가능
1안. Dx12 인강 + 언리얼 오프 == 29살말 취업 (0 투표)
2안. Dx11 오프 == 30살 초 (6 투표, 75%)
3안. Dx11 오프 + 언리얼 오프 == 30살 중반 도전 (2 투표, 25%)

만담에 대한 답글을 하려면 로그인 또는 가입해야합니다.

3 answers

+6 투표
제가 알기로는 루키스님 Dx강좌는 그래픽스 이해하기 위한 수준의 강좌이지 게임 제작하기에 충분한 내용의 강좌가 아닌걸로 알고 있어서 그거 보고 포폴 못 만드실 수도 있어보여요 또는 더 공부하면서 만드는 기간이 배보다 배꼽 수준으로 결국 1,2비슷하게 될수고 있고요

더구나 특정 기술보다 공통적으로 바탕이 되는 지식이라도 탄탄하면 몰라도 로우레벨 지식은 둘째치고 언어나 수학 같은것도 일단 초급이라고 하실 정도면 생각보다 스무스하게 진행이 안될 가능성이 커요

거기다 이미 프레임워크 만들 수 있고 어떤 장르에 어떤 구조와 이런 구조를 왜 써야하고 등 판단 할 수 있는 지식과 경험 그리고 개체 관리 및 구조에 대한 충분한 이해 등이 있으면 거기에 Dx적인 그래픽 출력 부분만 넣으면 되지만 winapi로 게임 하나 완성해본 정도라면 이 부분에서도 부족해서 언어, 그래픽스 출력, 순수 게임 제작 관련 지식 등 외로도 공부 할게 늘죠..뭐 소중규모 2d 게임까지야 프레임워크 최적화나 여러가지 모르고 신경 안 써도 왠만해서 만들 수 있고 프레임도 괜찮게 나오기도 하지만 3d는 다른 문제라..

그래서 뭐 시간을 몇년 잡고 하는게 아닌 딱 타이트하게 잡고 하시려면 독학 깉은 경우 정확하게 상태 파악 및  제대로 로드맵을 만들어서 제대로 된 자료를 가지고 공부해야하고 그게 힘들다면 그냥 누가 가이드해주는 학원 디니는게 편하죠

그래서 2번 투표합니다

ps1. Dx12든 11이든 단독으로 제대로 된 게임(비주얼적인 부분도 코드레벨 부분도) 포폴로 만든다면 언리얼 모르셔도 그걸로도 취업 된다고 봅니디

ps2. 수학은 어느정도 아시나요 인프런에 "게임 엔진을 지탱하는 수학" 정도는 이해하고 있으신지 한반 체크해보세요

 

ps3.학원 다니시더라도 따로 학원에서 배운거 외의 수학, 언어, 로우레벨쪽 등 계속 더 공부하셔야 좋아요
답글 (681p)
수정됨
와.. 진짜 단 얼마라도 후원 드리고 싶은 댓글입니다. 답변 감사드립니다. 일단 새겨 듣겠다는 말씀 드리고 싶네요. 말씀대로, 그래픽스 지식과 로우레벨, 수학 공부에 전념해서 내실 다겠습니다. 언리얼 배우겠다는 이야기는 주객이 전도된 이야기인가 보군요..! 더불어서 게임엔진을 지탱하는 수학 강의도 구매 해보려합니다. 추천 감사드립니다..
+1 vote

학원, 인강등은 그냥 뭐를 선택해도 상관없다고 생각합니다. 본인 상황에 맞게 고르면 그만이라고 생각하고요. 가장 중요한건 어떤 회사를 목표 하는지 입니다. 회사를 정했으면 거기에 맞는 포트폴리오를 구성하면 됩니다. 그럼 자연스레 무엇이 필요한지 알게 됩니다.

 

설명 편의상, 채용을 위한 포트폴리오 목적의 탄막슈팅 게임을 만든다고 가정해봅시다.

일단 프로그래머로서 크게 생각해볼건 다음과 같습니다.

 

1. 플랫폼 선택 ( PC, 모바일등 )

2. 개발 엔진 선택 ( 유니티, 언리얼 ) / 로우레벨에서 DX 또는 OpenGL 부터 쌓아올릴 수도 있습니다.

3. 엔진 선택에 따른 언어 ( C#, C++ 둘중 하나겠죠. )

 

이제 세부적으로 보면 다음과 같습니다.

 

1. 게임 코드 아키텍처 및 디자인 패턴

2. 리소스 관리

3. 최적화

4. 협업을 위한 툴 관리

5. 코드 규약

6. 게임 장르에 맞는 여러가지 기법

7. 유지보수 관리

+@ 버전관리 시스템(ex: git, svn등...)

뭔가 복잡하고 어려워보이지만, 하나씩 살펴보면 간단하게 볼 수 있습니다. 번호 순서대로 설명하면 아래와 같습니다.

 

1. 간단하게 클래스간의 관계도로 이해해도 됩니다. 예를 들어 게임 전체를 관리하는 매니저가 있습니다. 그리고 소환되는 유닛들을 관리하는 주체도 있을 겁니다. 그리고 매니저간에 데이터를 어떻게 주고 받는지, 연결성을 어떻게 제한할지에 대한 규칙도 정해야 합니다. 여기서 디자인 패턴등을 활용합니다. 싱글턴, 상태 패턴, 전략 패턴등은 코드 구조에 대한 내용입니다. 어떻게 구조를 구성하고 관계를 설정하는 설계에 대한 얘기입니다.

2. 게임에는 다양한 리소스가 사용 됩니다. 그래픽, 사운드, 기획 테이블 데이터등 말이죠. 작업자 개개인의 관리도 필요하지만 결국 총괄적으로 살펴봐야 하는건 프로그래머의 몫입니다. 사운드는 어떤 포멧을 사용할건지, 기획 데이터는 CSV인지 JSON으로 할지 또는 불필요한 데이터가 있는지등 말이죠. 사실 2번은 포괄적이긴 합니다. 요지는 게임에서 사용되는 데이터들에 대한 이해입니다.

3. 최적화는 크게 리소스 최적화와 코드 레벨에서의 최적화가 있습니다. 리소스 최적화는, 예를 들어 "이미지들은 2^n의 크기를 사용한다." 또는 "단순 이펙트 사운드는 스테레오가 아닌 Mono 포멧을 사용한다" 라는식으로 말이죠. 코드 레벨은 간단합니다. 연산을 최소화 하는 겁니다. 100번 루핑할거를 10번으로 줄였으면 최적화를 한겁니다. 적절한 자료구조와 알고리즘을 사용하면 이것도 당연히 최적화 입니다.

4. 회사에서는 협업을 하게 됩니다. 예를들어 기획자가 어떤 게임 데이터 테이블을 만들었다고 합시다. 대략 5천개의 행(=Row)을 가지고 있습니다. 그런데 이런 테이블이 10개가 있다고 합니다. 기획자가 데이터를 검수한다고 하면 10 x 5000 = 50000개에 해당하는 행을 일일이 살펴 봐야합니다. 이때 프로그래머는 테이블 데이터가 유효한지를 확인해주는 검증 도구를 만들어 주는 거죠. 이처럼 게임 개발을 진행함에 있어 다양한 편의성을 타부서(기획, 그래픽등)에게 제공하는 도구를 만드는것도 프로그래머의 몫입니다.

5. 4번에서 이어지는 내용입니다만, 협업하는 프로그래머들간의 약속입니다. 예를들어 클래스 멤버 변수는 언더바 + 이름으로 짓는다던가, 인자를 넘기는 방법을 몇가지로 정하다던가 입니다. 혼자 만드는 포트폴리오라고 하더라도 습관적으로 생각하면서 작업하는게 좋습니다.

6. 탄막슈팅이라면 당연히 수많은 탄(bullet)들이 생성됩니다. 이거를 런타임에 계속 무한하게 만드는것보다는 일정 수량을 정해놓고 풀링을 하면 좋겠죠. 이처럼 장르에 대한 기법들이 있습니다. 이런것들을 찾아서 적용하는것이죠.

7. 코드 레벨에서의 유지보수만 얘기하면, 좋은 코드 설계에 따른 가독성입니다. 이 부분은 경험적인 영역이 매우 크다고 생각합니다만, 기본적인 원칙들이 있습니다. 간단하게 "중복 되는 코드를 제거한다.", "분기문 중첩을 되도록 줄이자", "수퍼클래스를 피하자" , "변수와 함수명을 잘 짓자" 입니다. 그리고 주석(=Comment)은 논의의 여지가 있습니다만, 개인적으로 주석이 많다는건 코드 흐름이 좋지 않다는 것 같습니다. 코드 흐름이 분명하면 주석이 줄어들게 되거든요.

마지막으로 버전관리 시스템인데.. 사실 이부분은 선택이긴 합니다. 어차피 회사가면 자연스레 체득하게 되니까요. 개인적으로는, 포트폴리오 프로젝트를 깃허브에 올려놓고 해보는걸 추천드립니다.

위에서 언급한 내용대로, 프로젝트를 하나 설정하고 진행하다보면 공부할 목록들이 정말 산처럼 쌓여갑니다. 예를 들어 적군의 행동을 FSM으로 할지 Behavior Tree를 사용할지 선택하는것도 있습니다. 충돌 처리에 대한 최적화도 있겠죠. 탄과 플레이어간의 충돌이라면 원과 원사이의 거리 비교를 이용해 매우 저렴한 코스트로 처리할 수 있습니다. 언어 레벨에서 보면 C++에서의 코드 최적화를 위해 Effective C++ 같은 서적을 사볼 수 도 있겠죠. 결국 필요한 내용은 구글링과 관련 서적들을 하나씩 사면서 step by step 으로 밟아 가는 수밖에 없습니다.

 

여기까지가 포트폴리오 프로젝트 및 학습 병행에 대한 이야기 였습니다. (많이 추리고 잘라냈는데도 글이 길어졌습니다.) 그리고 요새는 프로그래밍 서류전형 뒤에 알고리즘 테스트(=프로그래밍 테스트)를 진행하니 이에 대한 공부도 필수겠군요.

 

p.s. 게임 수학은 https://digital.kyobobook.co.kr/digital/ebook/ebookDetail.ink?selectedLargeCategory=001&barcode=480D200833070&orderClick=LEH&Kc= 추천드립니다.

p.s.2 게임 프로그래머 소양관련으로 괜찮은 링크입니다. https://www.slideshare.net/eiaserinnys/ss-4359340

답글 (1.9kp)
수정됨
답글 감사드립니다. 이 답글은 제가 공부하면서 두고두고 봐야할 거 같은 답글이네요. 한 번 안보고 적용 안하게 되면 고스란히 제 손해로 돌아올거같습니다. 소양관련 링크까지 한슬라이드 한슬라이드 읽어 보았는데, 정말 장기적인 안목을 얻기에 제격인거 같습니다. 책 추천까지도 감사드립니다^-^
0 투표

학원 중간 중간 이력서 넣으세요.왜 끝나고 마무리 하려고 넣을려고 하는지? 게임프로그래머 로드맵은 아래 나와있습니다.

https://github.com/utilForever/game-developer-roadmap

답글 (110p)
넵! 저도 중간중간에 넣어볼 생각이지만, 아무래도 공부에 치여서 붙긴 어려울거 같구, 경험 삼아서는 중간중간에 도전해 보려합니다. 의견 감사합니다!^^

게임 프로그래머의 만담 커뮤니티, 게임코디 입니다

온종일 코드와 씨름하는 우리들의 외로움을 삭이고자 합니다