구분이고 나발이고 지1랄 해봐야 어짜피 사람없고 기한없으면 다 하게되어있음.

못하면 가르쳐서라도 시키던가 알아서 공부해서 기한맞추던가.

 

구글 검색하면 나오는 다음 TiP에서 양산시청소년종합지원센터 에서 답변한걸 기초로 말해보자.

http://tip.daum.net/question/59565399

 

프로그래머는 게임디자인을 현실화시키기 위한 소프트웨어 도구를 만드는 사람들로 각종 컴퓨터언어, 운영체계 프로그래밍, 게임제작 툴 등에 대한 이해가 깊어야 합니다. 프로그램 내용에 따라 유틸리티 및 툴 프로그램 제작, 라이브러리 및 게임엔진 제작, 게임 프로그래밍, 게임 서버 및 통신 프로그래밍, 웹 및 자바 프로그래밍, 네트워크 프로그래밍, 서버 DB 프로그래밍 등 다양하게 나눠 볼 수 있습니다.

 

 

1. 유틸리티 및 툴 프로그램 제작, 

아래 라이브러리 및 게임엔진 제작이라고 싸물어놓은 카테고리에 짬뽕되서 들어가는거임.

소스코드 열어봐서 그림 경로 설정할줄도 모르는 디자이너팀과 사운드팀이라던가.

텍스트파일 열어서 변수 바꿔주는것도 못하는 미개한 기획팀을 위해서 게임 엔진에 올라가는 리소스들을 다루기 편하도록 툴 만들어주는 작업니다.

여기선 따로 항목으로 소개해놨는데 2번 항목의 게임 프로그래밍 쪽 사람들이 예정된 개발일정대로 충실히 따라가도 설명해줘도 모르는 다른 팀의 징징이때문에 만들게되는 초과근무의 주범.

물론 이거 안만들어주면 다른팀이 뭐 해올때마다 일일이 해줘야 하게되니 안할수도 없음.

 

2. 라이브러리 및 게임엔진 제작, 게임 프로그래밍

요즘은 게임엔진 사다 만들기도 해서 이거 따로 떼논거 같은데 다 같은놈들이 만들게 됨.

게임엔진을 사다써도 만든놈이 좆같이 만들어서 버그떠버리면 수정하자니 시간도 모자르게 되면 다른회사 병1신같은 놈들한테 씨발씨발거리면서 테스트및 디버깅도 해줘야 하는 호구스러운 직책임.

그냥 쉽게 말해서 보통 게임하는 새1끼들이 '게임'이라고 인식되는 부분들을 죄다 만드는거라고 생각하면 된다.

 

 

3. 게임 서버 및 통신 프로그래밍, 웹 및 자바 프로그래밍, 네트워크 프로그래밍, 

이부분은 구분이 좀 애매하게 되어있어서 그런데 거짐 비슷한 내용들이라 한 카테고리고 말한다.

온라인 게임이라면 서버에다 데이터 보내고(캐릭터 움직이고 템줍기 실시 이런 정보), 또 이에 대한 데이터(움직인 결과 현재 위치, 줏은 템이 뭔지)를 받게 되는데 이런 통신프로그램을 구현하는 부분임.

모범적인 기획단계를 거쳐가면서 개발하게 된다면 이 부분을 기획팀에서 "이럴땐 이런이런 정보를 서버에 보내서 클라이언트에는 이런이런 정보가 늦어도 몇 초 안에 도착해야 합니다" 같이 설명해 줘서 바로바로 만들어주면 되겠지만.

"때리면 맞아요. 맞은놈은 때린놈하고 실시간으로 싸울 수 있게 해주세요" 라고만 해준다. 씨1발

뭘 보내고 뭘 받아야 하고 시간제한이 걸리면 최우선적으로 보내야 할게 뭔지 이런거도 고민해야 하고, 다중플레이라면 공유되는 부분에 대한 정보도 기획 및 개발해야 하기 때문에 '많이'좆같아 지는 부분.

특히 클라이언트(유저)에서 뭔 지1랄을 하건 접속이 이어지고 게임이 가능해져야 하기 때문에 많은 경험도 필요하다.

