image.png

  1. 넥슨과 선택하신 직무에 지원하신 동기와 입사 후 성장 목표를 서술해주세요.

    [개발자의 가장 중요한 동기는 도전정신] 넥슨의 기존 IP 확장과 신규 IP발굴을 위한, 즉 기존의 것에 머무르지 않고 발전시키기 위한 도전정신이 저의 개발자로서의 가치관과 일치하여 지원하게 되었습니다. 넥슨은 최근에 중국에 출시한 "던전앤파이터 모바일" 과 새로운 IP로 글로벌 시장에 도전했던 "퍼스트 디센던트" 모두 좋은 성과를 거뒀습니다. 게임 출시 이후에도 오랜기간 쌓아온 노하우를 바탕으로 "라이브 오퍼레이션"을 통해서 사용자 피드백을 바탕으로 서비스를 고도화하고 이를 게임 콘텐츠로 연결시켜 다시 이용자에게 되돌려주고 있습니다. 이러한 넥슨의 방향성은 저의 개발자로서의 방향성과 일치합니다.

    삼성 청년 SW 아카데미에서 총 두 가지의 게임 프로젝트를 진행했습니다. 먼저, 3D 멀티플레이 로그라이크 게임을 개발했습니다. 기존 싱글플레이 기반의 로그라이크 게임이 아닌 멀티플레이 기반이며 각자 원하는 직업을 선택하여 다양한 협력 플레이를 통해 팀워크에 따른 성취감을 느낄 수 있도록 시도했습니다. 그리고, 총 4차례의 배포를 통해서 사용자의 피드백을 적극적으로 게임에 반영했습니다. 그 결과 600명의 회원과 60명의 동시 접속자를 기록했으며 프로젝트 우수상을 수상했습니다.

    두번째는, 기존 "쿠키런 : 킹덤"과 "로스트아크"의 전투 시스템을 합쳐서 RPG게임을 개발했습니다.조작은 단순하지만 협력 플레이를 통해서 다양한 몬스터의 패턴과 기믹을 파훼하는 재미를 느낄 수 있도록 시도했습니다. 그리고 다소 낯선 전투 시스템이라 설문조사를 통해서 구체적으로 피드백을 제공받아 게임을 점진적으로 고도화 시켰습니다. 그 결과 두번째 프로젝트 또한 프로젝트 우수상을 수상했습니다.

    이러한 경험을 토대로, 게임 프로그래머로서 항상 사용자 피드백을 바탕으로 서비스를 고도화 할 수 있어야 한다는 것을 알게 되었고 기존의 것을 확장하거나 새로운 것을 시도해보는 것에서 흥미를 느꼈습니다. 저의 경험이 넥슨의 기존 IP 확장과 신규 IP발굴 전략에 있어 큰 도움이 될 거라 생각합니다.

