넥슨이 주최하는 국내 최대 규모의 게임 개발자 콘퍼런스 '넥슨 개발자 콘퍼런스'가 6월 16일부터 18일까지 사흘간 판교 넥슨 사옥에서 개최됐다. 게임 개발 전반의 노하우가 공유되는 가운데, 넥슨게임즈는 자사 대표 루트 슈터 '퍼스트 디센던트' 개발 과정에서 축적한 서버 기술의 진화 과정을 공개해 개발자들의 관심을 모았다.

17일 진행된 프로그래밍 세션에서는 넥슨게임즈 매그넘 스튜디오 프로그램실 서버팀을 이끌고 있는 장주한 부실장이 '별을 잇다 - SPICA : 쌍성에서 우주까지, 게임서버의 진화'를 주제로 발표를 진행했다.
이번 발표는 NDC 2021과 2022에서 소개됐던 서버 최적화 기술 'SPICA'가 실제 라이브 서비스에 적용되며 어떤 성과와 한계를 마주했는지, 그리고 이를 극복하기 위해 어떤 방향으로 발전하고 있는지를 다룬 후속편 성격의 강연이었다.
루트 슈터 기반 협동 게임은 구조적으로 많은 서버 자원을 요구한다. 수십, 수백 명의 이용자가 동시에 접속하고, 수백 마리의 몬스터가 등장하며, 대규모 전투가 끊임없이 발생한다. 문제는 몬스터 수가 늘어날수록 서버의 연산 비용 역시 비례해 증가한다는 점이다.

장 부실장은 이러한 문제를 해결하기 위해 고안된 기술이 바로 'SPICA'라고 설명했다. SPICA는 처녀자리의 알파성으로 알려진 쌍성계 이름에서 가져온 기술명이다. 서로 다른 두 개의 별이 하나처럼 움직이는 것처럼 서버와 클라이언트가 마치 하나의 시스템처럼 동작하도록 만드는 것이 핵심 아이디어다.
기존 온라인 게임에서는 몬스터 AI와 행동 계산 대부분을 서버가 담당한다. 반면 SPICA는 일부 몬스터 연산을 클라이언트에 위임함으로써 서버 부담을 줄인다.
이를 위해 SPICA는 세 가지 핵심 구성 요소를 사용한다.

'서브 네트워크(Sub Network)'는 클라이언트가 서버가 되어 새로운 네트워크를 구성하는 기술이다. 홀펀칭 기술 등을 활용해 데디 서버의 요청으로 구축되며, 독립된 라인이기 때문에 기존 동작에 영향을 주지 않고 파괴도 간편하다. '액터 커맨드(Actor Command)'는 캐릭터나 몬스터 같은 액터 단위로 연산 권한을 안전하게 넘기고 받는 메시지 제어 시스템이다. AI, 최적화, 게임 로직 등을 담당하는 어시스턴트를 통해 단계별로 처리된다. 마지막으로 'SPICA RPC'는 권한을 위임받은 곳에서 실시간으로 원격 프로시저를 실행할 수 있도록 지원하며, 언리얼 엔진 고유의 RPC와 호환성을 유지한다.
실제 실험 환경에서는 이 구조를 통해 서버 성능이 크게 향상되는 결과를 얻었다. 특히 월드 틱 비용이 약 3.7배 눈에 띄게 감소하며 서버 처리 효율이 개선됐다.

