You are browsing as a guest. Sign up (or log in) to start making projects!

Starwick

  • 8 Devlogs
  • 30 Total hours

starwick's a procedural cosmic adventure i'm building

Open comments for this post

7h 31m 31s logged

Starwick - I rebuilt the core as a flow runner

Big swing this stretch. The free-roam version was pretty but aimless, so I pivoted the core flow runner - you ride a procedural ribbon, charge and release to glide, and trace constellations as gates at speed. Kept the old explore mode intact; this is a second mode built from scratch alongside it.

What I built

The whole loop, as systems, end to end:

  • A deterministic flow motor - auto-run, hold to charge speed, release to lift into a glide, swipe to drift lanes. No physics engine; pure kinematics so it’s predictable and testable.
  • A procedural ribbon track - a seeded spline with height/width curves, built in chunks ahead of you and recycled behind, so it streams forever.
  • Constellation gates that detect by path intersection, not a button press - the line you sweep through space is tested against each node, so nothing gets missed even at full speed.
  • A combo/flow system that chains gate hits into a rising “harmony” meter with style labels, from Soft Trace up to Perfect Weave.
  • A run director that strings it into a real ~90-second run with a relight setpiece near the end, then tallies results.
  • A versioned JSON save profile, and a Hearth where you spend earned starlight to restore nodes - expression, not wait-timers.

The save that lied to me

While wiring the meta screen, it proudly told me I’d restored 4,244 stars across 9 journeys. I had never played a full run. Turns out my tests were writing to the real save file - every test that relit a star bumped the actual player profile, and it had been quietly inflating for days.

Fix was a test-only backend: in headless test mode the save lives in memory and never touches the real file. Round-trips and version migration still work, the tests stay honest, and your real profile is yours again. I made it a hard rule for the new save system from the start.

Gates that don’t miss

The other nice unlock: at runner speed you blow past a point in a single frame, so checking “is the player on the node right now” drops inputs constantly. Testing the swept segment from last frame to this frame against the node sphere fixes it - you can be going full tilt and a clean pass still counts. Perfect-center passes score extra.

Where it stands

Honest version: it’s systems-complete and every piece is proven by an automated test - 40 of them, movement, track, gates, combo, a full run, save, Hearth - but it is not visually playable yet. There’s no Wick model, no gate glow, no run HUD, no Hearth view. I built the entire core behind tests and haven’t actually watched it move.

So the next pass is pure presentation: give the runner its body, light up the gates, show the HUD, and wire the mode select so you can press Play and ride it. The skeleton is real and verified; now it needs skin.

Starwick - I rebuilt the core as a flow runner

Big swing this stretch. The free-roam version was pretty but aimless, so I pivoted the core flow runner - you ride a procedural ribbon, charge and release to glide, and trace constellations as gates at speed. Kept the old explore mode intact; this is a second mode built from scratch alongside it.

What I built

The whole loop, as systems, end to end:

  • A deterministic flow motor - auto-run, hold to charge speed, release to lift into a glide, swipe to drift lanes. No physics engine; pure kinematics so it’s predictable and testable.
  • A procedural ribbon track - a seeded spline with height/width curves, built in chunks ahead of you and recycled behind, so it streams forever.
  • Constellation gates that detect by path intersection, not a button press - the line you sweep through space is tested against each node, so nothing gets missed even at full speed.
  • A combo/flow system that chains gate hits into a rising “harmony” meter with style labels, from Soft Trace up to Perfect Weave.
  • A run director that strings it into a real ~90-second run with a relight setpiece near the end, then tallies results.
  • A versioned JSON save profile, and a Hearth where you spend earned starlight to restore nodes - expression, not wait-timers.

The save that lied to me

While wiring the meta screen, it proudly told me I’d restored 4,244 stars across 9 journeys. I had never played a full run. Turns out my tests were writing to the real save file - every test that relit a star bumped the actual player profile, and it had been quietly inflating for days.

Fix was a test-only backend: in headless test mode the save lives in memory and never touches the real file. Round-trips and version migration still work, the tests stay honest, and your real profile is yours again. I made it a hard rule for the new save system from the start.

Gates that don’t miss