지원 동기는 어떤 부분이 부족한지 전체적으로 궁금합니다. (IP 확장과 방향성이 일치한다고 했지만 본인의 경험과 비슷한 방향성이 맞는지 쪼오오금 갸우뚱 했습니다. )

  1. 선택하신 직무 관련 역량을 갖추기 위해 구체적으로 어떠한 준비를 해오셨는지 경험과 결과를 중심으로 기재해 주세요. (1,000자)

    [알고리즘 역량 강화] 게임 프로그래머의 중요한 역량 중 하나는 알고리즘이라고 생각합니다.알고리즘 역량 강화를 위해 삼성 청년 SW 아카데미(이하 SSAFY)에 입과 했습니다. 삼성 SW 역량테스트 B형(Professional)을 취득하기 위해 정해진 커리큘럼을 충실히 수행했고 당일 배운 내용을 복습하고 꾸준한 반복 학습을 위한 알고리즘 스터디를 진행했습니다. 그 결과 두 번의 시도 끝에 삼성 SW 역량테스트 B형을 취득했습니다.

    [객체 지향 프로그래밍에 대한 이해] 다음으로 중요한 역량은 객체 지향에 대한 이해입니다. SSAFY에서 Unity 기반의 로그라이크 게임을 개발한 경험이 있습니다. 캐릭터 및 아이템 설계와 Photon Unity Network를 이용한 멀티플레이를 담당했습니다. 클래스 설계 과정에서 객체 지향 개념과 SOLID에 대해 깊이 있게 이해 했고 그것을 기반으로 싱글톤, 전략, 옵저버, 상태 패턴과 같은 디자인 패턴을 학습하고 적용 시켜볼 수 있었습니다. 또한 멀티플레이 동기화를 위해 RPC를 사용했는데 멀티 플레이를 고려하지 않고 설계했던 클래스를 다시 설계했던 경험이 있습니다. 이 과정에서 확장성 있는 설계의 중요성을 깨달았습니다. 그리고 MVP를 완성하여 4주차에 첫 배포를 진행했고 사용자 피드백을 통해 프로젝트를 발전시켜나갔습니다. 6주 동안 총 4번의 배포를 진행했으며 끝난 이후에도 포톤 서버를 3대로 늘려 접속자수 약 60명, 총 회원수 600명을 달성했습니다. 최종적으로 반 내 1위를 하여 프로젝트 우수상을 수상했습니다.

    다음 프로젝트는 RPG게임을 개발했습니다. 앞선 경험을 토대로 디자인 패턴을 이용해 클래스 설계를 확장성 있게 진행해 개발 중에 재설계 하는 시간을 줄여 개발 생산성을 높일 수 있었습니다. 그리고 DB설계, 웹 서버, CI/CD 및 인프라 구축을 담당하여 전체 프로젝트를 이해했고 코드리뷰를 진행하여 팀원들의 코드 품질 향상에 기여했습니다. 그 결과 두 번째 프로젝트도 우수상을 받을 수 있었습니다.

    현재 어떤 역량이 중요한지 내 생각을 적는 부분을 어떤식으로 추가할지 고민하고 있습니다. (위에 모집내용에 언급된 역량중에 본인의 생각으론 머가 중요하다고 생각된다 라고 풀어가면 좋은데 알고리즘과 설계에 대한 이야기는 나쁘지 않습니다. 다만 설계가 중요하다고만 퉁때려 놔서 설계를 하더라도 확장성이냐 안정성이냐 비즈니스 로직이냐 등등을 고려한 설계를 할텐데 그런 언급이 없어서 아쉬운 부분이 있습니다. )

  2. 지원하신 직무와 관련해 활용 가능한 스킬셋(기술스택, 플랫폼 등)을 구체적으로 나열하고, 각 스킬의 활용 수준(기초, 중급, 고급)을 설명해주세요.(500자)

    [C#, 중급] 몬스터, 캐릭터, 스킬, 아이템 등 게임에 필요한 객체를 설계할 때, 싱글톤 패턴, 옵저버 패턴, 전략 패턴, 상태 패턴을 사용하여 클래스를 설계하고 구현한 경험이 있습니다. [Unity, 중급] Unity의 Coroutine기능을 이용하여 비동기적으로 스킬 또는 REST API 요청을 처리하는데 효과적으로 사용했습니다. 또한 오브젝트 풀링을 이용하여 자주 생성 및 파괴되는 오브젝트를 재사용하여 메모리와 성능을 최적화했습니다. [.NET, 중급] .NET 프레임워크를 사용하여 TCP 통신 기반의 에코 서버를 구현해보았습니다. TCP Socket 통신을 위해서 패킷을 직접 설계하고 패킷 직렬화 과정을 거쳐서 서버와 클라이언트가 통신할 수 있도록 구현했습니다. 패킷을 처리하는 과정에서 멀티 쓰레딩을 이용하여 비동기 처리를 진행했고, 패킷을 브로드 캐스팅하는 과정에서 쓰레드 병목 현상이 발생하여 큐를 활용한 Command 패턴을 적용하여 이를 해결했습니다.

    기술의 경우에는 경험을 바탕으로 적었습니다. (굿굿)

코테 기록