<?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: lvupupui</title>
    <description>The latest articles on DEV Community by lvupupui (@lvupupui).</description>
    <link>https://dev.to/lvupupui</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3967687%2F0692c7e0-0c1e-4ac9-966f-f61ef1ea7dfa.png</url>
      <title>DEV Community: lvupupui</title>
      <link>https://dev.to/lvupupui</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lvupupui"/>
    <language>en</language>
    <item>
      <title>Solstice Circuit: A tiny puzzle game about spending the longest day wisely</title>
      <dc:creator>lvupupui</dc:creator>
      <pubDate>Thu, 04 Jun 2026 07:41:07 +0000</pubDate>
      <link>https://dev.to/lvupupui/solstice-circuit-a-tiny-puzzle-game-about-spending-the-longest-day-wisely-1mk0</link>
      <guid>https://dev.to/lvupupui/solstice-circuit-a-tiny-puzzle-game-about-spending-the-longest-day-wisely-1mk0</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Solstice Circuit&lt;/strong&gt;, a small browser puzzle game about using daylight as a limited resource and solving a tiny dawn cipher before dusk.&lt;/p&gt;

&lt;p&gt;The player controls a seeker on the longest day of the year. The goal is to charge binary-coded obelisks and reach the solstice ring before the lantern runs out.&lt;/p&gt;

&lt;p&gt;The core twist is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Moving through sunlight costs daylight.&lt;/li&gt;
&lt;li&gt;Stepping into shadow wells restores daylight.&lt;/li&gt;
&lt;li&gt;Cipher obelisks require enough daylight to charge.&lt;/li&gt;
&lt;li&gt;The solstice ring only opens after all cipher bits are charged.&lt;/li&gt;
&lt;li&gt;A second, tighter ring appears after the first one is solved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The theme is a turning point. The solstice is the longest day, but it is still finite. The player has to decide when to spend light and when to recover in shadow.&lt;/p&gt;

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

&lt;p&gt;I included a short demo GIF/video showing the player lighting the cipher obelisks, recovering daylight in shadow wells, and entering the solstice ring.&lt;/p&gt;

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

&lt;p&gt;Source code:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/lvupupui" rel="noopener noreferrer"&gt;
        lvupupui
      &lt;/a&gt; / &lt;a href="https://github.com/lvupupui/solstice-circuit" rel="noopener noreferrer"&gt;
        solstice-circuit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A tiny solstice puzzle game for the DEV June Solstice Game Jam.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Solstice Circuit&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Solstice Circuit is a small browser puzzle game for the DEV June Solstice Game Jam.&lt;/p&gt;
&lt;p&gt;The player moves a seeker through a sunlit board, charging binary-coded cipher obelisks before entering the solstice ring. Sunlit movement drains daylight, shadow wells recover it, and the gate only opens when every cipher bit is charged.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Open &lt;code&gt;index.html&lt;/code&gt; in a browser.&lt;/p&gt;
&lt;p&gt;No build step is required.&lt;/p&gt;
&lt;p&gt;For recording, open &lt;code&gt;index.html?demo=1&amp;amp;recording=1&lt;/code&gt; to auto-start the first-ring demo in a clean 16:9 view.&lt;/p&gt;
&lt;p&gt;Submission package:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cover.png&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;solstice-circuit-demo.gif&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;solstice-circuit-demo.mp4&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;solstice-circuit-submission.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dev-submission-draft.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dev-quick-submit-fields.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;submission-checklist.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Controls&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Arrow keys or WASD to move&lt;/li&gt;
&lt;li&gt;On touch devices, use the directional buttons&lt;/li&gt;
&lt;li&gt;Reset button to restart&lt;/li&gt;
&lt;li&gt;Hint button to get a short next-target suggestion&lt;/li&gt;
&lt;li&gt;Demo button to auto-play the first ring for recording&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Challenge Fit&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;The game interprets the solstice as a turning point: the longest day is a limited resource, and the player has to decide when to spend…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/lvupupui/solstice-circuit" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The game is a static HTML/CSS/JavaScript project. It runs in the browser with no build step.&lt;/p&gt;

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

&lt;p&gt;The board is rendered with Canvas. The game state tracks the current level, player position, daylight remaining, turn count, lit obelisks, shadow wells, walls, and gate state.&lt;/p&gt;

&lt;p&gt;Every move updates daylight and checks whether the player stepped on a shadow well, an obelisk, or the solstice ring.&lt;/p&gt;

&lt;p&gt;The most important design choice was to make sunlight both helpful and dangerous. It gives the game its tension: the thing you need is also the thing you are spending.&lt;/p&gt;

&lt;p&gt;I also added a deterministic demo route so viewers can quickly see the mechanic in action.&lt;/p&gt;

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

&lt;p&gt;This submission is for the overall game jam prompt. It also has a light fit for &lt;strong&gt;Best Ode to Alan Turing&lt;/strong&gt; because the board uses binary-labeled obelisks as a small code-breaking motif.&lt;/p&gt;

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

&lt;p&gt;Small games work best when the rules are visible. The solstice idea became stronger when it turned into a resource mechanic: the player does not just read about the longest day ending; they feel it through every move that drains the daylight counter.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;/p&gt;

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

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

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

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

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4p0jzzhg78no6ggx8hdm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4p0jzzhg78no6ggx8hdm.gif" alt="Solstice Circuit demo" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

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