The other nice unlock: at runner speed you blow past a point in a single frame, so checking “is the player on the node right now” drops inputs constantly. Testing the swept segment from last frame to this frame against the node sphere fixes it - you can be going full tilt and a clean pass still counts. Perfect-center passes score extra.

Where it stands

Honest version: it’s systems-complete and every piece is proven by an automated test - 40 of them, movement, track, gates, combo, a full run, save, Hearth - but it is not visually playable yet. There’s no Wick model, no gate glow, no run HUD, no Hearth view. I built the entire core behind tests and haven’t actually watched it move.

So the next pass is pure presentation: give the runner its body, light up the gates, show the HUD, and wire the mode select so you can press Play and ride it. The skeleton is real and verified; now it needs skin.

Replying to @darshjain

0
1
Open comments for this post

3h 56m 31s logged

Starwick - making it look and feel premium

Spent this stretch on two things: making the realm look premium, and making it feel premium.

The realm became a journey

You now relight several star-sites in a row - a companion leads you to each, you trace its constellation, the ground warms, a new light calls you onward. Restore the whole sky, then make the choice. And there’s a roster of companions: the one you carry seeds the world - different terrain, layout, palette, color, even the music. Replay and you’re somewhere new with someone new.

Looks premium

No new art, just rendering: a filmic color grade with glowy bloom, a horizon haze with a richer nebula, crystals that went from flat cutouts to lit glass that catches light, and a focus-pull that softly blurs the world behind dialogue. Aiming at the Sky / Gris look, not photoreal - the right call for a game built entirely from code.

Feels premium

Everything reacts: a screen-punch and crystal pop on relight, buttons that pop in, a counter that punches when it ticks. Every tap, trace, and relight makes a synthesized sound, with matching haptics on a phone. None of the audio is recorded.

The day it went black

Reached for ACES tonemapping plus heavy contrast and vignette, and the whole scene crushed to near-black - nebula and terrain just gone. Swapped to a gentler tonemap, lifted exposure, dropped the bloom threshold so things glow instead of clip, and it came back better than before. Bonus near-miss: I wanted horizon fog but fog eats a star field - turns out the sky’s shader ignores scene fog, so the land hazes while the stars stay crisp. Accidentally perfect.

Where it stands

Looks and feels like a real game now Caveats: no title screen yet, and it doesn’t remember you between runs - a persistent sky and a collection screen are next.

Starwick - making it look and feel premium

Spent this stretch on two things: making the realm look premium, and making it feel premium.

The realm became a journey

You now relight several star-sites in a row - a companion leads you to each, you trace its constellation, the ground warms, a new light calls you onward. Restore the whole sky, then make the choice. And there’s a roster of companions: the one you carry seeds the world - different terrain, layout, palette, color, even the music. Replay and you’re somewhere new with someone new.

Looks premium

No new art, just rendering: a filmic color grade with glowy bloom, a horizon haze with a richer nebula, crystals that went from flat cutouts to lit glass that catches light, and a focus-pull that softly blurs the world behind dialogue. Aiming at the Sky / Gris look, not photoreal - the right call for a game built entirely from code.

Feels premium

Everything reacts: a screen-punch and crystal pop on relight, buttons that pop in, a counter that punches when it ticks. Every tap, trace, and relight makes a synthesized sound, with matching haptics on a phone. None of the audio is recorded.

The day it went black

Reached for ACES tonemapping plus heavy contrast and vignette, and the whole scene crushed to near-black - nebula and terrain just gone. Swapped to a gentler tonemap, lifted exposure, dropped the bloom threshold so things glow instead of clip, and it came back better than before. Bonus near-miss: I wanted horizon fog but fog eats a star field - turns out the sky’s shader ignores scene fog, so the land hazes while the stars stay crisp. Accidentally perfect.

Where it stands

Looks and feels like a real game now Caveats: no title screen yet, and it doesn’t remember you between runs - a persistent sky and a collection screen are next.

Replying to @darshjain

0
1
Open comments for this post

4h 50m 48s logged

Starwick - you can walk it now

Big one. Up to now the game was a sky in front of your face - pretty, but you were a floating eyeball. This update turns it into a place you stand in and walk across, where relighting a star physically changes the ground around you, and the music shifts depending on where you are.

