난수 생성기(RNG)란 무엇인가?
난수 생성기(Random Number Generator, RNG)는 이름 그대로 숫자가 필요할 때마다 무작위 값을 얻는 과정을 말합니다. 핵심은 이전에 생성된 숫자들로부터 어떠한 패턴도 찾을 수 없어야 한다는 점입니다. 이 숫자는 알고리즘이나 하드웨어 장치를 통해 생성되며, 예측 가능한 결과를 피하는 데 매우 중요한 역할을 합니다. 마치 지구에서의 우리 삶과 같습니다. 다음 순간에 무슨 일이 일어날지 아무도 모르듯이, 우리 각자의 'RNG 컨트롤러'가 어디에 있는지도 알 수 없기 때문입니다.
난수 생성 알고리즘은 특히 비디오 게임에서 널리 사용됩니다. 플레이할 때마다 매번 다른 결과가 나오도록 만들어 주는 것이죠. 같은 레벨을 반복해서 플레이해도 미션이 완전히 똑같지 않다는 점을 눈치채신 적이 있을 겁니다. 맵의 위치나 미션 요구 사항은 그대로지만, 등장하는 적의 수와 스폰 위치, 기후 변화, 도중에 나타나는 장애물들이 달라집니다. 바로 이 점이 게임을 더욱 중독성 있고 흥미진진하게 만드는 요소입니다. RNG가 없다면 몇 번만 플레이하면 다음에 벌어질 일을 예측할 수 있게 되어 게임은 금방 지루해질 것입니다.
단순해 보이지만, 사실 컴퓨터가 코딩된 정밀한 명령어를 따르면서 난수를 생성하는 것은 결코 쉬운 일이 아닙니다.
트루 RNG vs 유사 RNG
난수 생성기에는 크게 두 가지 종류가 있습니다. 바로 '트루 RNG(True RNG)'와 '유사 RNG(Pseudo RNG)'입니다.
트루 난수 생성기(True RNG)
트루 난수 생성기는 하드웨어 장치를 활용하여 극도로 미세한 물리적 현상을 통해 난수를 생성합니다. 알고리즘이 작성된 것이 아니기 때문에, 트루 RNG는 해킹으로 예측 가능성을 파악하는 것이 불가능합니다. 이런 특성 덕분에 전 세계 보안 중심 시스템과 일부 암호화 기술에서 표준적으로 사용되고 있습니다.
유사 난수 생성기(Pseudo RNG)
유사 난수 생성기는 보안이 크게 중요하지 않은 분야, 즉 반복을 방지하고 최종 사용자에게 더 재미있는 경험을 제공하기 위해 무작위성이 활용되는 영역에서 쓰입니다. 하드웨어가 필요 없고 소프트웨어 프로그래밍 코드에 쉽게 통합할 수 있어 구현 비용이 저렴하고 속도도 빠릅니다. 물론 이 방식은 완전한 무작위가 아니라 알고리즘에 기반한 것이지만, 게임과 프로그램에는 오히려 더 적합합니다.
어떤 애플리케이션이 난수 생성기를 사용할까?
모든 게임이 난수 선택기를 사용하는 것은 아닙니다. RNG가 없는 게임은 경쟁성이 떨어지고 지루해지기 쉽죠. 반면 최신 게임들은 대부분 난수 선택기를 포함하고 있습니다. 무작위성 덕분에 흥미와 재미를 얻을 수 있는 대표적인 분야들을 살펴보겠습니다.
도박 게임: 빙고, 카드 게임, 복권 등 결과가 순전히 운에 좌우되는 게임들이 여기에 해당합니다.
전리품(루팅) 수집 게임: 배틀그라운드(PUBG), 디아블로, 보더랜즈처럼 플레이어가 게임 내에서 아이템을 수집해야 하는 모든 게임이 RNG를 사용합니다. 매번 더 좋은 아이템을 얻을 수 있다는 가능성이 사람들을 이 게임들에 몰입하게 만드는 핵심 동력입니다.
어드벤처 게임: 마리오나 포켓몬 같은 게임은 난수 생성 알고리즘을 통해 어떤 아이템을 획득할지, 어떤 새로운 포켓몬 상대를 만날지 매번 결정합니다.
절차적 생성(Procedural Generation) 게임: 마인크래프트나 문명 시리즈처럼 사전에 설계된 맵과 레벨이 없고, 절차적 프로그래밍 기법으로 게임 내에서 세계를 생성하는 게임들입니다. 알고리즘 하나로 게임 전체를 만들어낼 수 있게 해줍니다.
경쟁 게임: 카운터 스트라이크 같은 일부 경쟁 게임은 탄환이 목표물에 어떻게 명중하는지 조절하기 위해 난수 생성 알고리즘을 사용합니다.
좀 더 구체적인 예시로 디디콩 레이싱(Diddy Kong Racing)을 들어볼 수 있습니다.
이 게임을 해본 적이 있다면 드래곤 포레스트 맵과 오버월드 맵 중 하나를 로딩하는 선택 구간을 기억할 겁니다. 겉보기에는 무작위 선택처럼 느껴지고 어디로 이동할지 통제할 수 없어 보이죠. 하지만 북미 버전의 게임이라면 항상 오버월드 맵으로 이동하게 됩니다. 즉, 이 지점에서는 실제로 난수 선택기가 전혀 작동하지 않는 것입니다.
게임 외적으로도 개발자와 코더들은 전 세계적으로 자바스크립트 난수 코드를 활용해 자신들의 프로그램에 난수 생성기를 구현합니다. 구글 역시 자바스크립트 난수 이론에 기반한 흥미로운 자체 도구를 운영 중인데, 이 도구로 무작위 숫자를 손쉽게 생성할 수 있습니다. 친구나 가족과 게임을 하다가 컴퓨터에게 숫자 추첨을 맡기고 싶을 때 아주 유용합니다.
스피드런에서의 RNG
스피드런(Speed Run)은 게이머들 사이에서 쓰이는 용어로, 게임을 최대한 빠른 시간 안에 클리어하는 것을 의미합니다. 스피드러너들은 클리어 시간을 단축하기 위해 혹독한 연습을 거듭하지만, RNG는 언제나 변수를 만들어 게임 완료를 지연시킬 수 있습니다. 반대로 운이 좋다면 도전 과제가 쉬워지고, 게임을 훨씬 빠르게 완료할 수도 있습니다. RNG는 스피드런에게 양날의 검인 셈입니다.
RNG 조작이란?
앞서 트루 RNG와 유사 RNG의 차이를 살펴봤습니다. 게임에서는 알고리즘에 기반한 유사 RNG가 사용된다는 점도요. 일부 지나칠 만큼 열정적인 게이머들은 에뮬레이션 유틸리티를 활용해 게임을 분석하고 허점을 찾아내며, 난수 생성 알고리즘이 적용된 게임조차 결과를 조작할 수 있음을 발견했습니다.
알고리즘 기반 RNG는 특정 요소들의 조합으로 이루어진 '시드(seed)'를 사용해 게임 내 결과를 생성합니다. 이것은 응용된 수학의 법칙입니다. 1+1이 언제나 2이듯, 원하는 결과를 가져오는 게임 내 요소들을 파악한다면 언제든 동일한 결과를 얻을 수 있습니다. 예를 들어, 특정 캐릭터를 특정 파워업과 함께 선택했을 때 보스전이 쉬워진다면, 이 패턴은 고정적이며 같은 선택을 한 모든 사람이 같은 결과를 얻게 됩니다. 하지만 평범한 게이머에게는 이런 조작이 불가능하기에, 유사 RNG는 언제나 진짜 무작위처럼 느껴지는 것입니다.
게이머들은 왜 RNG를 싫어할까?
게이머는 크게 경쟁 플레이어, 스피드러너, 그리고 평균적인 플레이어로 나눌 수 있습니다. 게임 기술과 조작법을 완벽히 마스터한 경쟁 플레이어는 순수하게 실력으로 승부하고 싶어 하며, 결과가 난수 선택기의 영향을 받는다면 당연히 분노할 것입니다. 마찬가지로 스피드러너는 게임을 최대한 빨리 끝내길 원하는데, 난수 생성 알고리즘은 매번 예측 불가능한 돌발 상황을 만들며 브레이크를 걸어버립니다.
이상적으로 게이머들은 게임플레이 전체와 결과를 자신의 통제 아래 두기 위해 게임에서 RNG를 마주치는 횟수를 최소화하고 싶어 합니다. 하지만 이는 어느 정도까지만 가능한 일이죠. 수많은 시간을 들여 캐릭터와 조작법을 연마한 게이머일수록, 무작위적인 요소 하나로 치밀하게 짜놓은 전략이 무너질 때 가장 큰 좌절감을 느낍니다. 때로는 축복처럼 작용하기도 하지만, 대체로는 저주에 가깝습니다.
그럼에도 난수 선택기는 게임이 단조로워지는 것을 막고 호기심과 리스크라는 요소를 불어넣는 유일한 장치입니다. 가장 많이 즐기는 게임 중 하나인 테트리스를 생각해 보세요. 매번 위에서 무작위 블록이 떨어지기 때문에 성립하는 게임입니다. 만약 항상 같은 블록 패턴만 나온다면, 그것은 전략 게임이 아니라 기억력 게임에 가까워질 것입니다.
RNGesus(알엔지esus)는 누구인가?
재미나 시간 때우기 위해 게임을 하는 평균적인 플레이어는 승패에 크게 신경 쓰지 않습니다. 하지만 숙련된 프로 플레이어들은 단순히 운이 따르지 않았다는 이유로 지는 것을 참지 못합니다. 자주 지는 게이머들은 자신의 패배를 상대에게 유리하게 작동한 '사악한 RNG' 탓으로 돌리곤 하죠. 그리고 어디에 사악함이 있다면, 그곳에는 반드시 신이 있어야 마땅합니다. 바로 'RNGesus'입니다.
전 세계 게이머들 사이에서 생겨난 이 신조어는 'Jesus(예수)'를 변형한 말장난입니다. 현실 세계에서 예수 그리스도가 우리의 구원자로 여겨지듯, RNGesus는 게이머들을 RNG의 부정적 영향으로부터 구원해 줄 상상 속 존재로 만들어졌습니다. 어디에서도 존재의 증거는 없지만, 하나의 미신으로 시작해 지금은 게임 커뮤니티 전체에 산불처럼 번져나갔습니다.
RNG에 대한 최종 평가: 좋은가, 나쁜가?
이 질문에 답하기란 쉽지 않으며, 모든 사람에게 똑같은 답이 나올 수도 없습니다. 평균적인 게이머에게는 좋은 요소일 수 있고, 경쟁의 스릴을 즐기는 사람들에게도 환영받지만, 스피드러너들에게는 분명한 방해물입니다. 난수 생성 알고리즘은 같은 레벨을 플레이할 때마다 예측 불가능함과 흥미를 지속시켜 줍니다. 퍼즐, 카드 게임, 롤플레잉 게임 등 수많은 게임에서 다양성을 제공하는 필수 요소가 된 것도 사실입니다. 하지만 실력만이 게임을 클리어하는 유일한 길이라 믿는 게이머들에게 RNG는 그들의 잠재력을 깎아내리고, 예측 못 할 카드를 집어 던지는 존재입니다.
게임은 본래 즐거움을 위해 존재합니다. 좋은 RNG를 만나면 낮은 확률 속에서도 최고의 결과를 얻을 수 있고, 나쁜 RNG를 만나면 게임을 완벽하게 플레이했음에도 최악의 결과를 받을 수도 있습니다. 결국 진실은 이렇습니다. RNG는 그렇게까지 진지하게 받아들일 대상이 아니며, 특히 알고리즘에 기반한 난수 생성기라면 더더욱 그렇습니다.