This chapter features foot worship in Princess Serafina’s bedroom. It contains 20+ minutes of gameplay, world building and many tech improvements.
Fully 3D foot worship mini game that works in VR & non-VR!
As promised, it contains world’s first fully 3d foot worship mini game (that I know of)! I spent nearly a week improving the licking mini game over chapter 1 here. There is no failure state but the Princess expresses her anger. If you haven’t cleaned most of her sole by a certain point in the conversation, she will admonish you and tell you to hurry up. I really don’t want to structure the chapter progression around failure screens or multiple endings, more as an immersive experience where the point is to experience a slice of another world. So, this sort of pattern will continue for a while. If you are supposed to succeed, the game will narratively give you more chances to succeed during the act without needing to replay the level. And if you are supposed to fail, that’s what will happen narratively.
- The dirt layer creation & disappearance/deformation logic is hugely better compared to chapter 1. During animation, the dirt layer now doesn’t disappear momentarily behind the foot/shoe mesh like it did chapter 1. It doesn’t have as many clearly visible seams either. Also way more efficient as the foot mesh here especially toes are way higher poly than the boot model in chapter 1. I would like to work on its aesthetic a little bit more but here I was going for a dirt mixed with very watery sweat.
- The licking detection logic i.e. the algorithm that detects which spot the tongue is touching is way more accurate. It actually has only one flaw that makes it tricky to get into one particular part of the foot (you’ll know) but otherwise it’s perfect!
- Tongue physics have been improved a little. It rolls horizonally way better now which makes side ways licking motions less frustrating.
- But I ran into a brick wall here, I could not figure out how to fully fix stop the tongue getting stuck/rubberbanding and taking 1-2 seconds to recover. I might actually have to switch the whole physics engine, going to experiment with Jolt in a few months.
- I’ve added a small QoL feature to make it way less likely for the tongue to get stuck/rubberband. The tongue now smoothly retracts the closer your are to her foot. Completely disappearing if you get too close. This not only fixes rubberbanding majority of the time but also makes like a stabbing like - back forth motion possible that helps with aiming.
- Player’s Head/body movement is smoother/eased now with gradual acceleration and slowing down. It makes it way more pleasant.
- Added a movement senstivity option to the settings too if you want to move faster or slower. A view senstitivty option was already available in the options if you default senstivity is too low.
Bigger story
As you worship her feet, she tells you about the world and her life. I don’t wanna spoil the story here but the total text/audio size is over double the size of Chapter 2. So bigger than both chapter 1 & 2 combined.
I hope you like the direction the story will take. The eventual goal is to have you go to university with her, and not only be her classmate but also her slave at the university.
The Princess’ bedroom!
I wasn’t originally planning to create a new location, but honestly I’d gotten a little bit bored of the dungeon (we might go back there for next chapter). Not sure if the effort was worth it as modeling, optimization, lightmapping and everything took 10+ days. I like Fire Emblem and really love the aesthetic of Somniel and the bedroom there. Ended up mostly copying that with modifications but in much simpler fashion as I don’t really have a huge texture or polygon budget as I want to support Quest standalone, iPhone & Android devices. Plus, I want to improve the Princess’ model instead of having a detailed environment. But still, this location is much higher in quality compared to the dungeon. Moving forward, I might actually do lower poly environments as I want to make more open and bigger environments eventually. I hope you enjoy this tho!
Other improvements & features
Customizable clothes!
On a patron’s (or should I say hero?!) request. In the settings now, you can get back the latex outfit from chapter 1! Don’t forget to turn on dynamic reflections if you do this and have a powerful device! There’s a few other options here too. Such as those funky metal claws from the pre-alpha video. Some aren’t tested fully and really on the main outfit is officially “canon”, but I hope this replay value.
P.S. it’s not really high quality/ready for release but if a Patron requests, I could supply them with a secret/cheat code that enables the naked mode.
Princess moves her eyes now!
In chapter 1 & 2, you might’ve noticed her eyes are always glued to the player. Here, while talking to you, she now looks away in different directions occasionally depending on what she’s saying. This alone was 2+ days worth of work as its a manual process to code & test the eye movement per dialogue line/animation. Not to mention adding this feature to the 3d model and wiring it up!
She moves her head now dynamically now too!
I kinda got sick of her head just following the animation perfectly - never perfectly facing the player. That’s now fixed! Here, in both VR & non-VR, most of the time she’ll be looking at you with her head too! The head gently follows you around as you move in VR. It’s really cool and immersive, a small step toward procedural animation. This is also customized per dialogue line just like the eyes! So, she will look away and around a little as she talks to you.
Prettier shadow darkened areas
This was a bit of a unexpected snag. In the dungeon room, I put these bright candles everywhere which made Princess’ look great! But when I added shadows, I still tried to ensure the main shadow casting light was always in her front so she always stayed lit and looked good! I didn’t realize how much work just having specular lighting all around was helping her look good in chapter 1 & 2. But here I wanted to do just one 1 source of light: the moon. And when you enter the room, the moon would have to be behind her.
This with the previous gray/blackish shadows didn’t look great cause, there was barely any detail left in her skin. Even without shadows, it didn’t look godo. I spent days just getting the specular and indirect lighting feel right. In fact, implemented custom shadow darkening for just her skin’s color and clothes. Any shadow darkened area on her skin leaves a bit more “red” in her skin, so she doesn’t look faded out. This helps her not be too dark or washed out and still feel like she’s a part of the room.
Better perf on Quest standalone!
I’ve disabled some detailed physics features I’d added that were always enabled previously (You can turn them on using Advanced Physics options in settings manually). I didn’t realize how huge an impact they were having on CPU usage on some devices until I did some profiling. These are now disabled by default and it should improve FPS on Quest. Please test it out if you have a Quest, I need feedback from both Quest 2 & Quest 3 players.
I’ve added a more detailed in in-VR performance monitor that players can turn on too via settings.
I also found out something a little sad: Quest standalone/Quest browser by default render WebXR experiences at 50%half resolution (so really quarter) of the native display res. There is an unofficial way to ask it to render it at the right resolution. But currently, doing native resolution on standalone Quest just tanks the FPS to unplayable for me. I will be aiming to improve perf to eventually reach this. But even now, I am considering adding a slider to scale resolution. So even now, we might be able to get 75% of native res. Hell, even 10-20% res improvement will be huge, that’s quality we’re currently leaving on the table. Note: This does not apply to PCVR to Quest, only standalone play via Quest browser.
Way less crashes on iOS & Android!
I figured out some key mistakes I was making regarding decoding audio too early and putting it in RAM. I think this should solve crashes on mobile hugely. I lazily load audio files over the web as needed now instead of preloading & decoding them them all instantly. This has some other concerns but I’ve tried to make
More reliable first load
Because we’re downloading hundreds of different files over the network totaling over to be over 100mb+, and even a single failure would cause an error during initial load asking the player to reload the game. Although, the old downloaded files would be cached so the reload would be faster, it was nonetheless annoying and not the best introduction to the game.
Now, I’ve implemented a retry strategy that on failure, tries to download the files 2 more times with a small delay. This should solve this problem massively for 99% of people who were running into it.
