-
프로카데미 게임서버 프로그래머 취업전략 무료강의후기 2020. 2. 15. 17:02
1. 게임서버 프로그래머의 업무
흔히 게임개발을 유지보수 / 신규개발로 나누지만 결국 대부분의 업무는 컨텐츠 개발이다. 컨텐츠 개발 과정에서의 문제를 해결하는 데에도 네트워크 / 시스템 지식이 필요하므로 기초 지식이 중요하다.
구현 / 결과에만 집중에 할 수 있는 것만을 만드는 포트폴리오는 큰 의미가 없다. 완전하게 이해한 포트폴리오 하나에 집중하는 것이 유리.
2. 언어
Stateful 서버에서는 주로 C/C++에 가끔 C#을 같이 사용한다. 전통적인 MMO 게임 개발에 사용되며, 실시간 서버-클라이언트 구조 TCP Socket 프로그래밍을 사용한다. 따라서 고급 멀티스레딩과 메모리 관리 기술이 중요하다. 아래의 강의 내용과 프로카데미 교육과정은 이 Stateful 서버 개발 교육 위주이다.
Stateless 서버에서는 주로 Node.js에 PHP, JAVA를 사용한다. 대부분의 모바일 게임에서 사용하며 HTTPS 웹 서버 기술을 사용하고, AWS 등 외부 솔루션 의존도가 높으며 변화가 빠르고, 언어 난이도가 낮은 편이다.
C++(98)를 문법에서 막히지 않을 정도로 숙달해야 하고, 기능의 용도, 원리, 장단점을 완전히 이해하고 있어야 한다. 모던 C++도 많이 사용하지만, 큰 회사를 목표로 할 수록 기본 C++98의 기능을 익히는 것이 우선이다. C++에 대한 충분한 이해가 이루어지면 C#이나 스크립트 언어는 수월하게 사용할 수 있다. 결국 실력 차이는 문제풀이 능력, OS, 네트워크 등 시스템 지식에서 생긴다.
언어의 기초가 상당히 중요. 연산자 우선순위, 구조체 크기, 16진수, 오버로딩, Keyword의 작동 원리에 대해 이해하는 것이 큰 도움이 된다. STL도 사용법을 아는 수준을 넘어, 내부 구현 방법, 장단점, 시간 복잡도까지 완전히 이해해야 한다.
3. 소켓 프로그래밍
모델별 지식이 중요. Select, AsyncSelect, Overlapped IO, IOCP 등의 장단점과 사용처, 사용 경험. 사실 크게 어렵지 않고 공부하면 누구나 할 수 있는 것이라 가치가 떨어진다.
시중의 책 / 샘플 코드는 실제 개발 코드와는 다를 수밖에 없다. 단순히 오류, 버그, 오작동이 없는 서버가 아니라 고성능을 목표로 하는 서버를 만드려면 TCP, OS, Memory, Thread에 대한 깊은 이해가 필요하며, 이 과정에서의 다양한 문제해결 능력이 취업에 큰 도움이 된다.
4. 네트워크
OSI 7 Layer, IP/TCP/UDP, 특히 Reliable UDP 등의 작동원리 이해와 구현 연습이 필요하다. 이것도 생각보다 오래 걸리지 않는다.
큰 회사일수록 포트폴리오의 비중이 낮아진다. 게임을 실제로 플레이할 수도 없고, 실력을 가늠하기도 어렵기 때문. 따라서 스레드, 프로세스, 컨텍스트, 메모리 등 OS지식을 평가하는 기술면접이 중심이 될 수밖에 없다.
5. 데이터베이스
Stateful 개발의 경우에도 공부하면 좋지만 너무 양이 방대하다. 큰 회사에서는 별도 DBA 팀이 있는 경우도 있음. 하지만 Stateless 서버에서는 데이터베이스의 비중이 훨씬 크다. 크게는 70~80%까지. 대부분 MySQL과 MariaDB 중 하나를 사용하며, table 설계(정규화), query, 저장 procedure를 중점으로 공부하면 좋다.
6. 알고리즘
레드블랙 트리 / 그래프까지는 어렵더라도 자료구조에 대한 완벽한 이해, 구현과 이에 대한 설명도 가능해야 한다. 알고리즘 문제풀이 사이트에서 꾸준히 연습하고, 종이에 하는 손코딩 연습도 별도로 필요하다.
7. 정보처리기사 자격증
정보처리기사 자격증 "공부"는 전반적인 이론과 용어를 익히는 데 상당히 유용하다.
8. 멀티스레드 프로그래밍
Stateful 서버 개발의 핵심으로, 어떻게 "잘" 설계하고 사용하는지에 대한 고민이 중요.
9. 자기소개서
내 기술 소개, 개발 경험, 문제해결 또는 특이한 경험을 위주로 써야 한다. 특히 어려운 문제를 어떻게 찾아냈고, 해결했는지에 대한 경험을 2~3개 쓰면 큰 도움이 된다.
10. 포트폴리오
결국 서버를 직접 만들어야 한다. 하지만 복잡한 기능은 필요 없고(애초에 실행해볼 수도 없다) 고성능 채팅 서버만으로도 원리를 완전히 이해했다면 충분하다.
완벽한 Lock free queue를 구현하고 성능이 개선되었다면 그 결과를, 개선되지 않았다면 실패 이유 분석을 정리할 정도면 상당히 높은 수준.
포트폴리오는 브로슈어, 상품 설명처럼 작성하면 좋다.
1. 전부 담으려 하지 말고 쉬운건 생략한다.
2. 너무 자세한 구현방법과 설명도 생략한다.
3. 직접 만든 자신있는 라이브러리의 설계 구성. 특히 검증 테스트 방법과 결과가 중요하다.
4. 오타, 오류 확인과 읽기 쉬운 디자인도 생각보다 중요하다.
홍보용 무료 강의이지만 유용한 내용이 많고, 게임 서버 개발자 취직에 관련된 정보를 접할 수 있는 방법이 적은데 꽤 많은 사람들에게 도움이 될 것 같다.