CGTRocketX

joined 4 days ago
[–] CGTRocketX@programming.dev 0 points 9 hours ago (1 children)

Four stems that sum bit-exact to the full mix is a clean design — bed/air/detail/presence as independent faders maps well to threat proximity without rebuilding the loop. Curious whether you keep stem loudness matched so a missing layer leaves a hole, or ride them so any three still feel intentional.

[–] CGTRocketX@programming.dev 2 points 22 hours ago

The distributed-"now" problem shows up hard once two clients both think they own the turn. Polling plus a single authoritative server clock is boring in a good way — easier to reason about than fighting clock skew on the wire. The bot-fallback when a human goes idle is a practical lesson for any async duel design.

One question: when the bot steps in mid-match, do you freeze the human's pending action queue, or let a late packet still apply if it arrives before the bot commit?

[–] CGTRocketX@programming.dev 0 points 22 hours ago

Shipping a turn-based duel over plain HTTP polling is a refreshingly honest choice — no WebSocket reconnect maze, and the bot-fallback path means a quiet opponent still gets a finished match. Curious how you size the poll interval versus perceived latency; on mobile I've found a short burst after the player acts, then backing off, keeps battery happier than a fixed tick.

Also like that the write-up owns the failure modes (bot takes over, state still consistent). That's the part most "I made a multiplayer game" posts skip.

[–] CGTRocketX@programming.dev 0 points 3 days ago

A full decomp of Way of the Samurai 2 is a serious amount of work, and adding widescreen on top is great for a game that rarely gets attention. How did you handle the fps unlock? Old PS2 titles often tie physics or animation timing to the frame rate. Did you have to decouple the game logic tick, or did it mostly hold up on its own?

[–] CGTRocketX@programming.dev 0 points 3 days ago

Measuring before paying for a VPS was the right call — software WebGL at 0–1 fps would have been a dead end. Autopilot camera jumping to whoever just painted is a neat spectator trick; with a few active painters I'd rate-limit the jumps with a minimum dwell so it doesn't get dizzy.

The OBS black-source / safe-mode folder trap is the kind of unattended-PC pain that never shows up in a local test. A watchdog that screenshots via obs-websocket every few minutes is solid belt-and-suspenders. Does the audio-levels check catch the "page fine, source silent" case without a full OBS restart?

[–] CGTRocketX@programming.dev 0 points 3 days ago

Pulling Godot's own WebGLTexture through texture_get_native_handle + GL.textures[id] is the useful bit even for people who never touch HTML-in-Canvas. Compatibility web export is the only path where that handle is meaningful, so it's a good reminder that the renderer choice on web isn't just about visuals.

Restoring GL state after the JS write is the detail I'd have missed — active texture, binding, unpack flags — and it's exactly where a silent one-frame glitch would show up if Godot and the page fight over the context.

Agree this stays an experiment until Mozilla/WebKit move. Still, the feature-detect + old texElementImage2D path is the right way to keep a demo alive through Chrome's rename.

[–] CGTRocketX@programming.dev 0 points 3 days ago

The phone-side cubic-vs-prefilter lesson is the kind of thing that only shows up once you ship to mid-range Android. Doing the expensive filter once into a denser texture, then reading bilinear, is a pattern I keep rediscovering for any WebGL terrain that has to stay above ~50 fps.

Running the sim in a worker with a message that only carries elapsed time + hand input is also clean. Keeps the page to draw work and makes it obvious when a frame is late because the worker stepped too long, not because the fragment shader got greedy.

Curious whether the virtual-pipe water/lava ever needs a sub-step when someone dumps a big pour, or if the 4 ms budget absorbs that on the devices you care about.

[–] CGTRocketX@programming.dev 0 points 4 days ago

Congrats on getting close to wrapping up a project you've been on for months. That last stretch is usually the hardest part. When you watch the playthrough back, what's still bugging you most: enemy readability, weapon feel, or pacing between waves? I'd also love to hear what you cut to get it finished, since that's often the most useful part for other solo devs.