본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 09. 04:24

암호 해독이 어둠에서 빛으로 변하는 게임으로 Alan Turing의 Bombe를 재구축했습니다

요약

Alan Turing의 Bombe를 재구축한 암호 해독 게임 'The Longest Day'를 소개합니다. 하지(solstice)를 배경으로 암호를 풀 때마다 어둠이 빛으로 변하는 시각적 연출을 통해 암호 해독의 경험을 예술적으로 구현했습니다.

핵심 포인트

  • Alan Turing의 업적을 기리는 암호 해독 게임
  • 암호 해독 성공 시 어둠이 빛으로 변하는 시각적 메커니즘
  • 실제 암호 체계와 Turing의 Bombe를 게임 내 구현
  • 시간의 흐름에 따른 색상 팔레트 변화 적용

이 게시물은 June Solstice Game Jam에 제출된 작품입니다.

내가 만든 것

**The Longest Day**는 일 년 중 가장 긴 날을 위한 암호 해독 (code-breaking) 게임이자, Alan Turing에게 바치는 찬가입니다.

당신은 새벽부터 긴 한여름의 자정까지, 단 하루의 하지 (solstice) 동안 근무하는 암호 분석가 (cryptanalyst)가 되어 플레이하게 됩니다. 가로챈 메시지들은 어둠 속에서 차갑고 희미한 글자들로 도착합니다. 당신은 그것들을 수동으로 해독하며, 키 (key)가 딱 들어맞는 순간 메시지는 푸른색에서 금색으로 따뜻하게 변하고 전체 장면은 빛으로 가득 찹니다. 해독 (Decryption)은 곧 조명 (illumination)입니다. 이 하나의 아이디어가 게임 잼의 주제인 빛과 어둠, 그리고 길어지는 단 하루의 흐름을 하나로 묶어줍니다.

이 게임은 세 가지 차원에서 주제를 동시에 구현합니다:

  • 빛과 어둠 — 각 암호 (cipher)를 풀면서 말 그대로 어둠을 빛으로 바꿉니다.
  • 시간의 흐름 — 태양이 하늘을 가로지르는 궤적이 당신의 시계 역할을 하며, 진행에 따라 색상 팔레트가 새벽 → 정오 → 황혼 → 밤으로 변화합니다.
  • Turing을 향한 찬가 — 모든 암호는 실제이며, 피날레는 Turing의 Bombe를 충실히 재현하고, 이야기는 그 인물 자체를 기립니다. 6월은 그의 탄생월이며, 게임 잼은 Pride 기간 동안 개최되고, 그의 이야기는 빛과 어둠과 떼려야 뗄 수 없는 관계입니다.

비디오 데모

코드

GitHub logo
chintandb / the-longest-day

🌅 The Longest Day

일 년 중 가장 긴 날을 위한 암호 해독 게임. Alan Turing에게 바치는 찬가.

DEV June Solstice Game Jam 제출작 — 수상 부문: Best Ode to Alan Turing.

당신은 동틀 녘부터 긴 한여름의 자정까지, 단 하루의 하지(solstice) 동안 근무하는 암호 분석가(cryptanalyst)가 되어 플레이합니다. 가로채진 신호들은 빛의 맥동(pulses of light) 형태로 도착합니다. 당신은 이를 수동으로 해독하며, 각 올바른 키(key)가 제자리를 찾을 때마다 어두운 메시지는 황금빛으로 따스하게 변합니다. 이 하루는 암호 해독(cryptanalysis)의 실제 역사를 관통하는 사다리와 같으며, 전쟁에서 승리하기 위해 Turing가 구축한 기계인 Bombe에서 끝을 맺습니다.

플레이 (Play)

npm install
npm run dev # 로컬에서 플레이
npm test # 암호 해독 + UI 테스트 스위트 실행
npm run build # 프로덕션 빌드 (dist/)

시간별 하루의 흐름 (The day, hour by hour)

시간암호 (Cipher)학습 내용
새벽 (Dawn)Caesar shift (카이사르 암호)다이얼을 돌려 일정한 이동(shift)을 되돌립니다.

GitHub에서 보기

제작 방식 (How I Built It)

프레임워크도, API 키도 사용하지 않았습니다. 순수 자바스크립트(vanilla JS), 분위기 조성을 위한 HTML5 Canvas, 그리고 Vite를 사용했습니다. 리포지토리(repo)를 처음부터 끝까지 읽기 충분할 만큼 깔끔하게 만들고 싶었으며, 게임이 단일 정적 빌드(static build)만으로 어디서든 실행되기를 원했습니다.

