혹시 게임을 자주 하는가? 게임에 별로 관심이 없더라도, <스트리트 파이터>나 <철권> 같은 이름은 들어보았을 것이다. 둘 다 소위 ‘싸우는 게임’에 속하는 작품이며, 공식 장르명으로는 ‘대전 격투 게임’이라 부른다. 전 세계적으로 인기인 <리그오브레전드>나 <오버워치> 같은 게임과는 달리 격투 게임 장르는 기본 1대 1 대결로 이루어진다. <출처: 작가 캡처, 편집> 과거 격투 게임은 오락실에서 즐기는 장르였으나 점차 거실 게임기로 이동했고, 현재는 온라인으로 대전하는 것이 기본으로 자리 잡았다. 인터넷만 연결되어 있으면 언제든지 전 세계 유저들과 메타버스 주먹다짐을 할 수 있다. 다만 이런 온라인 대전에서는 인터넷 속도가 필연적으로 발목을 잡는다. 집에 초대한 친구와 함께 같은 게임기로 대전하는 것과 달리, 온라인은 네트워크를 거치기 때문에 입력에 지연이 발생하기 때문이다. 줌 미팅에서 대화 리듬이 미묘하게 어긋나는 느낌과 비슷하다. 격투 게임에서 네트워크 지연 문제는 오랫동안 ‘어쩔 수 없는 문제’로 치부되다가, 롤백 넷코드라는 기술이 도입되면서부터 극도의 개선이 이루어졌다. 이번 글에서는 ‘롤백 넷코드’가 무엇인지, 어떻게 등장하게 되었는지 살펴보고자 한다. *롤백 넷코드가 격투 게임에서만 사용되는 기술은 아닙니다. 하지만 격투 게임 장르에서 특히 활발히 사용되므로 본 글에서는 격투 게임에 한정해 이야기합니다.**설명에 활용되는 일부 예시가 게임의 실제 데이터와 상이할 수 있는 점 참고 부탁드립니다. 이해를 돕고자 일부 단순화한 부분이 있습니다. 1. 롤백? 넷코드?<출처: 작가> 일단 나와 같은 비개발자분들을 위해 롤백이 뭐고 넷코드가 무엇인지부터 알아보자. 롤백(Rollback)은 쉽게 말해 되감는 것을 뜻한다. 동료 개발자들이 깊은 한숨을 쉬며, “롤백합시다”라고 말하는 모습을 본 적 있는가? 예를 들어, 서비스에 새 기능을 추가했는데 미처 발견하지 못한 버그가 발생했다고 치자. 서비스가 먹통이 되어버리는 치명적 버그다. 이 경우 버그를 수정하기보다 (일단 먹통 사태를 해결하는 것이 중요하므로) 아예 기능을 추가하기 전 상태로 되돌릴 때가 있다. 이것이 롤백이다. 없던 일로 하는 것이다. 넷코드(Netcode)는 온라인 게임에서 소위 말하는 ‘렉’을 줄이기 위해 거치는 클라이언트와 네트워크의 동기화 과정을 말한다. 예를 들어, 내가 게임 내에서 몬스터를 잡았다면, 내가 몬스터를 잡는 모습이 내 화면뿐만 아니라 다른 유저들의 화면에도 표시되어야 한다. 그리고 그 표시가 거의 동시에 이루어져야 한다. 그렇지 않으면 ‘온라인 유저들과 함께 플레이하고 있다’라는 감각이 훼손된다. 줌 미팅 중 내가 웃었을 때, 웃는 모습이 다른 사람 화면에 최대한 지연 없이 보여야 하는 것과 같다. 넷코드가 좋을수록 나와 타 유저들 사이에 지연이 적어진다. 그래서 이 두 단어를 합쳐보면 롤백 넷코드란 ‘되감는 넷코드’ 정도로 직역할 수 있다. 그럼 결국 핵심 질문은 “넷코드의 무엇을/어떻게/왜 되감나요?”가 된다. 이를 이해하기 위해 격투 게임이 온라인 환경에서 겪는 어려움부터 살펴보자. 2. 격투 게임이 온라인에서 겪는 문제<출처: 작가 편집> 오락실에서 상대방과 1:1 대전을 할 때는 입력 지연을 신경 쓸 필요가 없다. 두 사람 모두 같은 공간에서 같은 기계를 조작하는 것이기 때문이다. 캐릭터의 펀치와 발차기 모두 ‘버튼을 누르는 즉시’ 화면에 반영된다. 이는 오락실이 아닌 가정용 게임기도 그렇다. 버튼을 누르면 화면 속 캐릭터가 즉각 움직인다. 이 기본 원칙이 철저하게 보장됨으로써 게임의 재미가 약속된다. 문제는 대전이 온라인으로 이루어질 때다. 온라인으로 게임할 때는 상대방과 나의 기계가 분리되어 있으므로, 내가 발차기 버튼을 눌렀다는 사실이 상대방 측에도 전달되어야 한다. 그러나 나의 게임기와 상대방 게임기는 같은 공간에 있지 않다. 즉, 내가 발차기 버튼을 눌렀다는 신호가 랜선을 타고 서버나 상대방 게임기에 도달하는 데 시간이 걸린다. 예를 들어, 나는 경기도에 있고 상대방은 뉴욕에 있다면, 지연시간이 200~300ms(0.2~0.3초) 이상 발생한다. 발차기 버튼을 눌렀는데 내 캐릭터가 0.3초 기다렸다가 발차기하는 것이다. 0.2~0.3초가 뭐 대수냐고 생각할 수 있지만, ‘누른 동시에 움직인다’라는 감각은 섬세하다. 0.1초의 지연만 있어도 느낄 수 있다. 사람이 눈을 깜빡이는 속도가 대략 0.1초라고 한다. 키보드로 글을 쓰는데 자판을 누르고 눈을 한 번 깜빡거려야 입력된다고 상상해 보자. 꽤 답답할 것이다. 지연이 0.1초면 그나마 낫지, 0.2~0.3초를 넘어가는 순간 ‘상대방과 대결하고 있다’라는 현실감은 점점 떨어진다. 격투 게임은 장르 특성상 이러한 지연에 민감할 수밖에 없다. 예를 들어, 온라인 고스톱이라면 입력 지연이 어느 정도 있다 해도 큰 문제없다. 패를 눌렀을 때 화면이 반응하기까지 무려 1초가 걸린다 해도, 쾌적한 느낌은 없겠지만 점수를 따는 데는 아무 지장이 없다. 고스톱은 상황에 맞게 패를 내는 전략이 중요하지, 민첩함으로 승부를 겨루는 게임은 아니기 때문이다. 그러나 상대방의 메타버스 주먹질에 순간적으로 반응해야 하는 격투 게임은 다르다. ‘입력 후 얼마나 빠르게 반응하는가?’는 쾌적함을 넘어 승패를 좌우하는 요소다. 계속해서 앞뒤로 스텝을 밟다가, 점프하며 펀치를 휘두르고 장풍을 피한 뒤 발차기 콤보로 상대방을 걷어차야 한다. 게임기 버튼이 나의 팔다리 역할을 하는 것인데, 안타깝게도 인터넷 속도가 아무리 빠르다 한들 지연이 발생하는 것은 물리적으로 어쩔 수 없다. 그렇다고 온라인 대전을 포기하기에는 ‘전 세계인들과 1:1 승부를 겨룬다’라는 재미가 너무 크다. 여기서 구세주 역할을 하는 것이 바로 롤백 넷코드다. 3. 롤백 넷코드의 개념과 작동 방식<출처: 작가 캡처, 편집> 롤백 넷코드는 위에서 직역한 대로 ‘되감는 넷코드’다. 정확히는 ‘예측이 틀렸을 경우 다시 되감아서 수정하여 온라인 대전의 렉을 크게 줄여주는 넷코드’다. 갑자기 예측이라는 단어가 등장해 당황스러울 수 있으니 풀어서 설명해 보겠다. 롤백 넷코드는 한 가지 가정을 기반으로 작동한다. 바로 ‘상대방은 동일한 행동을 앞으로도 계속할 것’이라는 가정이다. 예를 들어, 상대방 캐릭터가 가만히 서 있다면, 계속해서 가만히 서 있을 것이라 예측한다. 그리고 그 예측을 그대로 화면에 노출한다. 상대방의 입력 신호가 올 때까지 기다리지 않는다. 내가 입력한 움직임도 네트워크 확인을 기다리지 않고 그대로 표시한다(대신 서로의 입력 정보를 네트워크로 계속 전달하기는 함). 즉, 내 움직임은 입력하자마자 표시하고, 상대방 움직임은 예측을 기반으로 하니 유저 입장에서는 지연을 느끼지 않는다. 문제는 상대방의 행동에 변화가 생겼을 때다. 만약 서 있다가 갑자기 펀치를 날렸다면? 그러면 ‘계속 서 있는다’라는 예측과 ‘펀치를 날렸다’라는 사실이 충돌하게 된다. 이때 등장하는 것이 되감기다. 내 화면에는 상대방이 계속 서 있는 모습을 표시하다가, 예측과 충돌하는 지점이 발생하면 그 즉시 수정하는 것이다. 상대방 캐릭터는 더 가만히 서 있지 않고 펀치를 내지르는 동작을 취하게 된다. 예를 들어, 캐릭터가 펀치를 날리는 애니메이션이 총 0.3초 소요된다고 해보자. 과거에는 펀치 버튼을 눌러도 양쪽 게임기에 해당 사실이 전달된 이후에야 펀치를 날렸다. 펀치 애니메이션이 재생되기 전, 네트워크 지연시간을 온전히 기다려야 했기 때문에 “아, 렉 걸리네”라는 느낌을 받은 것이다. 롤백 넷코드가 ‘계속 서 있는다’라는 예측을 화면에 표시하는 도중, “사실 상대방이 0.1초 전에 펀치를 날렸어!”라는 신호를 수신했다고 하자. 이 경우 펀치 애니메이션을 모두 재생하지 않고, 지연된 만큼의 애니메이션 프레임을 건너뛴다. 0.3초짜리 펀치 애니메이션의 경우 지연된 만큼의 프레임 0.1초를 건너뛰어, 마지막에 때리는 동작까지의 소요 시간을 맞추는 식이다. 결국 가장 중요한 것은 ‘펀치가 맞았냐, 안 맞았냐’이므로, 마지막 ‘때리는’ 프레임에 도달하기 위한 중간 프레임을 일부 건너뛰는 것이다. <출처: 작가 캡처, 편집> “그렇게 애니메이션 프레임을 건너뛰면 게임이 이상해 보이지 않나?”라는 의문이 들 수 있다. 그러나 우리 눈은 0.1초 삭제된 프레임까지 알아차릴 정도로 예리하지 않다. 위 GIF 애니메이션을 보라. 1배속 버전에서 프레임 하나가 빠진 것을 눈으로 확인하기란 쉽지 않다. 버튼 반응이 0.1초 느린 것은 느낌이 온다. 하지만 격투 게임처럼 정신없는 상황에서 애니메이션 프레임 한두 개 건너뛴 것은 알아차리기 어렵다. ‘손은 눈보다 빠르다’라는 영화 대사도 있지 않은가. 롤백 넷코드는 이렇게 예측/사실의 수정을 끝없이 반복하여 렉을 줄인다. 정확히 말하면 렉을 줄인다기보다는 렉이 걸리는 느낌을 상쇄한다. 네트워크 환경 자체를 개선하려는 접근보다는 동작 애니메이션을 일부 생략함으로써, ‘실시간으로 싸우고 있다’라는 감각을 구현한 것에 가깝다. 4. 이제는 롤백 넷코드가 아니면 안 된다<이미지 출처: They Actually Did It...ROLLBACK NETCODE For Guilty Gear Strive> 토니 캐넌(Tony Cannon)이라는 개발자가 있다. 그는 세계 최대 격투 게임 대회 중 하나인 EVO(Evolution Championship Series)의 공동 설립자이며, 현재는 <리그오브레전드>로 유명한 라이엇 게임즈에서 새로운 격투 게임 제작을 이끌고 있다. 그는 2009년에 GGPO라는 SDK(Software Development Kit)를 하나 개발했는데, 이 SDK가 롤백 넷코드의 시작점이다. 물론 90년대부터 이미 롤백 넷코드 개념이 사용된 경우가 있지만, 격투 게임 장르에서의 시작은 GGPO라고 봐도 좋다. 현재 이 SDK는 MIT 라이선스를 기반으로 오픈소스가 되었고, 많은 회사들이 해당 SDK 코드를 자신들의 게임에 맞춰 내재화하는 방향으로 흘러가고 있다. 최근 격투 게임들의 마케팅 자료를 보면, ‘롤백 넷코드 도입!’이라는 문구가 자주 보인다. 사실 게임 마케팅에서 특정 기술을 언급하는 경우는 흔치 않다. 재미 포인트에 100% 집중하는 것이 일반적인데, 그만큼 격투 게임에서 롤백 넷코드 유무가 판매량에 영향을 주게 되었다는 사실을 알 수 있다. 심지어 새로 개발되는 게임의 경우 롤백 넷코드에 영향을 줄 만한 디자인을 설계 단계에서 배제하는 경우도 늘어나고 있다. 흥미로운 것은 20년도 더 된 작품에 롤백 넷코드를 탑재해 부활시키는 경우도 있다는 점이다. 예를 들어, 2000년대 초에 발매된 <마블 vs 캡콤 2>라는 격투 게임이 있다. 이 게임은 온라인 대전을 지원했지만 절대 쾌적하다고 말하기 힘들었다. 온라인보다는 친구와 둘이 대전하는 것이 일반적인 작품이었다. 그렇게 영원히 추억으로만 남을 줄 알았으나, 2024년 9월에 (다른 게임들과의 합본 형식으로) 재발매되었다. 단순히 최신 하드웨어 사양에 맞춰 재발매를 한 것에서 끝나지 않고, 온라인 대전용 넷코드를 롤백 넷코드로 교체까지 해준 것이다. 덕분에 추억의 게임을 전 세계인들이 다 함께 쾌적하게 즐긴다는 명제가 성립되었다. 어린 시절 친구와 나란히 대전했던 경험을 온라인에서 되살리기 위해서는 쾌적한 대전이 무엇보다 중요했고, 롤백 넷코드가 그 바람을 현실화해 주었다. 효과적인 기술이 수많은 유저들의 추억을 되살려주는 감동적인 케이스였다. 뛰어난 기술은 문화를 만든다. 나는 이제 롤백 넷코드가 기존의 온라인 대전 경험을 개선해 주는 존재를 넘어, 격투 게임에 없으면 안 될 기술에 이르렀다고 생각한다. 새로 공개된 격투 게임에 대해 팬들이 “이거 롤백 넷코드임?”이라며, 온라인 환경을 확인하는 행동은 이제 일반적인 일이 되었다. 나 또한 격투 게임을 즐겨하는 사람으로서 이제 롤백 넷코드 작품이 아니면 별로 플레이하고 싶지 않다. 왜냐하면 롤백 넷코드가 아니면 우리나라 유저들하고만 (그중에서도 인터넷 상태가 괜찮은 사람하고만) 대전해야 하고, 그렇게 되면 나와 비슷한 실력의 상대를 찾기가 힘들어지기 때문이다. 물론 남미 지역에서 공공 와이파이를 빌려 게임하는 사람과의 대전에서까지 쾌적함을 바라지는 않는다. 그러나 비행기 타고 15시간 이내로 갈 수 있는 지역의 유저들과는 신나고 쾌적하게 대결하고 싶다. 결론: 모든 것은 유저 경험을 위해<내용 정리>롤백은 이전 상태로 되감는 것을 말하며, 넷코드는 온라인 게임의 렉을 줄이기 위해 거치는 클라이언트와 네트워크의 동기화 과정을 말한다.격투 게임은 장르적 특성상 0.1초 단위의 지연이 체감될 수밖에 없다.롤백 넷코드는 예측과 사실을 끊임없이 맞춰나가는 방식으로, 네트워크 환경을 개선하기보다는 동작 애니메이션을 생략해 ‘실시간으로 싸우고 있다’라는 감각을 구현한 것에 가깝다.롤백 넷코드는 이제 격투 게임의 표준으로 자리 잡아가고 있다. 롤백 넷코드가 만능은 아니다. 인터넷 연결 상태가 심하게 안 좋으면 예측과 실제가 맞춰지는 시간이 오래 걸리고, 오래 걸릴수록 화면 속 캐릭터들의 애니메이션이 눈에 띌 정도로 생략된다. 특히 롤백 넷코드에 맞춰지지 않은 고전 게임들은 더욱 그렇다. 동작 애니메이션을 수정하는 방식이 대전의 공정성을 해친다고 말하는 사람들도 있다. 거기에 게임사의 개발비 상승 측면도 무시하기 어렵다. 그럼에도 불구하고 롤백 넷코드는 격투 게임의 표준으로 자리 잡아가고 있다. 그 이유는 결국 유저 경험이 워낙 탁월해서일 것이다. ‘전 세계 사람들과 실력을 겨루고 싶다’라는 단순한 명제는 오래전부터 사람들의 바람이었고 구현이 되었었지만 쾌적하지 못했다. 네트워크 지연이 진짜 실력을 발휘하는 데 걸림돌이 되었다. 실체가 있었지만 경험이 훌륭하지 못했다. 롤백 넷코드는 그 어설픔을 갈아치워 주었다. 나는 롤백 넷코드를 처음 경험했을 때 어떤 해방감까지 느꼈다. 발상의 전환으로 문제를 해결한 예시가 내 취미와 맞닿아있다는 사실이 기쁠 따름이다. 머지않아 격투 게임 마케팅 자료에서 ‘롤백 넷코드’라는 이름이 너무 당연해져서 아예 사라질 것 같다는 생각도 든다. ©️요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.