TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 28 READS

코드를 짜야 깰 수 있는 게임, Exapunks — 어셈블리로 해킹하는 사이버펑크 퍼즐

혹시 '일하는 것 같은데 이상하게 재밌는 게임'을 해보신 적 있나요? 2018년에 나온 Exapunks라는 게임이 요즘 다시 개발자들 사이에서 회자되고 있어서 소개해보려고 해요. 이 게임을 만든 Zachtronics(잭트로닉스)는 '프로그래밍 퍼즐 게임'이라는 독특한 장르를 사실상 개척한 스튜디오거든요. Exapunks는 그중에서도 가장 완성도 높은 작품으로 꼽히는 게임이에요.

진짜로 코드를 짜는 게임이에요

배경은 1997년의 대체 역사 사이버펑크 세계예요. 주인공은 몸이 서서히 굳어가는 병에 걸린 해커인데, 치료약을 구하려면 돈이 필요하고, 돈을 벌려면 해킹 의뢰를 수행해야 해요. 그런데 이 해킹이라는 게 버튼 몇 번 누르면 되는 영화 같은 연출이 아니라, 진짜로 코드를 짜야 한다는 게 이 게임의 핵심이에요.

플레이어는 EXA라는 작은 소프트웨어 에이전트에게 명령을 내려요. 이 명령어가 어셈블리 언어랑 거의 똑같이 생겼거든요. 어셈블리가 뭐냐면, 컴퓨터 CPU가 직접 알아듣는 기계어에 가장 가까운 저수준 언어예요. 우리가 평소 쓰는 파이썬이나 자바스크립트가 사람 말에 가까운 언어라면, 어셈블리는 기계 말에 가까운 언어라서 쓸 수 있는 저장 공간도 몇 칸 없고 명령어 하나가 딱 한 가지 일만 해요. Exapunks에서는 COPY로 값을 옮기고, LINK로 네트워크의 다른 노드로 이동하고, GRAB으로 파일을 집어 드는 식으로 미션을 풀어가요.

자기 복제와 동시성, 게임으로 배우는 멀티스레딩

특히 재밌는 건 REPL, 그러니까 자기 복제 명령이에요. EXA 하나가 자신의 복사본을 만들어서 여러 노드를 동시에 뒤지게 할 수 있거든요. 이게 사실상 멀티스레딩이에요. 복제된 EXA들이 같은 파일을 두고 경쟁하기 시작하면, 우리가 실무에서 겪는 레이스 컨디션(여러 작업이 동시에 같은 자원을 건드려서 결과가 꼬이는 문제)이 그대로 벌어져요. 게임을 하다 보면 동시성 문제를 이론이 아니라 몸으로 배우게 되는 거죠.

그리고 퍼즐을 풀면 끝이 아니에요. 내 답안이 사이클 수(실행 속도), 코드 크기, 액티비티(움직임 횟수)라는 세 가지 지표로 측정되고, 전 세계 플레이어들의 분포와 함께 히스토그램으로 보여줘요. '풀긴 풀었는데 내 코드가 상위권 코드보다 세 배나 느리네?' 싶으면 다시 최적화의 늪에 빠져들게 되는 구조예요. 매뉴얼도 특이해요. 게임 속 세계관의 해커 잡지(zine) 형태로 제공되는데, 실제로 인쇄해서 옆에 두고 뒤적이며 플레이하라고 만든 물건이거든요. 종이 매뉴얼을 넘겨가며 명령어를 찾는 경험 자체가 90년대 감성이에요. 심지어 다른 플레이어의 프로그램과 겨루는 해커 배틀 모드까지 있어요.

Zachtronics라는 계보

Zachtronics는 이런 게임을 여러 개 만들었어요. 고장 난 가상의 CPU를 고쳐가는 TIS-100, 중국 선전의 전자기기 회사에 취직해서 임베디드 개발을 하는 SHENZHEN I/O, 연금술 기계를 조립하는 Opus Magnum까지. 스튜디오는 2022년에 문을 닫았지만, 이 장르는 'Zach-like'라는 이름으로 남아서 다른 개발자들이 계승하고 있어요. 좀 더 순한 맛으로 프로그래밍 사고를 익히고 싶다면 Human Resource Machine 같은 게임도 있고, 자바스크립트로 유닛을 조종하는 MMO인 Screeps 같은 변형도 있고요.

한국 개발자에게 주는 시사점

요즘은 고수준 프레임워크와 AI 코딩 도구 덕분에 '내 코드 아래층에서 무슨 일이 벌어지는지' 생각할 기회가 점점 줄어들잖아요. Exapunks는 레지스터 몇 개와 명령어 십몇 개라는 극단적인 제약 속에서 문제를 풀게 하면서, 자원이 유한하다는 감각과 최적화의 재미를 되살려줘요. 알고리즘 문제 풀이가 숙제처럼 느껴지는 분이라면, 같은 근육을 게임으로 단련하는 셈이라 훨씬 오래 붙잡게 되거든요. CS 기초를 다시 다지고 싶은 주니어에게도, 저수준 감각이 그리운 시니어에게도 추천할 만해요.

한 줄로 정리하면, Exapunks는 프로그래밍의 재미 그 자체를 증류해놓은 게임이에요. 여러분은 코딩을 게임으로 배우거나 단련해본 경험이 있나요? 추천할 만한 프로그래밍 게임이 있다면 댓글로 공유해주세요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.zachtronics.com/exapunks/
SHARE
처리 중...