What I built

  • A procedural realm. The terrain is a seeded heightfield - no heightmap file, just noise sampled into a mesh, with the same function feeding the walking code so you actually follow the slopes instead of clipping through them.
  • First-person walking. Floating joystick to move, drag to look, a carried lantern, gravity-ish ground-snap. The camera stopped flying and started walking, which sounds small and was secretly half the work.
  • Star-sites you find. Crystal formations mark each site, a constellation hangs above one of them, and you trace it to relight it.
  • The world reacts. Relighting a site warms its crystals from cold blue to gold and a beacon lights up pointing you to the next one. The change is local - it happens where you are, not as a global filter.

The bar that refused to be a circle

The relight has a shockwave - a ring that expands out from the star. Except it kept rendering as a flat horizontal white bar. Looked like someone drew a highlighter line across the screen.

Took me a while to realize the torus mesh sits in one plane and I was aiming the wrong axis at the camera, so the ring was permanently edge-on. Point the ring’s actual face at the camera and it pops into a clean expanding circle. One line. I stared at a glowing strip for longer than I’ll admit.

And a camera that rendered nothing

My screenshot oracle kept saving pure black for one shot. Same code worked for the next shot in the same function. Turns out a freshly created camera doesn’t render to its texture on the first frame - it needs a beat to warm up, or an explicit render call. The second shot worked because the camera was already warm. Forced a synchronous render and the black frames went away.

Sound that follows you

The score is layered now - a drone underneath, a pad that swells as you get near a site, a motif while you trace, a tense layer during a choice, and a full bloom on relight. And the stars pulse in time with it - brighter when the music swells. None of it is recorded; it’s all synthesized in code, mixed live by how close you are and what you’re doing.

Where it stands

You can walk the realm, find a site, trace the constellation, watch it warm the world, and the score moves with you.

Starwick - you can walk it now

Big one. Up to now the game was a sky in front of your face - pretty, but you were a floating eyeball. This update turns it into a place you stand in and walk across, where relighting a star physically changes the ground around you, and the music shifts depending on where you are.

What I built

  • A procedural realm. The terrain is a seeded heightfield - no heightmap file, just noise sampled into a mesh, with the same function feeding the walking code so you actually follow the slopes instead of clipping through them.
  • First-person walking. Floating joystick to move, drag to look, a carried lantern, gravity-ish ground-snap. The camera stopped flying and started walking, which sounds small and was secretly half the work.
  • Star-sites you find. Crystal formations mark each site, a constellation hangs above one of them, and you trace it to relight it.
  • The world reacts. Relighting a site warms its crystals from cold blue to gold and a beacon lights up pointing you to the next one. The change is local - it happens where you are, not as a global filter.

The bar that refused to be a circle

The relight has a shockwave - a ring that expands out from the star. Except it kept rendering as a flat horizontal white bar. Looked like someone drew a highlighter line across the screen.

Took me a while to realize the torus mesh sits in one plane and I was aiming the wrong axis at the camera, so the ring was permanently edge-on. Point the ring’s actual face at the camera and it pops into a clean expanding circle. One line. I stared at a glowing strip for longer than I’ll admit.

And a camera that rendered nothing

My screenshot oracle kept saving pure black for one shot. Same code worked for the next shot in the same function. Turns out a freshly created camera doesn’t render to its texture on the first frame - it needs a beat to warm up, or an explicit render call. The second shot worked because the camera was already warm. Forced a synchronous render and the black frames went away.

Sound that follows you

The score is layered now - a drone underneath, a pad that swells as you get near a site, a motif while you trace, a tense layer during a choice, and a full bloom on relight. And the stars pulse in time with it - brighter when the music swells. None of it is recorded; it’s all synthesized in code, mixed live by how close you are and what you’re doing.

Where it stands

You can walk the realm, find a site, trace the constellation, watch it warm the world, and the score moves with you.

Replying to @darshjain

0
1
Open comments for this post

2h 7m 8s logged

Starwick - the whole loop finally runs

Quick one. The vertical slice is playable end to end now, and for the first time it actually feels like the thing I pitched myself instead of a pile of systems that happen to compile.

What the loop is

