도시에 차가 몇 대나 다닐 수 있을까? 이 질문에 대한 답은 ‘얼마나 계산할 수 있느냐’에 따라 달라진다. 2024년의 슈퍼컴퓨터라면 실시간으로 수백만 대의 차량을 시뮬레이션할 수 있을 테지만, 1990년대 중반의 25MHz CPU로는 고작해야 수백 대가 한계일 것이다. 그런데 그 한계를 뛰어넘은 게임이 있었다. Pizza Tycoon은 도시의 교통 시스템을 구현하면서, 당시로서는 놀라운 수준의 디테일을 보여주었다. 어떻게 가능했을까?
이 게임의 교통 시스템은 단순한 랜덤 이동이 아니었다. 개발자들은 도시의 도로망을 그래프로 모델링하고, 각 차량이 목적지를 향해 최적의 경로를 선택하도록 설계했다. 문제는 메모리와 연산 능력이었다. 25MHz CPU는 현대 스마트폰의 수천 분의 일 성능에 불과하다. 따라서 모든 차량을 개별적으로 계산하는 대신, 개발자들은 ‘교통 흐름’이라는 개념을 도입했다. 차량들은 독립적으로 움직이지 않고, 도로의 특정 구간을 점유하는 ‘무리’로 취급되었다. 이 무리는 도로의 용량에 따라 분할되고 병합되면서, 마치 실제 교통처럼 자연스러운 흐름을 만들어냈다.
이 접근법의 핵심은 절제에 있다. 모든 것을 시뮬레이션하려 들지 않고, ‘보이는’ 부분에만 집중한 것이다. 예를 들어, 플레이어가 특정 구역을 확대해 보면 차량들이 개별적으로 움직이지만, 전체 도시를 볼 때는 흐름으로 단순화된다. 이는 현대 게임 엔진에서도 자주 쓰이는 기법이다. 시티즈: 스카이라인 같은 게임도 비슷한 방식으로 대규모 교통을 처리한다. 차이점이라면, 25MHz CPU는 그런 절제를 강요받았다는 점이다.
“한계는 창의성의 어머니다.”
이 말은 클리셰처럼 들릴지 모르지만, Pizza Tycoon의 교통 시스템은 그 진실을 증명한다. 개발자들은 하드웨어의 제약을 극복하기 위해 알고리즘의 효율성에 집착했다. 도로 그래프의 노드와 엣지를 가능한 한 가볍게 유지하고, 불필요한 계산을 최소화했다. 심지어 차량의 이동 속도조차 도로의 혼잡도에 따라 동적으로 조정되었다. 이는 현대 머신러닝에서 ‘어텐션 메커니즘’이 중요한 정보를 선별하듯, 시스템이 자원을 현명하게 배분하는 방식과 닮았다.
하지만 이 시스템의 진짜 매력은 기술적 완성도에 있지 않다. 그것은 바로 ‘느낌’이다. 플레이어는 숫자나 코드가 아니라, 살아 움직이는 도시를 본다. 차가 막히는 도로, 신호등에 걸린 차량들, 우회로를 찾는 택시들—이 모든 것이 25MHz라는 빈약한 하드웨어 위에서 구현되었다는 사실이 놀랍다. 이는 기술이 단순히 문제를 해결하는 도구가 아니라, 인간의 상상력을 구현하는 매개체임을 보여준다.
오늘날 우리는 무한한 컴퓨팅 자원을 당연하게 여기지만, Pizza Tycoon의 사례는 그 자원이 얼마나 값진 것인지 상기시킨다. 한정된 자원으로 최대의 효과를 내야 했던 시대에는, 개발자들이 문제의 본질을 꿰뚫어보는 통찰력이 더 중요했다. 이제 우리는 더 많은 것을 할 수 있지만, 그 ‘더 많은 것’이 항상 더 나은 경험을 보장하지는 않는다. 때로는 한계가 우리를 더 창의적으로 만든다.
이 게임의 교통 시스템은 이제 레트로 게임 애호가들의 관심사로 남아 있지만, 그 안에 담긴 아이디어는 여전히 유효하다. 자원이 부족할수록, 우리는 더 똑똑해져야 한다. 그 똑똑함이란, 단순히 더 빠른 코드를 짜는 것이 아니라, 무엇을 계산할지, 무엇을 포기할지를 아는 지혜를 의미한다. 원문의 개발자 회고를 읽다 보면, 그 지혜가 어떻게 탄생했는지 엿볼 수 있다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.