Almost all of my excess anxious energy the last few days has been funneled into this game engine.
Let's review:
This is a browser-based game engine for 3D walking around type games. Not platformers. There's no jumping.
3D asset development and level design happens in Blender. The world is exported as a single GLB file. Eventually I want to write a script that watches for changes to the .blend file, automatically exports, and hot-reloads the updated asset in browser.
Any object that's named starting with the string "interact-" in Blender will be interactive in the world. Getting close to it makes a little icon appear above it. When you see that floating cone, you can hit the interact key to trigger a script. Specifically, you're triggering a knot in an Ink file. The object called interact-foobar in Blender starts the foobar Ink knot. Dialog and any choices show up in a text box overlay. Eventually some special syntax in the Ink script will be able to trigger things in the world: play a sound, make an NPC emote, run an animation that lifts a gateā¦
Collision is very simple because I cut jumping. If the height of the area immediately in front of you is not too different from the height of the area you're standing on, you can move to it. This makes for some slightly weird requirements in level design, like making the bit of architecture above a doorway invisible to the raycaster that's handlign collision detection. (You do this by adding -nocollision to the end of the name of the object in Blender.) As I type this I'm realizing that instead of looking at the first raycaster intersection from a top-down perspective, I can look for any intersection that is close enough to your current height to be walkable. If that works, this weird requirement goes away and I get stacked floors for free. I had a weird plan to make those work that I might not actually need. Cool.
That's the whole thing for now. There's a game jam at the end of the month that I'd like to use this for.
That's truly a pretty comprehensive update on my life since the last week in review, so goodbye!