In the original vertical slice Play Mode was completely absent. There was no way to directly interact with the girl and, while it made sense given the constraints at the time, I really should have implemented this before sending it out into the world. They say hindsight is 20/20. Lucky for us, 2020 is upon us now, and here’s what I plan to do during its first few months.
At the time of writing Play Mode is coming along rather nicely. We can navigate around the model, a substantial part of the UI has been created, and the technical issues regarding tool functionality have mostly been solved
All functionality in Play Mode will be split into tools, the first of which is the hand.
The hand tool will initially be used to conduct one of two actions: Undressing Nekome and petting her.
Petting is a little bit of an oversimplification; depending on where the hand is the action switches between petting, squeezing and giving scratchies. All of these are currently functional, but still require some animations, as well as a proper bodypart ID map.
This is just the most basic implementation of an insertion tool. It took some trial and error to make this work intuitively, but I’m pretty pleased with the results.
The toy “soft snaps” into place as it gets in line with a potential target, being forced into position more the closer it gets to being inserted. Holding down the left mouse button will prevents it from drifting out of line entirely, allowing for quick and easy fast thrusts.
The tool is mostly done, with some animations, events and reaction handling still needing to be done.
The first thing I want to do after finishing the dildo is making sure Nekome can respond with some simple animations and emojies rather than just text. For example, she might get shy as the tool gets closer, or throw out a “!” bubble as the toy is inserted or her clothes get pulled off.
After that I’ll probably focus on her emotions some more and finish off the talking system. But more on all of that later!
For the nerds
So because Nekome and the camera are always moving I can’t bake any static ID textures to recognize where the user’s pointing at. I also can’t use colliders as they don’t give me the fine-grained control I need.
Instead, I render Nekome and her clothes two more times with replacement shaders. The first shader encodes a unique identifier (R = bodypart, G = clothing type, B = events, triggers and misc.) while the second renders out the screen-space pixel normal, as well as the depth from the camera. The results directly under the cursor are stored in a small 2×1 Render Texture.
Reading these pixels back onto the CPU was always a bottleneck, but after migrating the project to Unity 2018.4 I can now use the
AsyncGPUReadback API. It’s not perfect as it doesn’t support OpenGL, but the performance gain is incredible and probably worth the switch.
On my agenda is to expand the resulting texture to a 4×2, allowing tools to sample and use 3 arbitrary points for whatever purpose they desire. The dildo for instance could add 3 extra sample points along its length just to prevent clipping, and a flog could sample both the pixels underneath the handle as well as the tails.
That’s all for this entry!