You’re a Wick - a small candle-soul whose job is to relight dying stars. The
slice is one star:

  • Drag your finger across five dim points to trace the constellation.
  • It catches. The star reignites - motes spiral in, a core ignites, a shockwave
    ring pushes out, your companion reacts, the camera breathes.
  • The sky asks what you want to do with it. Two answers: let it rest, or send it
    onward.
  • You pick. The world shifts to match - warm gold if you send it on, a colder dim if you let it rest - the ending plays, and then it offers to begin again.

The bug that actually mattered

The choice screen looked done before it was done. Two buttons, tap one, ending plays. Fine. Except the constellation and the companion both live in the same world behind that screen, and they were still listening. So a tap meant to pick “send it onward” also poked the companion, and a stray drag re-traced stars that were already lit. The UI was a sheet of glass with holes in it.

The fix was boring and correct: one piece of state that says “something modal is up - dialogue, journal, or a choice.” Everything in the world that reads input
checks it first and shuts up while it’s true. Once that landed, taps stopped leaking and the choice felt like a choice instead of a coincidence.

Where it stands

The slice runs: trace, relight, choose, branch, two endings, restart - and the sky remembers the run. Everything’s checked by a headless pass that renders the scene and asserts on it, so I’m not eyeballing regressions every time.

What’s not there yet: it’s still a sky in front of you, not a place you walk through. Next is lifting the constellation into the actual world and building the
first realm you can move around in. That’s the jump from “pretty” to “somewhere.”

Starwick - the whole loop finally runs

Quick one. The vertical slice is playable end to end now, and for the first time it actually feels like the thing I pitched myself instead of a pile of systems that happen to compile.

What the loop is

You’re a Wick - a small candle-soul whose job is to relight dying stars. The
slice is one star:

  • Drag your finger across five dim points to trace the constellation.
  • It catches. The star reignites - motes spiral in, a core ignites, a shockwave
    ring pushes out, your companion reacts, the camera breathes.
  • The sky asks what you want to do with it. Two answers: let it rest, or send it
    onward.
  • You pick. The world shifts to match - warm gold if you send it on, a colder dim if you let it rest - the ending plays, and then it offers to begin again.

The bug that actually mattered

The choice screen looked done before it was done. Two buttons, tap one, ending plays. Fine. Except the constellation and the companion both live in the same world behind that screen, and they were still listening. So a tap meant to pick “send it onward” also poked the companion, and a stray drag re-traced stars that were already lit. The UI was a sheet of glass with holes in it.

The fix was boring and correct: one piece of state that says “something modal is up - dialogue, journal, or a choice.” Everything in the world that reads input
checks it first and shuts up while it’s true. Once that landed, taps stopped leaking and the choice felt like a choice instead of a coincidence.

Where it stands

The slice runs: trace, relight, choose, branch, two endings, restart - and the sky remembers the run. Everything’s checked by a headless pass that renders the scene and asserts on it, so I’m not eyeballing regressions every time.

What’s not there yet: it’s still a sky in front of you, not a place you walk through. Next is lifting the constellation into the actual world and building the
first realm you can move around in. That’s the jump from “pretty” to “somewhere.”

Replying to @darshjain

0
1
Open comments for this post

4h 57m 23s logged

starwick - it moves now, and it remembers

big stretch of work. the cosmos went from “pretty to look at” to a place that tells you something and actually feels alive. three threads landed: the story shows up on screen, everything became real crafted 3d, and i finally taught my tests to see motion.

the story shows up

relight a constellation now and it speaks. a line types out across the bottom - “a star has gone dark. you feel the absence before you see it.” - the stars flare, and a memory surfaces: the ferryman’s lantern, someone who lit the way for others and got forgotten the moment they weren’t needed. those memories collect in a journal you can open. it’s the first time starwick has felt like it’s about something, not just nice to drift through.

everything got crafted

i ripped out the “glowing blobs of particles” look. the companion and the thing you carry are real 3d now - a glowing core wrapped in actual orbiting rings (generated the ring meshes in code). the lantern is an ember inside three tilted rings spinning at different speeds, like a little orrery of light. vesp got a proper body too and now spring-follows you with a bit of lag and overshoot instead of sliding around on rails - it reads as a thing with weight that’s choosing to keep up with you.

making the relight a moment

the relight used to be a flat on/off. now it’s staged: the star contracts, motes spiral inward, the core ignites, a shockwave ring blows outward, the companion reacts, and the camera breathes back. small thing, couple seconds, but it turns “i pressed the thing” into “something happened.”

