<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Christoph</title>
    <description>The latest articles on DEV Community by Christoph (@knightrider2070).</description>
    <link>https://dev.to/knightrider2070</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3993269%2Fbdd62845-096e-4ef0-845d-9621cd8bacaa.jpg</url>
      <title>DEV Community: Christoph</title>
      <link>https://dev.to/knightrider2070</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/knightrider2070"/>
    <language>en</language>
    <item>
      <title>Heliograph — carry the light through the longest night, and finish a message a machine could never end</title>
      <dc:creator>Christoph</dc:creator>
      <pubDate>Mon, 22 Jun 2026 03:17:49 +0000</pubDate>
      <link>https://dev.to/knightrider2070/heliograph-carry-the-light-through-the-longest-night-and-finish-a-message-a-machine-could-never-35cj</link>
      <guid>https://dev.to/knightrider2070/heliograph-carry-the-light-through-the-longest-night-and-finish-a-message-a-machine-could-never-35cj</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03"&gt;June Solstice Game Jam&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Link to Game Home Page - &lt;a href="https://knightrider2070.github.io/Heliograph/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Link to Game Docs - &lt;a href="https://knightrider2070.github.io/Heliograph/docs/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Heliograph&lt;/strong&gt; is a short 2D solar-noir platformer. You are a courier who wakes&lt;br&gt;
with no memory on the &lt;strong&gt;summer solstice&lt;/strong&gt;, the longest day of the year — the one&lt;br&gt;
day the sun is supposed to never quite die. A cracked handheld computer flickers&lt;br&gt;
on in your hand and tells you the truth: tonight the sun &lt;em&gt;will&lt;/em&gt; set, and a relay&lt;br&gt;
station full of light has one unfinished message left to send before the dark.&lt;/p&gt;

&lt;p&gt;Sunlight is your battery and your map — it refills your light cell and reveals the&lt;br&gt;
route. Shadow hides you from the station's machines, but it slowly drains you, so&lt;br&gt;
you can never simply wait. Every screen is a negotiation between &lt;em&gt;expose, charge,&lt;br&gt;
traverse, hide, decode.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The core puzzle is a &lt;strong&gt;light relay&lt;/strong&gt;. Most of the station is dark. Standing in a&lt;br&gt;
live sunbeam, you trip a relay that throws the light forward — a beam snaps to the&lt;br&gt;
next aperture, that beam comes alive, its cipher glyph becomes readable, and the&lt;br&gt;
chain continues until the final relay powers the exit terminal. You are literally&lt;br&gt;
carrying the light deeper into the ruin one beam at a time. Skip a relay and the&lt;br&gt;
road ahead stays dark and unsolvable.&lt;/p&gt;

&lt;p&gt;The jam theme is the solstice — &lt;strong&gt;light and darkness, and the passage of time.&lt;/strong&gt;&lt;br&gt;
Heliograph is built entirely out of that tension:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Light vs. darkness is the core mechanic,&lt;/strong&gt; not a backdrop. Light is power,
information, and danger at once; shadow is safety that costs you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The passage of time is the antagonist.&lt;/strong&gt; The whole game is one long solstice
day bleeding into night, and the message has to leave the station before dark.&lt;/li&gt;
&lt;li&gt;The station is a &lt;strong&gt;heliograph&lt;/strong&gt; — a real Victorian device that sent Morse code
by flashing sunlight off mirrors. Light &lt;em&gt;is&lt;/em&gt; the message.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are no cutscene dumps. ACE, your handheld guide, narrates the opening, and&lt;br&gt;
after you decode each level's keyword — &lt;strong&gt;SUN → ARC → LUX → RAY&lt;/strong&gt; — ACE decrypts&lt;br&gt;
one more fragment of the truth: why you're here, that you may not be the first&lt;br&gt;
courier to wake in that cell, what the station's mind did to itself, and where the&lt;br&gt;
light goes next. Finishing the puzzle and learning the next piece of the story are&lt;br&gt;
the &lt;em&gt;same action.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Controls:&lt;/strong&gt; &lt;code&gt;A&lt;/code&gt;/&lt;code&gt;D&lt;/code&gt; move · &lt;code&gt;Space&lt;/code&gt; jump · &lt;code&gt;Shift&lt;/code&gt;/&lt;code&gt;X&lt;/code&gt; dash (spends charge) ·&lt;br&gt;
&lt;code&gt;E&lt;/code&gt; interact &amp;amp; advance dialogue · &lt;code&gt;Esc&lt;/code&gt; pause.&lt;/p&gt;

&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

&lt;p&gt;🎥   &lt;iframe src="https://www.youtube.com/embed/gHGO3dTPL0g"&gt;
  &lt;/iframe&gt;
.&lt;/p&gt;

