[강연] 기획자가 알아두어야 할 '서버 개발'에 대하여 - 넷텐션 배현직 대표

게임뉴스 | 허재민,김수진 기자 |


[▲배현직 넷텐션 대표 ]

  • 주제: 게임 프로듀서가 알아야 할 게임 서버 개발의 생리
  • 강연자 : 배현직 - 넷텐션 / 대표
  • 발표분야 : 서버 프로그래밍
  • 강연시간 : 2019.11.15(금) 11:40 ~ 12:20


  • [강연 주제] 최고의 게임 서버는 무엇인가? 바로 게임 프로듀서의 귀에 게임 서버라는 단어 자체가 들어갈 일이 전혀 없는 서버가 최고의 서버입니다. 이번 세션에서는 눈에도 보이지도 않고 순전히 글 뿐이고 재미없는 내용뿐인 게임 서버 개발의 생리를 이해하는 시간을 가져볼 예정입니다.

    "게임 기획자나 프로듀서에게 최고의 게임 서버란 무엇일까? 바로 존재 자체가 거론되지 않는 서버라고 할 수 있다."

    14일부터 15일까지 양일간 부산 벡스코에서 개최된 IGC X G-CON의 두 번째 날에는 넷텐션의 배현직 대표가 강단에 올라 게임의 기획자와 프로듀서가 알아두어야 할 게임 서버 개발의 생리에 대하여 강연했다. 넷텐션은 게임 서버 엔진, '프라우드넷'을 개발한 회사로, 현재 프라우드넷은 게임 서버 엔진 솔류션 중 국내 점유율 1위를 기록하고 있다.

    기획자가 서버를 거론할 때는 대부분 다운됐다거나, 해킹을 당했을 때 등, 부정적인 이야기밖에 없다. 배현직 대표는 이러한 서버에 대한 부정적인 이슈를 줄이기 위해 기획자와 프로듀서로서 게임 서버에 대하여 알아두면 좋을 요소에 대하여 이야기했다.



    멀티플레이 게임의 품질은 네트워크 상태와 연관이 있다. 배현직 대표는 먼저 게임 장르에 따라서 인터넷 멀티플레이 구축의 어려움이 상이함을 언급했다. 대규모 우주전쟁을 다룬 게임과 FPS, 그리고 음악 리듬게임이 있다고 할때, 어떤 게임이 가장 인터넷 멀티플레이를 구축하기 어려울까.

    먼저, 인터넷 멀티플레이의 품질을 결정하는 요소는 레이턴시와 쓰루풋으로 나눠볼 수 있다. 레이턴시는 아주 적은 양의 데이터를 상대방의 컴퓨터로 보내는 데까지 걸리는 시간을 의미하며, 쓰루풋은 1초에 몇 바이트의 데이터를 보낼 수 있는가를 뜻한다. 이중 게임 플레이에 영향을 주는 것은 레이턴시다.

    예를 들어 미국과 한국 간에 인터넷 선이 있다고 가정해보자. 쓰루풋이 좋다면 그 선의 굵기가 굵어진다는 식으로 이해해볼 수 있다. 하지만 이동할 수 있는 정보가 많아진다고 하더라도, 정보가 이동하는 시간, 레이턴시는 달라지지 않는다. 네트워크 중간에는 중계기가 많이 존재하며, 그 과정을 거치면서 시간이 조금씩 소요된다.



    ▲이러한 상황에서는 레이턴시가 낮은 일본에서의 멀티플레이 품질이 나을 수밖에 없다.

    모바일 게임과 같이 무선 네트워크를 사용하는 경우에는 품질이 랜덤하게 변화하는 변수까지 일어난다. 무선 네트워크의 레이턴시는 유선보다 높지만, 유선은 일정하게 유지되는 반면, 무선 네트워크는 가까있는 누군가가 동영상을 보고 있다던가 할때 순간적으로 레이턴시가 낮아지는 식으로 영향을 받기 때문이다.

    그러면 플레이하는 유저 입장에서는 어떤 문제들을 발견하게 될까. 기본적으로 프레임레이트의 하락과 캐릭터의 움직임이 튀는 현상으로 나눠볼 수 있다. 전자의 경우 대부분 서버의 문제라기보다는 클라이언트의 문제일 경우가 많다. 하지만 후자는 대부분 서버의 문제로 일어나는 현상이다. 이렇게 레이턴시가 발생하는 경우, 이를 서버 프로그래머가 줄이기 위해 노력하지만 사실 한계가 명확하다. 이때 레이턴시를 감추기 위한 작업이 이루어진다.

    이러한 작업 기획자와 프로그래머 간의 협업이 필요한 작업인 만큼 기획자가 이해하고 있을 필요가 있다. 예를 들어 레이턴시 때문에 캐릭터의 모션과 사운드, 이펙트, 데미지 처리가 잘 맞지 않는 경우, 레이턴시를 감추기 위해 캐릭터의 모션과 사운드를 클라이언트에서 미리 처리하고, 서버에서는 처리할 필요없이 연출을 보여주는 등 플레이하는 유저가 답답하거나 불편하다는 인식을 하지 않고 플레이할 수 있도록 하는 작업이다.




    그럼 기획자는 서버 프로그래머와 협업할 때 어떤 것들을 알고 있어야 할까. 일반적으로 기획자는 최대 동시접속자 수가 어느 정도인지와 같은 질문을 던진다. 하지만 이는 개발자가 개발하기에 정보가 매우 부족한 질문이다. 서버와 동시접속자 수를 이야기 하기 전에 먼저 서버 개발자에게 전달해야 하는 정보는 게임의 콘텐츠와 장르다. 많은 플레이어가 접속하는 게임이라도, 플레이어가 초당 컨트롤하는 횟수가 적은 게임일 수도 있고, 게임의 방식에 따라서 서버의 설계는 완전히 달라진다.

    또한, 똑같은 게임이라도 해킹 내성에 따라서 서버의 퍼포먼스가 크게 달라질 수 있다. 같은 엔진이라도 탱크처럼 느리지만 튼튼할 수도 있고, 스포츠카처럼 상대적으로 약해도 빠를 수도 있다. 게임 서버도 비슷하다. 해킹에 안전하지만 처리 가능한 동시접속자 수가 적어질 수도 있고 해킹에 취약하지만 많은 접속자를 처리하는 서버로 설계할 수도 있다.

    이러한 과정에서 서버를 하나가 아니라 여러 개로 늘리기도 한다. 유저들로부터 발생하는 과부하를 분산하는 방식인데, 그렇다고 수평분산으로 모든 것을 해결할 수 있는 것은 아니다. 트럭이 백 대가 있다고 해서 백 배 빨라진다는 뜻은 아니니까.

    따라서 게임의 장르에 맞춰서 설계하는 것이 중요하다. 국가별로 서버가 나뉘는지, 글로벌 원서버인지, 게임을 시작하면 서버를 선택하는 리스트가 있는지 등, 어떤 게임으로 정의하느냐에 따라서 서버의 종류가 완전히 달라진다. 그 외에도 게임 안에 월드가 있다면, 전체가 하나의 대륙인지, 각각의 대륙으로 나뉘어있는지, 대륙 내의 각 지역마다 포탈이나 통로가 있는지, 한 지역 내에 동접자는 몇 명까지 구현되어야 하는지, 플레이어가 몇 명까지 다른 유저들을 볼 수 있는지 등까지 자세한 정보 전달이 필요하다.



    ▲정해진 수의 유저만 함께하는지, 수많은 유저가 함께하지만 탑뷰로 처리되는지, 두 명만 보이는지까지,
    서버의 종류는 게임에 따라 달라진다

    이러한 정보가 전달되지 않고 다다익선이라는 단순한 생각으로 접근하게 되면 불필요하게 복잡한 분산서버가 개발되는 문제도 생겨난다. 때때로 개발자 스스로 과욕을 부려 생겨나는 문제기도 하다. 따라서 기획자가 확실하게 방향성을 설정할 필요가 있다. 복잡한 서버설계는 추후 게임을 서비스할 때 정말 큰 문제가 될 수도 있기 때문이다. 배현직 대표는 기획자는 명확한 질문을 던지고, 개발자는 정확한 답변을 던져야 하며, 이렇게 이루어지지 않으면 무언가 잘못되지 않았는지 확인할 필요가 있다고 설명했다.

    또한, 어느 정도까지 지연이 이루어져도 괜찮은지도 서버 개발에 영향을 준다. 예를 들어 ‘포켓몬GO’에서 불특정 다수가 보이는 기본 화면에서는 수많은 플레이어가 등장하지만, 레이턴시가 짧을 필요가 없다. 하지만 다른 유저와 배틀을 즐길 때는 레이턴시가 짧아져야 하는 만큼 다른 종류의 서버로 분리되어 설계된다.

    각 종류의 서버 구축을 위해서는 개발 인원에 따라 벡엔드 서비스를 활용하는 방식으로 해결하기도 한다. 배현직 대표는 이때 사용하는 기술을 선택할 때는 새롭고 혁신적인 기술을 활용하는 것도 좋지만, 사전에 충분히 검증하는 과정을 거쳐야 한다고 강조했다. 개발자 스스로 그 기술에 숙련되어 있는지도 확인해야 하며, 이를 확인하지 않고 신기술이라고 무작정 선택하는 식으로 이루어지면, 서버에 문제가 생길 수도 있다고 설명했다.

    서버 개발자의 작업에 대한 이해도 필요하다. 예를 들어 로그인 처리를 보면, 아주 간단해 보이는 과정 같지만, 개발자 입장에서는 로그인이 구축되기 전까지 많은 사전 작업이 필요하다. 데이터 베이스 서버가 설계되어야 하며, 서버의 기초 설계가 끝난 상태여야 하며, 구글, 페이스북 로그인같은 외부 로그인에 대한 처리도 고려되어야 한다. 이러한 초반에 많은 작업이 들어가는 경우, 충분한 시간이 주어져야 하며, 특히 로그인의 경우 게임에 대한 전체적인 기초 평가에 영향을 주는 만큼 중요하다.



    ▲로그인이 제대로 이루어지기까지 많은 작업들이 필요하다

    어디까지 허용할 것인가에 대한 결정도 필요하다. 해킹과 같은 문제에 대한 부분으로, 절대 해킹되지 않는 게임을 개발하는 것은 이상적이지만, 동시접속자 수 4명 정도만이 가능한 서버가 되어버릴 수 있다. 효율에 맞춰 어디까지 감수할지를 확인해야하며, 미리 정해두는 것이 좋다.

    배현직 대표는 무엇보다도 테스트에 많은 비중을 두고 기간을 배정할 필요가 있다고 강조했다. 서버가 문제가 일으킨다면 서버 개발자의 책임이 50%, 테스트의 책임이 50%라고 할 정도로 큰 영향을 미친다는 것이다.

    서버 개발은 클라이언트와 달리 테스트를 하지 못하고 출시하는 경우가 많다. 10만 명을 처리할 수 있는 서버를 구축했다고 해도, 실제로 10만 명의 유저가 들어와 테스트 해보지는 않은 상태에서 오픈하게 되는 식이다. 이때 실제로 테스트할 수 없더라도, 자동화 테스트와 같이 근접한 방식으로 사전에 테스트해보는 과정을 거치는 것이 좋다.

    자동화 테스트는 서버 부하만이 아니라 커버리지 테스트라는 점에서도 의의가 있다. 동접자가 많아질 때 문제가 생기는 이유는 과부하도 있지만, 그만큼 예상외의 방식으로 플레이하는 유저가 발생할 확률이 높아지기 때문이라는 점도 있다. 해킹이 아니더라도 개발자가 생각지 못한 방식으로 플레이해서 서버를 일으키는 상황이 나타나는 경우가 있다. 자동화 테스트는 단순히 로그인만 하고 들어가는 봇들이 아니라, 수많은 시나리오를 적용한 봇들이 게임에 접속해 여러 가지 활동을 하도록 만들고, 이 속에서 일어나는 문제를 확인하는 과정이다.




    또한, 각 분야의 개발자들이 각각 서버를 띄워볼 수 있도록 개발환경을 구축하는 것이 좋다. 아티스트, 프로그래머 등 모든 개발자가 하나의 공용 서버를 사용하는 경우, 각자 작업한 부분을 적용할 때마다 게임 서버에 변화가 이루어져야 하고, 매번 패치가 이루어져 다른 개발자들이 작업하지 못하는 문제가 생겨나기 때문이다.

    모바일 게임은 또 다른 문제도 고려되어야 한다. PC 게임은 모든 사용자가 동일한 서버를 사용하도록 강제할 수 있다. 하지만 모바일의 경우 마켓마다 업데이트 승인에 걸리는 시간이 달라서 구글플레이 유저보다 앱스토어 유저의 버전이 뒤떨어지는 경우가 종종 발생한다. 이때 개발자는 안정적인 게임 서비스를 위해 인접한 버전이 서로 호환되도록 구성해야 하며, 프로듀서 입장에서도 이를 체크해 중요한 데이터 변화나 신규 콘텐츠를 추가할시 내부에서 추가 작업이 이루어진 후에 진행하는 등 협업이 이루어지도록 해야 한다.

    마지막으로 배현직 대표는 게임은 하나의 제품이 아니며, 계속해서 이루어지는 서비스임을 강조했다. 출시 이후 어느정도 서버에 안정화가 이루어진다고 하더라도, 이후 업데이트가 이루어지면 다시금 안정화 작업이 필요하며, 결국 서버 안정화는 게임 서비스가 끝날 때까지 계속 작업해나가야 하는 문제라는 것이다. 배현직 대표는 게임은 한번 서비스하면 지속적으로 바뀌어야 하는 서비스로, 서버 안정화는 계속 싸워나가야 할 문제라며, 강연을 마무리했다.


    11월 14일부터 11월 15일까지 벡스코 제2전시장에서 진행되는 인벤게임컨퍼런스(IGC X G-CON) 취재 기사는 아래 링크에서 확인할 수 있습니다. ▶ IGC X G-CON 2019 뉴스센터: http://bit.ly/33N9vYU

    댓글

    새로고침
    새로고침

    기사 목록

    1 2 3 4 5