
링크 하나로 공항 관제사가 되어봅니다
설치도 회원가입도 없이, 브라우저에서 URL만 열면 바로 공항을 운영할 수 있는 웹 게임이 공개됐어요. 이름도 직관적인 '에어포트 시뮬레이터(Airport Simulator)'인데요. 항공기들이 뜨고 내리는 공항을 플레이어가 직접 관리하는 시뮬레이션이에요. 요즘 이렇게 브라우저에서 바로 돌아가는 완성도 있는 게임들이 부쩍 늘고 있는데, 개인이 만든 웹 게임이 어디까지 왔는지 보여주는 좋은 사례라서 소개해 보려고 해요.
개발자들이 유난히 공항 게임을 좋아하는 이유
공항 시뮬레이션이라는 장르 자체가 개발자들에게 묘하게 매력적인데요, 이유를 뜯어보면 재밌어요. 공항은 사실 우리가 매일 다루는 소프트웨어 시스템과 판박이거든요. 활주로는 한 번에 하나의 작업만 처리할 수 있는 공유 자원이에요. 여러 스레드가 동시에 못 쓰게 잠그는 락(lock)이랑 똑같죠. 착륙 허가를 기다리며 상공을 도는 항공기들은 그대로 대기열(큐)이고, 게이트들은 요청을 나눠 받는 워커 풀이에요. 한 항공기가 게이트를 예정보다 오래 점유하면 뒤에 오는 항공편이 줄줄이 밀리는데, 이게 바로 자원 경합이고요. 심하면 서로가 서로의 자리를 기다리며 아무도 못 움직이는 교착 상태(데드락)까지 눈앞에서 재현돼요. 백엔드에서 스레드 풀이나 메시지 큐를 다뤄본 분이라면 게임을 하면서 묘한 기시감을 느끼실 거예요. 추상적으로만 알던 동시성 문제가 비행기 모양을 하고 눈앞에서 벌어지니까요.
브라우저 게임, 생각보다 멀리 왔어요
이런 게임이 설치 없이 돌아간다는 것 자체도 짚어볼 만해요. 예전 플래시 게임 시절에는 별도 플러그인이 필수였지만, 지금은 웹 표준 기술만으로 충분하거든요. 캔버스(Canvas)와 WebGL로 부드러운 2D·3D 그래픽을 그리고, 무거운 연산이 필요하면 웹어셈블리(WebAssembly)로 네이티브에 가까운 속도를 내고, 웹 오디오 API로 사운드까지 처리해요. 계보를 따져보면 아이폰 초창기의 관제 게임 '플라이트 컨트롤'이나, 도로를 설계해 교통 흐름을 관리하는 퍼즐 '미니 모터웨이즈' 같은 작품들이 이 장르의 재미를 증명해 왔는데, 이제 그런 경험이 브라우저 탭 하나로 들어온 셈이에요. 웹 게임의 최고 장점은 역시 배포예요. 앱스토어 심사도 없고, 다운로드 장벽도 없고, 링크 하나만 공유하면 전 세계 누구나 몇 초 안에 플레이를 시작하니까요.
사이드 프로젝트로서의 시뮬레이터
직접 만들어보는 관점에서도 시뮬레이션 게임은 훌륭한 교재예요. 평소 CRUD 웹 개발만 하던 분이라면 완전히 다른 근육을 쓰게 되거든요. 매 프레임마다 세상의 상태를 갱신하고 다시 그리는 게임 루프라는 구조, 수십 개 개체의 상태를 꼬이지 않게 관리하는 상태 기계, 시간의 흐름에 따라 이벤트를 발생시키는 스케줄링, 물체끼리의 간격과 충돌 판정 같은 것들이요. 전부 게임 밖에서도 쓸모 있는 개념이에요. 그리고 결과물이 링크 클릭 한 번으로 동작한다는 건 포트폴리오로서도 강력해요. 리포지토리 README를 읽어달라고 하는 것보다, 3초 만에 직접 만져볼 수 있는 쪽이 백 배 잘 전달되잖아요.
마무리
정리하면, 공항 시뮬레이터는 스케줄링과 동시성이라는 백엔드 개발자의 일상을 게임으로 바꿔놓은 장르이고, 이번 작품은 그걸 브라우저에서 바로 즐기게 해줘요. 잠깐 쉬는 시간에 한번 열어보시고요. 여러분이라면 어떤 '일상 속 시스템'을 시뮬레이터로 만들어보고 싶으세요? 엘리베이터 배차, 편의점 계산대, 지하철 환승역 같은 것도 은근히 재밌는 주제가 될 것 같은데, 아이디어를 나눠주세요.
🔗 출처: Hacker News