where it stands

a flyable procedural cosmos, a companion that follows and sings and reacts, the relight-a-constellation loop with a real cinematic beat, and a story that surfaces as you go .

starwick - it moves now, and it remembers

big stretch of work. the cosmos went from “pretty to look at” to a place that tells you something and actually feels alive. three threads landed: the story shows up on screen, everything became real crafted 3d, and i finally taught my tests to see motion.

the story shows up

relight a constellation now and it speaks. a line types out across the bottom - “a star has gone dark. you feel the absence before you see it.” - the stars flare, and a memory surfaces: the ferryman’s lantern, someone who lit the way for others and got forgotten the moment they weren’t needed. those memories collect in a journal you can open. it’s the first time starwick has felt like it’s about something, not just nice to drift through.

everything got crafted

i ripped out the “glowing blobs of particles” look. the companion and the thing you carry are real 3d now - a glowing core wrapped in actual orbiting rings (generated the ring meshes in code). the lantern is an ember inside three tilted rings spinning at different speeds, like a little orrery of light. vesp got a proper body too and now spring-follows you with a bit of lag and overshoot instead of sliding around on rails - it reads as a thing with weight that’s choosing to keep up with you.

making the relight a moment

the relight used to be a flat on/off. now it’s staged: the star contracts, motes spiral inward, the core ignites, a shockwave ring blows outward, the companion reacts, and the camera breathes back. small thing, couple seconds, but it turns “i pressed the thing” into “something happened.”

where it stands

a flyable procedural cosmos, a companion that follows and sings and reacts, the relight-a-constellation loop with a real cinematic beat, and a story that surfaces as you go .

Replying to @darshjain

0
1
Open comments for this post

1h 34m 58s logged

starwick - relighting the sky

third devlog. the cosmos isn’t just something to look at now - you can fly through it, trace a dead constellation to bring it back, and poke the companion to get a reaction. the core thing you do in the game finally exists.

the verb

dead constellations hang in the sky as dim blue stars. you drag across them in order, a line of light links each one, and when the shape closes it relights - the stars flare gold, sparks burst out, a star reborn (the game counts how many you’ve brought back). small moment, but it feels good, and it’s what everything else will hang off.

moving + vesp

input’s online. you can fly around - move and look, keyboard at the desk, thumbstick + drag on a phone, same code. and vesp, the companion, now answers a tap: it pulses and its little tune swells for a second. went from “thing floating near you” to “thing that notices you.”

the fight

two real ones. first, none of my input worked and every test exploded with an exception - turns out the project’s on the new input system only, and i was calling the old input api, which just throws. rebuilt it on one input layer that handles mouse and touch the same.

second, my movement test kept insisting the camera didn’t move - except it was moving, just not far. i was counting frames, and headless each frame is a sliver of a second, so 60 of them barely budged it. measured by time instead of frame count and it was exactly right.

where it stands

fly through a glowing procedural cosmos, trace constellations to relight them, a companion that follows, sings, and reacts. all generated in code - no art or audio files.

starwick - relighting the sky

third devlog. the cosmos isn’t just something to look at now - you can fly through it, trace a dead constellation to bring it back, and poke the companion to get a reaction. the core thing you do in the game finally exists.

the verb

dead constellations hang in the sky as dim blue stars. you drag across them in order, a line of light links each one, and when the shape closes it relights - the stars flare gold, sparks burst out, a star reborn (the game counts how many you’ve brought back). small moment, but it feels good, and it’s what everything else will hang off.

moving + vesp

input’s online. you can fly around - move and look, keyboard at the desk, thumbstick + drag on a phone, same code. and vesp, the companion, now answers a tap: it pulses and its little tune swells for a second. went from “thing floating near you” to “thing that notices you.”

the fight

two real ones. first, none of my input worked and every test exploded with an exception - turns out the project’s on the new input system only, and i was calling the old input api, which just throws. rebuilt it on one input layer that handles mouse and touch the same.

second, my movement test kept insisting the camera didn’t move - except it was moving, just not far. i was counting frames, and headless each frame is a sliver of a second, so 60 of them barely budged it. measured by time instead of frame count and it was exactly right.

where it stands

