☀️ SOLSTICE: The Sun Remembers — An Open-World Puzzle Journey Through June's Celebrations A developer built SOLSTICE: The Sun Remembers, a 3D open-world puzzle game using Three.js, for the June Solstice Game Jam. Players control Sol, the soul of the Sun, who must recover five lost memories tied to June celebrations to prevent eternal darkness. The game features dynamic time-of-day lighting, procedural audio synthesized via the Web Audio API, and four distinct puzzle systems within a shared framework. This is a submission for the June Solstice Game Jam ☀️ I built SOLSTICE: The Sun Remembers — a 3D open-world exploration game wrapped around a series of puzzles, built with Three.js. You don't play as a human. You play as Sol , the soul of the Sun itself — a being that has risen every single day for billions of years without ever questioning why. The game opens with Sol losing five ancient memories, and as those memories fade, Sol's light begins to drain. If it runs out before all five memories are restored, the world falls into eternal darkness. 🌑 Each memory you recover is tied to a real June celebration, reinterpreted as both a location and a puzzle mechanic: The throughline is intentional: the prompt asked us to explore light, darkness, and the passage of time, and the idea of a Sun who has forgotten why it shines felt like the most literal way to explore that, while giving me a narrative excuse to fold in Pride, Juneteenth, and Turing without it feeling like four unrelated trivia questions stapled together. 🎮 Game https://solstice-game-jam-2026.vercel.app 💻 Github https://github.com/nnichaelangello/solstice-game-jam-2026/ 🛠️ The entire game runs in three files — index.html , style.css , and game.js — with no build step or framework, just vanilla JavaScript and Three.js r128 loaded from CDN for all 3D rendering. A few technical decisions I'm proud of: 🌇 Dynamic time-of-day lighting. Rather than a static scene, I built a table of lighting states sky color, fog color, directional light color/intensity, ambient and hemisphere light keyed to specific hours of the day, then linearly interpolate between them every frame based on an internal clock. This drives sunrise, daylight, sunset, and night transitions across the whole island. 🔊 Procedural audio, zero audio files. Every sound effect and the entire background score are synthesized live using the Web Audio API — oscillators for chimes and tones, filtered white noise for wind, layered drone pads for the ambient music bed. There isn't a single .mp3 or .wav in the project; it's all generated in code. 🧩 Four distinct puzzle systems, one shared framework. Rather than hardcoding five separate puzzle UIs, each chapter's puzzle is defined as data type, question, answer, hint and rendered through a shared puzzle modal that branches on type — multiple-choice, sundial-click, cipher-decode, and constellation-grid all reuse the same submit/feedback/retry flow underneath. 🧭 Navigation and pacing. A directional arrow plus distance readout helps players find their next objective without a full quest-marker system, and a minimap gives spatial orientation across the island. Sol's light the core "lose" resource drains passively over time and refills in chunks as each memory is restored, which creates light pressure to keep exploring without making the game punishing. 🧱 Collision and world layout. Simple AABB collision boxes keep players out of structures, while named chapter zones forest, village, mountain, observatory, ocean each have their own ambient lighting bias and decorative density to feel distinct from each other despite sharing one continuous island. 🤖 AI assistance, disclosed transparently. I used Gemini 3.1 Pro as a coding assistant throughout development — helping me work through Three.js scene setup, debug lighting interpolation logic, and brainstorm puzzle mechanic ideas. The narrative direction, puzzle content questions, answers, historical research , and overall creative decisions are mine; Gemini was a pair-programming aid, not the author of the concept. 🏆 Submitting for Best Ode to Alan Turing . Chapter IV is built entirely around Turing: the location is an Observatory, the lore explicitly covers his work breaking the Enigma cipher during WWII and his foundational role in computer science, and — most importantly — the puzzle itself isn't just Turing-themed trivia, it's a working Caesar cipher the player has to decode letter by letter, which is a real if simplified reflection of the kind of codebreaking work he's known for. The memory text that unlocks afterward also directly addresses how he was persecuted despite his contributions, tying the historical weight of June a month that includes Pride back into his story. 🌞 SOLSTICE started as an attempt to answer one question: what if the thing we celebrate every June — light, identity, freedom, brilliance — was something the Sun itself had forgotten how to value? Building four genuinely different puzzle types around four genuinely different pieces of history was the hardest and most rewarding part of this jam. I learned a lot about Three.js lighting pipelines, Web Audio synthesis, and how much narrative weight a simple cipher puzzle can carry when the story around it earns it. Thanks for reading this far, and thank you to the judges for taking the time to play through Sol's journey. I'd love to hear which chapter resonated with you most. 🙏 Thanks for checking out my submission Happy to answer any questions about the build in the comments. 💬