I was looking forward to finding more clues, would be interesting to see more. I liked the detective mode mechanic.
On my computer the text was cut off at the left and right in both embedded and full screen view btw. Screenshot attached.

So is this what appears when you first open the game? I can't reproduce this. The normal main menu pops up for me. Hm.
Can you open the browser debug tools and see if it logs any error messages when you load the game? It might be the browser crashing during start.
In any case the free Steam demo will be out next week so it will be playable there in a more stable form soon.
I was able to fix the toon shader with this diff. Here's why it works:
1. sample_world_dpos reconstructs world position using the depth buffer
2. It passes texture(DEPTH_TEXTURE, screen_uv).r directly as the clip-space z
3. That works in Forward+/Vulkan where NDC z is [0, 1] — depth maps directly to it
4. In gl_compatibility/OpenGL, NDC z is [-1, 1], so depth (which is [0, 1]) must be remapped to 2*depth - 1 before using it with INV_PROJECTION_MATRIX
5. With the wrong clip z, world_dpos.y ends up reconstructed above the water surface, which makes edge_foam_depth = 1.0 everywhere, which creates pure white foam
--- a/src/shader/water_toon.gdshader
+++ b/src/shader/water_toon.gdshader
@@ -3,6 +3,10 @@
#define USE_DISPLACEMENT 1
#define USE_STYLIZED_LIGHTING 1
#define USE_UNSHADED 0
+// Set to 1 when using the gl_compatibility renderer.
+// OpenGL depth buffer [0,1] maps to NDC z [-1,1] and must be remapped
+// before reconstruction; Vulkan (Forward+) uses [0,1] NDC z and does not.
+#define GL_COMPATIBILITY 1
shader_type spatial;
#if USE_UNSHADED
@@ -85,7 +89,11 @@ vec3 sample_caustics(vec2 uv){
#endif
vec4 sample_world_dpos(vec2 screen_uv, mat4 inv_proj_mat, mat4 inv_view_mat){
- vec4 clip_pos = vec4(screen_uv * 2.0 - 1.0, texture(DEPTH_TEXTURE, screen_uv).r, 1.0);
+ float depth = texture(DEPTH_TEXTURE, screen_uv).r;
+ #if GL_COMPATIBILITY
+ depth = depth * 2.0 - 1.0;
+ #endif
+ vec4 clip_pos = vec4(screen_uv * 2.0 - 1.0, depth, 1.0);
vec4 view_pos = inv_proj_mat * clip_pos;
view_pos /= view_pos.w;
vec4 world_dpos = inv_view_mat * view_pos;Thank you!
I've gotten a lot of feedback that changing of levels is unexpected. FWIW it happens when the clock in the top right completes a circle.
Also it's not explained in the game, but you never really lose chests. If they despawn by being offscreen or the level ending, they'll immediately respawn.
"what does square actually do? does it give more points each transformation?"
Yeah, exactly. It goes through a bunch of shapes, each one worth +1 more than the last. This should probably be explained better on the card somehow.
"maybe add option to inspect items in inventory (their stats, not just number) "
Yeah, this will come. Need to add hover/click to show details in the inventory.
"feels like cherry spawns hole-man much less than its supposed to"
I sometimes feel this too. I think it's just that 10% is actually kind of low. 10 cherries is a lot and the nature of randomness is that it might even take like 20 to trigger. It's a bit annoying that it's SO random that it's hard to plan around.
Thanks so much for the feedback!
"maybe try adding an option to render the game at a lower resolution? that should help with performance on mobile devices, which often have very high resolution displays but wimpy GPUs"
Actually this already exists in the graphics menu ("Resolution Scaling").
"the robots are cute, but i wish they had more upgrades."
Strongly agree - more upgrades for helpers will be added.
"hole-man is shockingly more of a hindrance than a helper"
Yeah he's kind of weirdly situational. It's great if there's a lot of junk around but sometimes it's annoying for the hole to move when you're using it. Will iterate.
It looks like if you hit escape the game freezes forever and you have to refresh. I was just trying to get a menu. :(
I like it. Could use sound! Also I'd love if the buildings looked different (even bigger) as they upgrade.
Also I didn't realize at all you could upgrade buildings for a long time. I thought you just had to wait a long time to accumulate at +1 at a time. Nothing prompts you to click on a structure that already exists.