
This is a submission for the June Solstice Game Jam What I Built For this game jam, I...
This is a submission for the June Solstice Game Jam
For this game jam, I built Dawn Dashers, an adventure runner set during the June Solstice, the longest night of the year in Australia.

The idea started with a simple question:
What if the longest night didn't end?
In Dawn Dashers, a rogue machine called the Turing Engine has stolen the sunrise and scattered seven Sun Fragments across Australia. Players race through deserts, bushland trails, coastal cliffs, and hidden ruins to recover the fragments and bring daylight back.
The game takes inspiration from the June solstice, but with an Australian treasure-hunting twist. Along the way, players dodge obstacles, collect relics, unlock animal abilities, and solve quick logic puzzles inspired by Alan Turing.
One thing I wanted to avoid was making the solstice just part of the story. Instead, it's part of the gameplay itself. At the start, the world is trapped in darkness. As players recover Sun Fragments, the environment gradually becomes brighter, warmer, and more alive until the final sunrise returns.
The goal was simple:
Build something fun first, while using the June Solstice as the heart of the adventure.
{% embed https://youtu.be/x-U4mGISDJw %}
You can also try:
... directly through the deployed game (using Vercel) {% embed https://dawn-dashers.vercel.app/ %}
Built with:
I started by focusing on the core gameplay loop:
Run → Dodge → Collect → Discover → Restore Light
Once movement felt fun, I started layering in everything else.
The biggest design decision was making the June Solstice an actual game mechanic rather than just background lore.
The game begins during the longest night of the year. Every Sun Fragment recovered pushes the world closer to dawn.
As players progress:
By the end of the game, the player has literally restored the sunrise.

Rather than using generic fantasy locations, I wanted the game to feel distinctly Australian.
The adventure takes players through:









Each region introduces new obstacles and visual themes while keeping the action moving.
Since June is also Alan Turing's birth month, I wanted to include a tribute without turning the game into a history lesson.
The game's antagonist, the Turing Engine, believes that endless night is the most logical state of existence.
Players encounter quick puzzles based on:

The puzzles are short and designed to support the action rather than interrupt it.
At three points in the expedition, the world stops being a runner and becomes a Turing Machine you operate by hand. The level fades away and you step into a glowing sci-fi corridor rendered in one-point perspective — a hallway that is the tape, charging toward a vanishing-point portal.
The story is told in three chapters, framed as Alan Turing bypassing three sealed gates:



| Corridor | Machine | The gate demands |
|---|---|---|
| I of III | Bit Flipper | Invert every bit until the blank |
| II of III | Parity Checker | Open only for an even number of 1s |
| III of III | Even-Length Protocol | Accept only an even-length message |
One of the biggest pivots during development was moving away from a bright arcade aesthetic and leaning into a treasure-hunting adventure style.
The world uses:
This direction helped tie together the themes of the solstice, exploration, and treasure hunt.
The game was built using:
The focus throughout was on keeping the project lightweight, responsive, and playable directly in the browser.
Dawn Dashers is a love letter to Alan Turing, the mathematician, codebreaker, and father of Theoretical computer scientist who was born on 23 June 1912.
Rather than focusing on historical events, I wanted to celebrate the ideas that made his work so influential: logic, patterns, problem-solving, and computation.
The Turing Engine serves as the main antagonist, and players overcome its challenges through quick puzzles inspired by computational thinking.

P.S. For fellow nerds (like me 😄), each puzzle comes with a little extra bit of knowledge. Just click "Learn why this puzzle matters".
The 27 playable dashers are all Australian animals and each character's power and quirk are inspired by concepts from Turing's work:
The "special" dashers can only be unlocked by solving enough treasure puzzles — a direct nod to the idea that Turing's deeper insights were hidden behind layers of prior work.
The game's lifecycle is modelled as a real Turing Machine (see Architecture below).
States are labelled q_*, input symbols σ_*, and every transition is written to a tape
with a head that advances R, stays S, or — on a level abort — rewinds L.
This isn't just a metaphor: the implementation is a literal δ(q, σ) → (q′, dir) transition table.
┌─────────────────────────────────────────────────────────────────────┐
│ Browser │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ game.js (core) │ │
│ │ │ │
│ │ Run loop / input │ │
│ │ │ │ │
│ │ │ sendFlow(σ_*) ┌─────────────────────────┐ │ │
│ │ ├─────────────────────► │ game-state.js │ │ │
│ │ │ ◄── state flags ──── │ │ │ │
│ │ │ │ Turing Machine │ │ │
│ │ │ │ Q states (q_*) │ │ │
│ │ │ │ Σ symbols (σ_*) │ │ │
│ │ │ │ δ transition table │ │ │
│ │ │ │ tape[] head ptr │ │ │
│ │ │ └─────────────────────────┘ │ │
│ │ │ │ │
│ │ ├── Puzzle pick & dedup ──► puzzle-tracker.js │ │
│ │ │ │ │ │
│ │ │ puzzle-filter.js │ │
│ │ │ │ │ │
│ │ │ puzzle-data.js │ │
│ │ │ ├── questions-easy.js │ │
│ │ │ ├── questions-medium.js │ │
│ │ │ └── questions-hard.js │ │
│ │ │ │ │
│ │ ├── Three.js + Canvas render │ │
│ │ │ └── terrain-styles.js │ │
│ │ │ │ │
│ │ └── Config reads │ │
│ │ ├── character-config.js │ │
│ │ ├── game-data.js │ │
│ │ └── game-settings.js │ │
│ │ │ │
│ │ game-ui.js ──ctx callbacks──► game.js │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ index.html (loads all modules via <script> tags) │
└─────────────────────────────────────────────────────────────────────┘
▲
│ served by
┌────────┴────────┐
│ Nginx (Docker) │
│ docker-compose │
└─────────────────┘
I'm also submitting for Best Google AI Usage.
I'll be honest: I'm much more comfortable building systems and writing backend code than designing beautiful interfaces.
One of the challenges during this project was figuring out how to make Dawn Dashers feel cohesive visually. I had a rough idea of the atmosphere I wanted—an Australian treasure-hunting adventure, but translating that into colours, layouts, typography, and UI design isn't my strongest skill.
That's where Google Stitch helped.
I used Stitch to explore rapidly:
What impressed me most was how easy it was to iterate. Instead of spending hours moving elements around in a design tool, I could describe the feeling I wanted and quickly generate multiple directions to evaluate.
For example, I started with a fairly generic arcade-style look, but through a few iterations in Stitch, I landed on a much stronger visual identity built around:
Those explorations directly influenced the final design language of the game.
I also used Gemini extensively during the design phase.
One challenge was incorporating Alan Turing-inspired puzzles without making the game feel like a classroom exercise. I wanted puzzles based on logic, patterns, and computation, but they also needed to feel like they belonged in an Australian treasure-hunting adventure.
Gemini helped me brainstorm and refine puzzle concepts such as:
For example, I used Gemini to take abstract puzzle ideas and re-theme them into Australian contexts, turning generic logic puzzles into clues involving lighthouses, Outback landmarks, wildlife, and hidden Sun Fragments.
The combination of Stitch and Gemini helped bridge two areas where I typically spend a lot of time: design exploration and content creation. Instead of starting from a blank page, I could rapidly iterate on ideas, evaluate options, and focus more of my time on building and polishing the game itself.
The AI tools didn't replace the creative decisions—they helped me reach better ones faster.
As a solo developer, having a tool that could help bridge the gap between "I know what I want it to feel like" and "I know how to design it" was incredibly valuable. It let me spend more time building gameplay while still ending up with a much more polished visual experience.
Google Stitch didn't replace the design decisions—it helped me discover and refine them much faster.
Thanks for checking out Dawn Dashers 🌅
It was a lot of fun combining the June Solstice, Australian landscapes, treasure hunting, arcade runners, and a small nod to Alan Turing into one adventure.
aiMost of us have seen a coding agent fail to complete a task we know it can do. We just don't...
googlecloudWhen building Generative AI applications, developers often encounter a massive bottleneck: sequential...
discussI’ve been thinking about sharing some electronic circuit posts on Dev.to — small circuits, DIY...
agentsWhat nobody tells you about exporting your multi-agent prototype to a local workspace. Every...
agenticarchitectAutonomous agents are genuinely good at answering messy business questions. Give one an LLM and a set...
aiPR volume went up, ticket quality didn't, and the gap got filled with LLMs on both sides of the review: bots reviewing, bots replying, bots occasionally arguing with bots about priorities that only existed in a teammate's head. Our CEO named the actual problem, and it's bigger than code review.