Early April Devlog
tldr: planning to release the standalone game chapter with Artoria before the end of this month. Going to post a poll for its story/setting after this blog post.
Lots of tech jargon about challenges i faced below for those interested.
What I did in March
Progress on the first standalone game with Artoria has been a little slow. I underestimated (as usual) the effort it'd take to fully optimize the model to be game ready when I said I was nearly done in the last blog post. Had her rendering and animating in the engine on my ok-ish machine when I wrote that which was a major challenge for sure...
But then even before optimizing the model, I saw a few little things that looked off when I paid close attention or looked at her in VR.
Her eyelids going through her iris which was not a problem in Blender as it just hid that part. I had to slightly remodel her lids to get around that.
Subtly the edge of her was head visible through her hair and her hair rendering a little weird too - what should be behind was rendering on top. And the performance was horrible. Spent a few days just making sure her looked good. Rendering hundreds transparent hair cards over each other efficiently is something every other game engine does but I hadn't figured out how to set that up yet as Serafina's model had a lower quality (VRoid) styled meshes for hair that don't require transparency.
I also tried for way too many days trying to get realistic transmission (the way light bends when it enters any glassy or water material) working for her eyes cornea in an optimal manner. Although, it looked beautiful, it had to render the whole scene twice to be perfect which tanked FPS. Every optimization I tried failed and ultimately I just gave up on that. We've still got a nice reflective cornea that works with dynamic reflections but the realistic transmission version is just better. I might still ship it for users with ultra powerful machines but in its current form its a wasteful effect for very little gain.
Bone optimization work
With her looking good, I started optimizing the model further. The og model has way too many bones for capes, skirts, etc that I don't plan to use (yet anyway). It'll be time consuming to animate them and there is way too many of them too so they'll need further optimization. I'd already hid meshes for the cape, etc. But bones need to be removed separately or they're just exported to the engine and you incur a significant CPU cost for no reason. The working model file has an ARP rig, which gets converted to a game-ready rig/armature for use in game engines so it can be animated efficiently at run time.
My plan was to just remove them from this rig before exporting the model. I thought this would be simple - boy was I wrong. I wrote the script to prune/delete the unused bones. This went as planned and everything worked perfectly in Blender. But in my game engine, doing this caused other bones for like her hair to get stuck in place or animating weirdly, making the model completely unusable. I spent days trying to figure out why exactly this was happening. Honestly, never found a satisfying answer. In the end, I decided to just implement this in the engine itself. So we load a slightly larger model, and before showing it to the user, I delete all the extra bones. The algorithm is exactly the same as the previous one but this doesn't cause the bug.
By the point this was done, I was already nearing the end of March. And honestly feeling a little burnt out. So, I decided to take a little detour.
Open world tech work
I decided to focus my energy on something a little bit more fun that I'd been putting off: the open world tech required to support larger environments. I'd been spending a day or two here and there looking at how open worlds work. How exactly do you download huge maps, and then stream millions of triangles for their meshes & their textures to the GPU seamlessly.
I've been looking at open source projects that do this using web-based technologies as the constraints in the browser are way more strict than native tech. I found a renderer for an old open world game's full map using a different graphics library that seemed promising. I'd been putting off porting it over to our tech stack until this point.
But felt like I should give it a go. And that's what I've spent about the past week doing. And I'm happy to say, its looking promising. I've gotten the full world from this old game rendering on our stack. And it works in VR! I think this is the first time an open world has been rendered on the web in a way that's playable using web based VR and works on mobile phones too! Still there is lots of performance work to be done. There is minor stutters when loading new parts of the world, And as usual, it crashes in Safari if you play for more than 5-10 minutes cause of memory usage. And it looks like an early 2000s game at best. But it does work!
This is just the beginning for this work but it is a proof of concept. Making a world of our own for Femdom Isekai will be a huge challenge of its own if/when we decide to go down that path. This is work that'll not pay off for a long time. At least another year, likely longer. But now I know that it is doable.
Plan for April
As of yesterday, I've resumed work on the standalone game chapter.
I'm currently working on implementing the in-game jiggle physics for Artoria's breasts. And physics for her hair too. When that's done I'll start on the environment.
I'm torn between 2 different paths for the story. I'll be doing a poll in the follow up post for this.