웹 및 자바프로그래밍이라고 써놨는데 웹 통해서 서비스 제공하고(넷마블이나 넥슨같이 웹 페이지에서 로그인하고 게임 실행하고 이런거)

이쪽 구현하는데 JSP 많이 쓰길래 뭉뚱그려 묶어놓은거 같다.

 

4. 서버 DB 프로그래밍

싱글플레이만 하는 게임이라면 서버DB대신에 로컬 DB가 들어가겠지만...

어쨋건 게임이란건 복잡해질수록 많은 정보가 주고받고 저장되어야 하기 때문에(온라인 게임이라면 유저수만큼 불어날테고)

DB 프로그램 사용을 할 수밖에 없다.(거기다 보안성 측면에서도)

 

근데 뭐 결국 구분이야 어쨋건 하다보면 다 하게 되어있고, 베테랑 게임 개발자들이라면 죄다 할 줄은 알고있게 된다.

물론 저마다 주로 하던거 자주 하던게 있으니 부분에 따라 능률 차이도 나니 분업하게 되는거고 기한때문에 부분적으로 외주를 주게되니 이런 구분이 필요해지긴 함. 뭘 만들지 구인공고에 다 까발리면서 사람 뽑을순 없잖아?

 

'게임'을 만드는 자체가 좋으면 직접 만들어보는게 좋음.

게임 만들어보고 싶으면 오픈소스로 공개된 게임 소스를 찾아봐도 좋고

실제 게임 만들기를 해보면서 어떤걸 알아야 하는지를 배우는 방법도 있음.

 

게임 만들기에 필요한걸 배우고 싶어도 게임 만들기 자체가  SW기술의 첨단을 달리기 때문에 현역 개발자들도 똥줄 태우면서 배우고 개발해야 하는 직종임.

게임 자체가 일종의 기술력에 대한 포트폴리오같이 되거든.

우리나라 온라인게임쪽이 그동안 다른나라보다 강세였던 것도 네트워크 관련해서 월등한 기술력 덕분이기도 했고.

 

뭘 배워야 할수있냐고 물어보면

언어는 C++, JAVA 집중해서 배우고 난 다음에 필요한거 그때그때 익혀보고 써보고 해야함.

더 좋은게 있으면 바로 적용해야 하니깐 게임 개발쪽에서는 하나 배워서 평생 못써먹어.

그래픽 API도 OpenGL이랑 DirectX 얘기하는데 게임 엔진 개발쪽에서 대형 프로젝트면 DirectX같은걸 만들어야 하는 상황이 오기도 한다.

DirectX에 사운드, 영상부분도 있으니깐 DirectX만 제대로 파놔도 어디가서 개발 프로젝트 끼는데 부족한건 없을거야. 넘치면 모를까.

솔직히 DirectX 기능들 필요한데만 써먹을 수 있어도 밥벌어먹고 사는데 지장 없어진다.

3D쪽은 OpenGL 많이 쓰긴 하는데 한쪽만 제대로 파놔도 다른쪽은 배우는데 그리 오래걸리지 않음.

어짜피 개념 자체는 거기서 거기라 명령어좀 다르고 순서 조금 다른거야 금방 배우거든.

네트워크쪽은 TCP통신, UDP통신 이용해서 채팅기능만 구현할줄 알면 기본 기술은 끝이야.

나머지는 네트워크 구조랑 특성 등을 공부하면서 배워나가야 하니깐.

 

'재밌는 게임을 만들자' 가 목표라면 게임 프로그래머는 상당히 거리가 먼 직종이야.

게임 개발자 중에서 프로그래머는 그런 게임을 만들도록 도와주는 팀원이거든.

 

언리얼 엔진 게임의 목록

http://ko.wikipedia.org/wiki/언리얼_엔진_게임의_목록

 

여기서 정리된건 다 같은 언리얼 게임 엔진을 이용한 게임들이야.

같은 엔진을 썻어도 재밌는 게임 재미없는 게임이 있을 수 있거든.

 

 

 

마지막으로 한마디 더 하자면 직접 만들어 보는게 제일 좋아.

뭐가 필요한지 만들면서 고민하고 시행착오 거쳐가면서 보충하는 거거든.