fly through a glowing procedural cosmos, trace constellations to relight them, a companion that follows, sings, and reacts. all generated in code - no art or audio files.

Replying to @darshjain

0
1
Open comments for this post

2h 29m 23s logged

starwick - meet vesp

second devlog. last time starwick was an empty glowing void. now it’s got soft twinkling stars, a proper wispy nebula, and a companion floating next to you humming its own little tune. starting to feel less like a screensaver and more like a place.

the cosmos got real

the stars used to be blocky squares (default particle, no texture). swapped them for soft round points i generate in code - a radial gradient sprite - plus a twinkle layer that fades stars in and out so the field shimmers. bumped the bloom so the bright ones actually glow.

the nebula was the fight. first pass was a few clean soft blobs, looked like lens flares. so i made it noise-based - fractal perlin clouds with a soft falloff - and overshot the other way, came out dark and basically invisible lol. third try: dropped the noise threshold and roughly doubled the color and alpha, and now it’s vivid purple-and-blue wisps sweeping across the whole sky. took three goes to land that one.

vesp

the companion. a small violet mote that orbits near you, bobs around, and plays a soft synthesized motif - a little bell arpeggio - that layers over the ambient drone. no samples, the melody’s built from sine waves like everything else.

first attempt vesp came out as a giant white sun, lol. i’d picked a bright purple but cranked the hdr way too high, so between that and the bloom the core blew out to pure white and it hogged the whole frame like a second star. dialed the color back, shrank it, pushed it further out, and rebuilt it from a hard sphere into a cluster of soft glowing dots. now it reads like a little spirit drifting with you instead of a death star.

where it stands

empty void -> twinkling stars + vivid nebula -> a companion that floats beside you and sings. all still procedural, no art or audio files anywhere.

next up is the actual game verb: tracing constellations to relight stars, and being able to reach out and interact with vesp.

starwick - meet vesp

second devlog. last time starwick was an empty glowing void. now it’s got soft twinkling stars, a proper wispy nebula, and a companion floating next to you humming its own little tune. starting to feel less like a screensaver and more like a place.

the cosmos got real

the stars used to be blocky squares (default particle, no texture). swapped them for soft round points i generate in code - a radial gradient sprite - plus a twinkle layer that fades stars in and out so the field shimmers. bumped the bloom so the bright ones actually glow.

the nebula was the fight. first pass was a few clean soft blobs, looked like lens flares. so i made it noise-based - fractal perlin clouds with a soft falloff - and overshot the other way, came out dark and basically invisible lol. third try: dropped the noise threshold and roughly doubled the color and alpha, and now it’s vivid purple-and-blue wisps sweeping across the whole sky. took three goes to land that one.

vesp

the companion. a small violet mote that orbits near you, bobs around, and plays a soft synthesized motif - a little bell arpeggio - that layers over the ambient drone. no samples, the melody’s built from sine waves like everything else.

first attempt vesp came out as a giant white sun, lol. i’d picked a bright purple but cranked the hdr way too high, so between that and the bloom the core blew out to pure white and it hogged the whole frame like a second star. dialed the color back, shrank it, pushed it further out, and rebuilt it from a hard sphere into a cluster of soft glowing dots. now it reads like a little spirit drifting with you instead of a death star.

where it stands

empty void -> twinkling stars + vivid nebula -> a companion that floats beside you and sings. all still procedural, no art or audio files anywhere.

next up is the actual game verb: tracing constellations to relight stars, and being able to reach out and interact with vesp.

Replying to @darshjain

0
1
Open comments for this post

2h 12m 58s logged

Starwick - a cosmos

first devlog. starwick’s a procedural cosmic adventure i’m building

what’s in it so far

right now it’s just the bootable cosmos. no art, no audio files, nothing downloaded, it’s all generated in code. 700 stars on a sphere around the camera, bloom and vignette, and an ambient drone synthesized at runtime (few detuned sines + a slow lfo).

Starwick - a cosmos

first devlog. starwick’s a procedural cosmic adventure i’m building

what’s in it so far

right now it’s just the bootable cosmos. no art, no audio files, nothing downloaded, it’s all generated in code. 700 stars on a sphere around the camera, bloom and vignette, and an ambient drone synthesized at runtime (few detuned sines + a slow lfo).

Replying to @darshjain

0
1

Followers

Loading…