한국어
    • 한국어
    • ENGLISH
    • 日本語
    • 中文-繁體

    2022.11.28 The Originality

    Game Client Programmer, 신재훈

    즐겁기 때문에 몰입합니다. 자신만의 방법을 찾아 탁월하게 성취합니다. 나아가 더 큰 탁월함을 위해 치열하게 고민합니다.

    자신을 적극적으로 표현하고, 새로운 경험에 도전하며 성장하는 사람들. 이들은 엔씨에서 좋아하는 일을 펼치며 성장합니다.

    엔씨의 새로운 세대 <THE ORIGINALITY>


    개발 능력은 기본이다. 그 다음으로 중요한 건 ‘같이 일하고 싶은 사람인가’다. 말이 통해야 일이 된다. 기획에 대한 주제든 기술에 대한 이야기든 편하게 아이디어를 주고받을 수 있는 사람이 되고 싶다. 대화가 많이 오갈수록 좋은 아이디어가 나오고 문제 해결도 빠르다.

    Game Client Programmer, 신재훈

    Client Programming

    〈리니지M〉 클라이언트 프로그래머다. 클라이언트는 프론트 엔드라고도 한다. 게임 컨트롤은 물론 튜토리얼 시스템부터 캐릭터가 쓰는 스킬, 스킬을 사용할 때의 효과까지 화면에 나오는 모든 콘텐츠를 플레이어가 조작할 수 있도록 개발한다.

    메신저 앱에서 메시지를 작성하고 창을 스크롤하는 것은 인터넷 없이도 가능하다. 하지만 실제로 메시지를 전송하는 영역은 서버가 컨트롤한다. 게임 프로그래밍도 마찬가지로 크게 게임을 플레이하는 영역인 클라이언트와 이 클라이언트를 플레이어와 연결하는 서버로 나뉜다. 클라이언트 프로그래머는 인터넷 연결 없이도 게임 속 모든 콘텐츠를 구동할 수 있는 클라이언트 공간을 구축한다고 보면 된다.

    콘텐츠의 구조를 생각한다

    콘텐츠를 개발하는 방향이 결정되면 프로그래머는 설계에 들어간다. 전체 구조를 파악하여 도식화하고 이를 바탕으로 알고리즘을 개발한다. 특히 초기 설계를 잘 해 두는 게 중요하다. 예를 들어 15층 건물을 짓는다 치자. 다 지어 놓으면 7층에 정원이 필요하다고 하고, 지하 5층까지 추가로 뚫자고 하는 일이 꼭 생긴다. 무작정 건물을 쌓으면 이후 일이 번거로워진다. 예측 못하는 상황에도 유연하게 대응할 수 있도록 초반에 잘 그리는 게 좋다.

    그 다음은 알고리즘을 짠다. 알고리즘은 내가 시키는 대로 움직이는 순서를 만드는 것이다. 예를 들어 라면을 끓일 때 물을 먼저 넣거나 라면을 먼저 넣는다고 말할 수는 있다. 하지만 물을 어디서 구하는지 냄비는 무엇인지를 컴퓨터에게 말로 설명할 수는 없다. 이 모든 것을 컴퓨터에 입력하는 작업을 설계해야 한다. 즉, 알고리즘을 바탕으로 코드를 개발한다.

    코드를 다 설계하면 테스트한다. 만약 냄비에 물을 넣고 불을 켰는데 라면이 끓지 않았다면 디버깅 과정으로 그 이유를 찾아야 한다. 추가할 부분이 있으면 앞의 순서를 반복한다. 기획이 좋으면 힘들어도 포기하지 않는다. 기술적으로 개발할 수만 있으면 한다.

    안정적인 게임이 재미있는 게임이다

    게임하면서 가장 화나는 순간은 갑자기 느려지거나, 중요한 타이밍에 멈출 때다. 몰입이 깨지면 좋았던 게임도 싫어진다. 이 순간을 막기 위해 프로그래머는 안정성을 최우선으로 ‘이 기능이 필요할까’, ‘좀더 업그레이드할 방법은 없을까’를 고민한다.

    라이브 게임은 매주 새로운 패치를 업데이트 한다. 패치를 오픈하는 날엔 반응이 즉각 올라오는데 ‘게임이 느려졌다’, ‘꺼진다’ 등의 리포트를 보면 바로 수정 작업에 들어간다. 퍼플로 서비스하는 콘텐츠는 되도록 바로 고치고 어플리케이션 버전의 콘텐츠는 심사 기간에 따라 시간이 좀더 걸리기도 한다. 가능한 빠르게 패치를 제공하는 게 목표지만 어쩔 수 없는 환경적인 부분도 있다. 플레이어 분들께 양해를 부탁드린다는 말을 꼭 전하고 싶다.

    일단 부딪쳐보면 길이 보인다

    프로그래머 캐릭터로 리셋하다

    나는 미디어공학을 전공했다. 미디어, 경영, 디자인, 프로그래밍 모두 배웠다. 원래는 방송이 하고 싶었다. 애초에 공부와는 잘 맞지 않았다. 교내 라디오 방송을 진행하고 아나운서 준비도 해봤다. 그런데 막상 준비해보니 큰 재미가 없었다.

    그러다 어느 프로그래밍 수업을 들었다. 내가 입력한 사항을 컴퓨터의 검은 화면이 그대로 받아들여주는 것이 재밌었다. 사람과 대화하는 경우 내가 A라고 말하면 상대에겐 A가 될 수도 B가 될 수도 있다. 컴퓨터는 내가 설계한 A를 A로 답한다는 점이 매력적이었다.

    전공자가 아니다 보니 학교에서 잠깐 공부한 정도로는 부족했다. 더 해보고 싶어서 따로 전공책을 구해 공부했다. 앱 개발 동아리에 들어가 앱을 개발하고, 게임 동아리에서 게임도 만들어봤다. 일단 부딪쳐가며 해보니 그때그때 부족한 점이 보였다. 그걸 채우면서 능력치를 올렸다. 마치 ‘나’라는 캐릭터를 리셋 시켜 새로운 캐릭터를 키우는 기분이었다.

    〈리니지M〉의 튜토리얼을 만들다

    엔씨에 들어온 건 <리니지M>의 런칭을 준비할 때였다. 처음 맡은 프로젝트는 게임의 튜토리얼 개발이었다. 문제는 한 번도 만들어 본 적이 없는 데 있었다.

    주변에 조언을 구할 수는 있지만 결국 답은 자신이 찾아야 한다는 걸 안다. 고민만 하고 있을 순 없었고 일단 여러 가지를 시도했다. 설계를 몇 번이나 갈아 엎었다. 조작 버튼을 이미지 위에 달아보고, 다른 위치에 넣거나 잘라보기도 했다. 끈기 있게 매달리니 완성할 수 있었다. 게임이 오픈하고 지하철에서, 또 식당에서 내가 만든 튜토리얼로 플레이하는 사람들을 봤다. 그 순간 정말 자랑스럽고 뿌듯했다.

    공부와 실전으로 밸런스 패치

    프로그래머는 기본적으로 설계를 잘해야 한다. 학생 때나 연구실에 다닐 땐 주변에서 잘한다 잘한다 해서 내가 설계를 잘하는 줄 알았다. 엔씨에 들어와보니 뛰어난 프로그래머가 너무 많았다. 책을 쓰거나 엔진을 직접 개발한 분들도 있었다.

    프로그래밍 지식이 부족하다 생각해서 더 많이 읽고 공부했다. 그런데 게임 기술은 응용 분야가 다양하고 변화 주기가 빨라 이론만으론 한계가 있었다. 새로운 엔진, 새로운 언어를 공부하면서 계속 실전에 활용하려고 했다.

    경험이 쌓이니 시야가 넓어졌고, 여러 군데서 모은 지식을 응용할 수 있었다. 예전에 만든 코드를 보면 더 간편하게, 성능 좋게 짜는 방법이 보인다. 실력이 는 걸 실감할 때의 희열이 좋아 계속 발전하려고 한다.

    같이 일하고 싶은 개발자

    대화가 통하는 프로그래머

    프로그래머에게 개발 능력은 기본이다. 실력 다음으로 중요한 건 ‘같이 일하고 싶은 사람인가’다. 이런 사람이 어떤 사람인지를 생각해보면 말이 통하는 사람, 어떤 의견이든 허물없이 이야기할 수 있는 사람이 떠오른다. 대부분의 일은 혼자 해결할 수 있는 게 아니니까.

    커뮤니케이션을 잘 하려면 ‘원만한 관계’가 필요하다. 편하게 이야기할 수 있는 분위기를 조성하기 위해 먼저 다가가 장난스럽게 말을 걸기도 한다. 실제 성격과 업무에서의 성격에 차이를 두려 하지 않는다. 사실 일이라 생각하지 않고 이야기한다. 기획에 대한 주제든 기술에 대한 이야기든 아예 다른 주제의 이야기든 즐겁게 대화를 나누다 보면 좋은 아이디어가 나오기도, 문제가 해결되기도 한다.

    기획, 아트, 프로그래밍. 세 가지가 맞물려야 움직인다

    프로그래머는 주로 성능과 효율을 생각한다. 하지만 게임은 성능만이 아니라, 재미와 심미성이 갖춰질 때 완성된다. 이를 위해 기획자와 아티스트, 프로그래머가 협력한다. 게임 개발의 매력은 전혀 다른 성향의 세 파트가 “재미있는 게임”이라는 목표를 향해 협업하는 과정에 있다. 서로의 역할을 최적화하면서 유기적으로 연결될 때 시너지가 난다. 티격태격하면서도 함께 앞으로 나아가는 과정이 즐겁다.

    즉각적이고 반복적인 성취가 불러오는 일의 재미

    게임 회사에 오려면 이 일이 정말 재미있어야 한다. 여기는 게임을 좋아하는 수많은 사람이 게임만을 바라보며 개발하는 곳이기 때문이다. 그저 연봉이나 보상 때문에 들어오면 업무가 재미없고 성취감도 없을 것이다.

    나는 프로그래밍이 재밌다. 그게 내 가장 큰 장점이다. 어떨 땐 일이 아니라 동료들과 같이 파티 플레이 게임을 하는 것 같다. 또 성취가 즉각적인 것도 이유이다. 함께 개발한 결과물을 플레이어들이 즐기는 모습을 보면 너무 뿌듯하다. 클라이언트를 떠나지 못하는 이유도 이렇게 바로 보상을 받기 때문이다.

    같이 발전하지 않으면 힘든 것도 나의 몫

    프로그래밍은 혼자만 잘할 순 없다. 내가 더 잘하려면 같이 일하는 사람도 잘해야 된다. 함께 발전하지 않으면 힘든 건 나한테도 돌아온다. 우리 팀은 다 같이 잘하려는 문화가 있어서 좋다. 새로운 기술이 나오면 공유하고, 모르는 건 서로 알려주는 게 자연스럽다.

    끝까지 가보고 싶다

    〈리니지M〉의 시초부터 같이 했기 때문에 끝까지 가보고 싶은 마음이다. 어디까지 갈 수 있을지 궁금하다. 아직 할 수 있는 것이 많다. 새 플랫폼으로 확장하거나 하나의 플랫폼에서 여러 플레이를 동시에 하는 등 실현할 수 있는 다양한 가능성들이 남아있다. 개발자로서 내가 얼마나 더 완벽하게 만들 수 있을지 계속 시험해보고 싶다.

    프로그래머는 프로그래밍만 해야 한다는 틀은 깨고 싶다. 내 일을 잘하는 건 당연하고, 내가 하고 싶은 일도 계속 할 것이다. 친구들과는 재밌게 놀고, 행복한 가정을 이루고, 내 삶도 중요하게 여기고. 회사든, 팀이든, 사회든 어디서나 융화되고 자기 역할을 잘 하는 사람이고 싶다.

    * 본 인터뷰에서 언급되는 내용은 인터뷰 당사자의 개인적 견해이며, NCSOFT의 공식 입장이 아님을 밝힙니다.