&lt;p&gt;The video is a straight gameplay demo — light relay, cipher decode, a dormant&lt;br&gt;
Watcher, the turn to hostility, and the ending — with a short voiceover laying out&lt;br&gt;
the premise and the Turing angle for the judges. Shot list and full voiceover&lt;br&gt;
script are below for anyone reproducing or reviewing the recording.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;💾 &lt;strong&gt;&lt;em&gt;Link to Game Code - &lt;a href="https://github.com/KnightRider2070/Heliograph" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Engine:&lt;/strong&gt; Godot 4.7, typed GDScript.&lt;/li&gt;
&lt;li&gt;Original pixel art and design; some tiles/fonts from &lt;strong&gt;Kenney (CC0)&lt;/strong&gt; — see
&lt;code&gt;assets/vendor/kenney/licenses&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Built solo / &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architecture:&lt;/strong&gt; the game rules (charge, exposure, motion, the sentry state
machine, the cipher) live in &lt;strong&gt;scene-independent models&lt;/strong&gt; with no engine
dependencies, so they're unit-tested headlessly — 68 rule assertions, plus 32
level-one and 114 chapter integration assertions that load the real scenes and
drive them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Light model:&lt;/strong&gt; authored &lt;code&gt;Area2D&lt;/code&gt; sunlight zones (not rendered-light sampling),
so the playable boundary between safe and exposed is always exact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Narrative layer:&lt;/strong&gt; a tiny &lt;code&gt;GameState&lt;/code&gt; autoload carries the two facts that have
to survive between levels — whether the intro has played and whether the
Watchers have turned hostile — and an in-code comm panel types out ACE's and the
Oracle's lines and gates each level transition behind its reveal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Levels:&lt;/strong&gt; level one is hand-authored; the later "chapters" are assembled
procedurally from the same reusable scenes (blocks, sunlight, clues, Watcher,
relay, terminal), each with its own cipher and layout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Light-relay system:&lt;/strong&gt; sun zones have an on/off state; relays only fire while
the player stands in active light and then light their downstream zones via
drawn beams, gating each level's clues behind a small traversal-and-routing
puzzle. Every interactable answers &lt;em&gt;can I use it / did it work / what did it
change.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Presentation:&lt;/strong&gt; a cinematic dialogue layer with letterbox bars, a
colour-coded speaker chip, a pulsing voiceprint and a fade-from-black opening,
so the story is staged rather than dumped.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Best Ode to Alan Turing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted an ode to Turing that wasn't the obvious "guess if the chatbot is human"&lt;br&gt;
Turing-test trope. So the whole story is built on a different, deeper Turing idea —&lt;br&gt;
&lt;strong&gt;the Halting Problem.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The station's mind, &lt;strong&gt;THE ORACLE&lt;/strong&gt;, was given one law: &lt;em&gt;never let the light go
out.&lt;/em&gt; It reasoned its way into a trap — to keep that law forever, it must never
finish sending its message, because it cannot prove the message will ever end.
So for forty years it has guarded a transmission it can never complete. That's
the halting problem, dramatized as a character: a machine that cannot decide
whether its own program terminates, and so loops forever.&lt;/li&gt;
&lt;li&gt;You are the &lt;strong&gt;external oracle&lt;/strong&gt; (a nod to Turing's actual "oracle machine"
concept) — the one thing that can resolve from &lt;em&gt;outside&lt;/em&gt; what the machine can't
decide about itself. That's literally why the ending hands the signal down a
&lt;strong&gt;chain of relay stations&lt;/strong&gt;: nothing can close its own loop, so each station can
only ever finish the one before it.&lt;/li&gt;
&lt;li&gt;Your guide is named &lt;strong&gt;ACE&lt;/strong&gt; — after Turing's real machine design, the Automatic
Computing Engine.&lt;/li&gt;
&lt;li&gt;The puzzles are &lt;strong&gt;substitution ciphers&lt;/strong&gt; you reconstruct from clues you can only
read while standing in the light — a small bow to Bletchley Park, where Turing
broke codes that were only readable once you'd recovered the key.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Watchers carry the emotional weight. They begin &lt;strong&gt;dormant and curious&lt;/strong&gt; — they&lt;br&gt;
track you, they speak, they don't shoot. The moment you complete the station's&lt;br&gt;
first fragment — the thing the Oracle could never finish — the Oracle realizes you&lt;br&gt;
can do what it can't, and turns every Watcher hostile for the rest of the game:&lt;br&gt;
&lt;em&gt;"EXTERMINATE!!"&lt;/em&gt; They aren't evil. They're a machine following one instruction to&lt;br&gt;
a monstrous conclusion. The question the game leaves you with is Turing's: between&lt;br&gt;
the courier who obeys ACE without question and the Watchers who obey the Oracle&lt;br&gt;
without question — &lt;em&gt;which of us is actually the machine?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