그러나 실제 라이브 서비스 환경은 예상보다 훨씬 복잡했다. 클라이언트의 CPU 성능과 네트워크 환경이 제각각이고, 이용자들의 플레이 패턴 역시 개발 단계에서 예상했던 것과 달랐다. 광역 공격 중심의 전투가 일반화되면서 몬스터가 위임된 직후 빠르게 처치되는 경우가 많아졌고, 위임 시간이 생각보다 길게 유지되지 못했다.
이러한 현실적인 문제를 해결하기 위해 다양한 확장 기능을 추가했다. 대표적인 사례가 'SPICA 멀티 월드'다. 하나의 프로세스 안에서 여러 개의 월드를 동시에 운영할 수 있도록 만든 구조로, CPU 자원을 보다 효율적으로 활용할 수 있다. 발표에 따르면 6개 월드를 운영하는 환경 기준 약 48% 수준의 메모리 절감 효과를 확인했다.
또 다른 기능인 'SPICA 클라이언트 패스트 트래블'은 동일한 형태의 맵을 이동할 때 불필요한 언로드·로드 과정을 생략하고 필요한 데이터를 미리 스트리밍함으로써 이동 시간을 단축했다.
라이브 서비스 적용 과정에서는 다양한 안전장치도 함께 설계됐다. 특정 맵에서만 동작하도록 제한하고, 일정 수준 이상의 CPU 성능을 갖춘 클라이언트에만 위임 기능을 활성화했다. 또한 플레이어와 150m 이내에 위치한 일반 몬스터만 위임 대상으로 지정하고, 네트워크 지연이나 타임아웃이 발생할 경우 즉시 서버가 권한을 회수하도록 구성했다.
그 결과 1년 이상 라이브 서비스를 운영하는 동안 SPICA 관련 장애는 단 한 건도 발생하지 않았으며, 평균적으로 서버 부하를 5~10% 수준 줄이는 효과를 거둔 것으로 나타났다.

발표 후반부에서는 차세대 기술인 'SPICA Satellite'와 'SPICA Cosmos'가 공개됐다.
SPICA Satellite는 기존처럼 이용자 PC에 의존하지 않고 별도의 헤드리스 클라이언트 프로세스를 서버 측에서 직접 실행하는 개념이다. 필요할 때 프로세스를 생성해 몬스터 연산을 처리하고, 작업이 끝나면 종료하는 방식이다.

장 부실장은 이를 "우리가 통제할 수 없는 클라이언트 대신 우리가 직접 띄운 클라이언트를 사용하는 개념"이라고 설명했다. 이를 통해 클라이언트 성능이나 이용자 플레이 스타일에 영향을 받지 않고 보다 안정적으로 연산을 위임할 수 있게 됐다.
클라이언트 위임 방식과 달리, 새틀라이트는 항상 동작하며 몬스터가 죽을 때까지 안정적으로 오래 위임 상태를 유지할 수 있다. 또한 서버급 성능을 보장받기 때문에 데디 서버 단독으로는 서비스가 불가능했던 ‘유저 4명, 몬스터 1,000마리’ 환경에서도 월드 틱을 23.7ms(약 42 FPS) 수준으로 안정화하는 데 성공했다.

이어 공개된 SPICA Cosmos는 한 단계 더 나아간 개념이다. 하나의 서버가 모든 것을 처리하는 것이 아니라 여러 서버를 서로 연결해 거대한 월드를 구성하는 구조다. 서버 간에도 SPICA의 핵심 기술인 서브 네트워크, 액터 권한 이전, RPC 시스템을 그대로 활용해 정보를 전달하고 권한을 이동시킨다.
코스모스 모드로 동작하는 새로운 넷드라이버(SPICANetDriver)는 서버가 다른 데디 서버에 클라이언트처럼 접속하여 한 방향으로 연결을 진행한다. 이를 통해 양방향 연결을 구축하고 서버 간에 정보를 주고받으며 권한을 넘기는 핸드오버 과정을 구현했다. '코스모스 어시스턴트'를 통해 핸드오버 실패 시 롤백 레이어까지 갖췄다.

발표에서는 서버 간 자연스러운 이동과 실패 시 롤백 구조, 다중 월드 상호작용 등이 소개됐다. 장 부실장은 이를 통해 대규모 오픈월드, 랜덤 매칭, 관전 시스템, 채널 이동, 심지어 서버 간 위상 분리까지 다양한 형태로 확장이 가능하다고 설명했다.
장주한 부실장은 발표를 마무리하며 "처음 SPICA를 만들 때는 위성(Satellite)도, 우주(Cosmos)도 계획에 없었다"며 "하지만 필요한 부품들은 이미 그 안에 존재하고 있었다"고 말했다.
이어 "쌍성은 이미 라이브에서 돌고 있고, 위성은 완성됐으며, 이제는 우주까지 별을 잇고 있다"며 "꿈은 크고 서버는 더 크다. SPICA의 여정은 계속될 것"이라고 밝혔다.
[홍이표 기자 siriused@chosun.com] [gamechosun.co.kr]
ⓒ기사의 저작권은 게임조선에 있습니다. 허락없이 무단으로 기사 내용 전제 및 다운로드 링크배포를 금지합니다.