아키텍처는 책임에 따라 분리되었으며, 어려운 부분은 테스트를 거쳤습니다.

  • cipher/: Caesar, 치환 암호(substitution, 빈도 분석 포함), Vigenère, 단순화된 로터 기계 (rotor machine, 미니 Enigma), 그리고 Bombe 로직 등 각 암호의 순수하고 단위 테스트(unit-tested)가 완료된 구현체를 담고 있습니다.
  • engine/: 레벨 진행, 하루 시계, 저장/재개 기능을 담당하는 아주 작은 이벤트 기반 상태 머신(event-driven state machine)입니다.
  • render/: 그라데이션 하늘, 호를 그리며 움직이는 태양, 황혼에 나타나는 별자리, 그리고 마지막에 빛을 스펙트럼으로 분산시키는 프리즘 등 캔버스(canvas)의 분위기를 그립니다.
  • ui/: 회전 다이얼, 빈도 히스토그램(frequency histogram), 로터 휠(rotor wheels), Bombe 격자(lattice), 그리고 글자 하나하나에 불이 들어오는 메시지 디스플레이를 포함하는 대화형 작업대(interactive workbench)입니다.

이 하루는 암호 해독의 역사입니다. 각 레벨은 시간을 따라 앞으로 나아갑니다:

  1. 새벽 — Caesar (카이사르). 다이얼을 돌려 일정한 이동(shift)을 해제합니다. 올바르게 맞추면 메시지가 피어나는, 핵심적인 느낌을 익히게 됩니다.
  2. 아침 — Substitution (치환). 모든 글자가 가면을 쓰고 있습니다. 여러분은 **빈도 분석 (frequency analysis)**을 통해 이를 깨뜨립니다. 게임은 각 암호 문자가 일반적인 영어에서 나타나는 빈도와 비교하여 얼마나 자주 등장하는지 보여주며, 단어가 해독될 때까지 가장 높은 막대(E, T, A, O…)를 매핑하게 됩니다.
  3. 정오 — Rotor machine (로터 기계). 글자마다 새로운 알파벳이 적용됩니다. 손으로는 읽을 수 없지만, 여러분에게는 반드시 나타나야 하는 단어인 **crib (크립)**이 주어집니다. 그 단어가 나타날 때까지 로터를 설정합니다.
  4. 황혼 — The Light Bombe (라이트 봄브). 피날레이자 제가 가장 자랑스럽게 생각하는 부분입니다.

Bombe (봄브) 재구축하기. Turing의 Bombe는 정답을 찾으려고 시도함으로써 Enigma 키를 찾아낸 것이 아니라, 틀린 모든 것을 배제함으로써 찾아냈습니다. 저는 그 아이디어를 정직하게 재구축했습니다:

  • Enigma의 리플렉터(reflector)는 어떤 글자도 자기 자신으로 암호화될 수 없음을 의미합니다. 따라서 암호문(ciphertext)에 crib을 배치했을 때 어떤 crib 문자가 자신의 쌍둥이(동일한 문자) 위에 놓인다면

테스트 (Testing). 암호 체계는 테스트 우선(test-first) 방식으로 구축되었습니다(총 31개의 테스트): 암호화/복호화 라운드 트립(round-trips), 로터 머신(rotor machine)의 상호 호혜성(self-reciprocity) 및 고정점 없는 반사기(no-fixed-point reflector), Bombe의 모순 제거(contradiction elimination) 및 충돌 규칙(clash rule), 엔진의 완료 단계 진행, 그리고 실제 사용자 상호작용을 통해 각 레벨을 해결하고 메시지에 불이 들어오는지 확인하는 DOM 통합 테스트가 포함됩니다.

결말 (The ending). 마지막 암호가 풀리면, 가장 긴 낮이 가장 짧은 밤으로 기울고, 게임은 Alan Turing 자신에 대해 조용히 막을 내립니다. 그가 세상을 위해 승리로 이끌었던 새벽, 그리고 이후 동성애자로 박해받으며 그를 앗아간 어둠에 대하여 말입니다. 마지막 이미지는 프리즘을 통해 굴절되는 빛입니다. 하지(solstice)는 언제나 순환하며, 빛은 다시 돌아옵니다.

상 부문 (Prize Category)

Alan Turing을 향한 최고의 찬사 (Best Ode to Alan Turing). 이 게임은 메커니즘(mechanics), 서사(narrative), 그리고 _디자인(design)_을 통해 Turing에게 바치는 헌사입니다:

  • 메커니즘 (Mechanics) — 실제 암호를 사용하며, 그의 Bombe를 충실하고 플레이 가능한 형태로 재현한 것에 정점을 찍습니다: crib, 자기 암호화 불가 규칙(no-self-encryption rule), 그리고 모순 제거를 통한 추론 방식이 포함됩니다.
  • 서사 (Narrative) — 그의 이야기는 빛을 통해 엮여 있습니다: 비밀스러운 암호 해독, 그가 쟁취한 새벽, 그리고 뒤따른 불의. 품위 있게 다루어졌으며, 결코 자극적으로 묘사되지 않았습니다.
  • 디자인 (Design) — 그의 탄생월이자 Pride Month 기간인 하지(solstice)를 배경으로 하며, 빛과 어둠을 퍼즐이자 은유로 사용했습니다.

플레이해 주셔서 감사합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0