Here's the patch notes for all the changes in February:
Kobolds can face directions during an animation, it's really bad for NPCs but players can nod and look places while playing animations.
Fixed a large number of memory leaks. (Derivatives no longer uses Linq, strands allocate all memory needed up front, reusing physics collisions, no longer pass array copies for grabs, adjusted how components are searched for usables.)
NPC kobolds no longer have hover-hands, hover hands are still networked for players.
Complete reworking of inflatable systems, every kobold body part is driven from internal reagent containers.
Dicks use this same inflatable system to get hard.
Dicks actually source their cum from balls now (they cheat a tiny bit to at least get something out each time they pulse).
Balls can get bigger based on how much pineapple was consumed.
Balls and boobs both regenerate their reagents each night.
More network syncing. (fruit no longer gets stuck, all use events are cached and played back properly on first join.)
Added the new pawnshop, it's a full underground area with some stuff to buy! It has yet to have a progression system.
Debris was added to the farm plot, gotta clear it in order to make room for new plants!
Really big bombs can be purchased from the pawnshop.
Some networking fixes so certain reagent combos no longer cause infinite explosions.
There is now a 15% chance for it to rain each day.
Added a low quality cloud option (just some 2d clouds) so that they can thicken when it rains.
Ragdolls are actually synced now, this can cause them to slide around a bit but in general they're synced.
Finally actually included the ErrorScene, a blank scene that loads when you get disconnected or when you try to join/create a multiplayer game from an offline mode.
More props and map geometry is possible to cover in decals now. Paint the world!
Kobolds can now spawn with hemipenes.
The script that handles body proportions was optimized! Spawning 30 kobolds no longer freezes the game for 40+ seconds.
Dildos can grow by spraying them with eggplant juice or growth reagent.
Dialogue with NPCs has been disabled temporarily as it gets reworked.
Here's the patchnotes for all the changes in January:
Got clouds working again, they only enable if you're using DirectX, Metal, or Vulkan. Since OpenGL seems to have a race condition on the rendering causing some tearing.
Wrote a custom constraint for the precision grabber so that it doesn't mess up as much. Now things are less physically accurate, but things actually move and rotate consistently now.
Animations! A first pass of animations were added that can be initiated by pressing Use on Kobolds near a valid location. There's still lots of problems with it determining which kobold fits which animation best (or if they fit whatsoever), but in general it works and is really fun if you don't mind kobolds doing strange things.
Penetrator physics were adjusted to work with the animation system better. Penetratees now cheat to just be in the "right" spot. Makes characters look really gooey and flexible, but I think it's worth it to keep penetrations looking valid each frame.
Completely threw Unity's Animation Rigging package in the garbage. It didn't scale with character's limbs and was generally very expensive to turn on and off. Replaced it with a from-scratch IK system that knows how to deal with characters of random proportions and sizes. This is only used during Animations, and probably still needs a bit of tweaking.
Big optimization pass, after seeing a user with a KoboldKare executable needing 13 GB of memory; I spent a long time hunting down and squashing unnecessary memory allocations. This not only makes KoboldKare take less memory to run, but also prevents the Garbage Collector from kicking in as often. Game is much smoother and faster now! In general the game went from allocating 10kb PER FRAME to only allocating 40 bytes or so each frame. Slight framerate improvement too (less GC allocations means less ms spent on allocating).
Goopy strands were optimized, and in the process I found out they were deleting themselves too early, they now stretch until they snap, then properly fade out after snapping before self-destructing.
Kobolds now spawn with a random amount of fat.
Player kobolds can now adjust their ball size and chubbiness within the multiplayer options.
Finally, I've modularized how inflatable kobold parts work-- and made them entirely dependant on reagent containers. This comes with a variety of benefits:
Kobold's now have more containers: Belly, breasts, balls, subcutaneous, and penetrators.
Each container has a set of listeners that drive different aspects of the Kobold. For example a Kobold getting hard would require them to pump fluid into it. The listener will see this and drive the proper blendshapes and activate the correct monobehaviors with a slick animation curve. A Kobold digesting ice cream might turn it into fat and store it in the subcutaneous container, a listener will see the fat and drive some fattening blendshapes and adjust softbody physics.
These inflation listeners are unhooked from the metabolization timestep, so they can react instantly to changes that the player makes. This means spraying water at a kobold would instantly have an effect on their belly, rather than waiting the 1-2 seconds for the metabolization tick.
Kobolds are now just a set of penetrators, penetratees, and reagent containers grouped into categories. This can lead to kobolds with multiple sets of penetrators, unique reactions to certain chems, and opens the door to make it easy to add all sorts of other kinds of creatures.
There's a few things that are totally broken while I fix up interactions to work with these new modular systems. Just try to keep flasks away from breasts while I try to fix it over the next couple days!
I was late on these patch notes again because of the holidays! Sorry about that.
Completely reworked the reagent system, it now supports heat, potency, and serialization for multiplayer networking. (Though right now heat and potency aren't used yet.)
Added a banana fruit, it has potassium. Careful!
Added the ability to customize your Kobold within Options.
Options are saved as a JSON again, this is so lower powered laptops can change the settings without launching the game.
Added support for integrated GPUs. Game launches with Vulkan, Metal, Direct3D11, and OpenGL options.
Temporarily disabled clouds, they'll come back when I figure a graphics api agnostic way to render them.
Temporarily disabled two of the extra camera angles, going to replace it with a more robust 3rd person camera soon when animations come around.
Created a new procedural skybox.
Added multiplayer! This was a long time coming, but I'm comfortable enough with the structure of the game to add it!
Not a big list, most of my time was spent trying to stabilize Multiplayer, and get the game running on all kinds of hardware. I've partially succeeded at both! Though there's still quite a bit that needs to be done.
Sorry that these patch notes were a little late! Here they are:
Soft-body physics in the mirror work now.
Usable system rework, pretty much anything that's usable has icons and drag-and-drop conditions for being usable.
New fatten blendshape for Kobolds-- like, really really fat.
Added a new craftable chem: Icecream! Requires milk and ice, makes kobolds fat (see above).
Added subtractive blending to the decal system. Any fluid that's majorly water will actually wash decals now, rather than paint them neon blue!
Kobolds have much broader color expression now, almost pure white and black kobolds can exist.
Kobolds now express themselves as male or female a bit better-- with a blendshape that broaden/squares or softens/rounds. It's analogue so any kobold can have any combination.
Added working showers, faucets, bathrooms, drawers, fridges, ovens! This will be expanded upon later for some more unique interactions!
Fluid volume painting: You can paint kobolds by dipping them into a tub full of chems. The shower also washes them off!
You can precisely measure and mix chems in the tub, then store the resulting fluids into a flask.
Night-time no longer deals damage, it now instead accumulates monster shadow hands that drag you and anything left outside into darkness. Running inside quickly quells the monster! Stay safe!
This month I've been trying to pave way for full blown multiplayer-- This has so far been a really good decision because it's forcing me to clean up how objects interact, and clean up the structure of things. My code is getting cleaner and easier to work with as I approach actual multiplayer readiness.
With lots of new players in mind, I finally tried addressing the fact that the game has really weird controls. I watched a fair number of people play the game, and they all would try the same things at first-- So I tried to transform my controls to work with what these players tried!
I also finally got Localization in the pipeline, luckily I have a lot of friendly users who helped me with the translations-- I haven't got credits ready in the game yet so I might as well post it here: TabbyCatface: Russian, Ukrainian Translation Slowboii and Kujawiaczek: Polish Translation Snaked Snake: German Translation LynxModernWitcher: French Translation Adept Lughir: Dutch Translation
The rest of the languages are machine-translated, if you're interested in helping with the translation, join the KoboldKare discord! https://discord.gg/WGff3rR (and poke me)
Anyway, here's the patch notes for this month:
Added localizations for many languages, dialogue is still in the works though.
UI rework, well more like suddenly there's UI. Should help with figuring out the controls!
Press F to ragdoll.
The "advanced grab" is now buried under a context button (currently shift). This button immediately detaches the mouse and lets you aim and grab stuff. It also shows some helpful UI buttons you can press so you know you can rotate, freeze, and push/pull with it.
Controller inputs should now work properly, they still can't drive the UI, but it's possible to play with them now (with a bit of difficulty).
Casino prototype is in, it's looking really good! Some places inside might look empty because I had to temporarily disable the games.
Ragdoll adjustments and polish, they're still prone to clipping, still look dead, and sometimes their bones seem to unhinge-- but for the most part they've improved a lot!
I've enabled Developer Mode for the build, this is to let players give more meaningful bug-reports. It can open an annoying debug console though, click on it to close it!
Mirror no longer has an incorrect oblique clipping plane.
Switched to indirect lighting for baked lighting for just a slight improvement in the baked lighting.
Added a dynamic reflection probe that updates every 3 seconds, it can cause some weird artifacts, but in general it makes nights look nicer and the environment reflections more convincing.
Attachables no longer apply any physics (goodbye oscillating kobold-flask abominations...)
Hitboxes on penetrators have been refined, though if they're extremely large they'll still "magnet" into things. Smaller ones require much more specific aim and purpose.
Male kobolds can make eggs now, this might not stick around once more chems are added though.
Kobolds ragdoll when thrown, or when their feet are grabbed.
The advanced grab change is something that I've been thinking about for a long time. It used to be bound to the primary mouse button, and permanently affixed to the center of the screen. This caused a lot of confusion though because in practice it was secondary, or even tertiary to the primary game loop. The first thing any player does as they play the game is try to water the egg, and the advanced grab isn't useful at all for that.
And because it was fixed to the center of the screen, it made any sexual interaction really jarring as you had to shake your entire head with the motions. So I've decoupled it from the screen, and buried it behind a context button which switches how your mouse works. The decoupling lets you shake kobolds and penetrators without making yourself sick, and the context button allows for me to pop up a bunch of ui to help players learn how it works. Let me know what you all think about it!
I'll be spending the next couple days updating the patreon, twitter, and steam page to reflect the changes. Next month I'll hopefully actually be working on some multiplayer integrations.
Last month I was discovering a lot of users were completely unable to play the game, some of them even had VR-ready modern hardware!
I made the difficult decision to downgrade to Unity's URP pipeline. This means no more volumetric lights, ambient occlusion, and some other fancy effects.
However, this means even integrated, and mobile hardware can suddenly play the game reasonably! It took a while but I think I'll be sticking to URP for a while.
Casino temporarily removed to make room for the new one (soon).
Replaced decal system with an "infinite" decal system. Make a huge mess!
URP doesn't have a built-in decal solution. I don't actually care about the individual fidelity of each decal, so what I do is re-use the lightmap atlases to map some textures to the world. This allows you to paint the entire world with decals!
Remade the majority of shaders to work within URP, this required some reduction in interpolators so most shaders should be a fair bit more efficient!
The switch to URP allows for real-time reflection probes, I render one every 3 seconds and blend to it. Allows for much more accurate reflections (especially during night).
The player is now completely a Kobold, spawns with random stats just like any other Kobold. Can even get pregnant, have sex, drink potions, and do anything else a Kobold can do.
This was a really big systemic change which pretty much broke EVERYTHING. I really rushed to get this patch out by the end of the month, so there's probably a lot of broken things I haven't gotten to yet. Please be patient as I clean it up!
Penetrators now don't couple immediately on touch if they're not in range of the nearest hole. This means there's no more tripping over them. (This was especially frustrating as a player kobold).
Temporarily disabled AI for the transition into online multiplayer-capable systems.
Fixed the math on rotating props you're holding with R, it should make sense from any direction and perspective now. Still needs a bit of smoothing to look nice, but it's very functional at the moment.
Disabled procedural texture generation, this tech was far too unstable, slow, and made it difficult to test multiplayer. It probably won't come back either, people nowadays don't care about downloading an extra 200mb or so anyway.
Patch notes isn't super long since majority of my time this month was spent switching to URP. Though next month I'm going to have something extremely exciting to show, might have something to do with online multiplayer but no promises!
Here's the changelog of all the stuff I did in July, I tried to keep it to only interesting stuff, so I've glossed over lots of bugfixes.
This month was mainly to stabilize and polish, starting August I think I'm ready to do another broad stroke of content!
Online Substance texture generation, this reduces build size and allows me to craft much more detailed worlds! (Though increases load times significantly.)
Reworked penetration physics.
Kobolds can now have randomized dick shapes (only has two for now).
Arousal mechanics for male Kobolds, gotta shake em a bit to get them excited.
Many graphics options were actually bugged and not changing their quality correctly (only High or Off), now all options work correctly.
Depth of Field, Panini Projection, and Fov options were added.
Grabbed objects now turn transparent (if able to) again.
Now there's nipple approximation for attachables, so boob attachments work better.
Grabbed "weapons" now aim at the cursor rather than forward. This helps a lot when multi-firing flasks.
Input bindings are now serialized and can be changed through a text file within the game's userdata folder.
Reworked softbody colliders and settings, they still need a bit of tweaking, but butts should jiggle more and bellies jiggle more consistently.
Pumping, plapping, and sliding sounds for penetrators.
Disabled dynamic resolution (should prevent some graphics cards from crashing as often).
Kobold hue shift! Kobolds right now spawn with a random hue, in the future their hue will be restrained to Kobold species.
Fixed a UI overlay that was breaking Reshade functionality, only useful to Reshade users but worth mentioning! (Thank you LuxIsBored!)
Sorry I've been so quiet about this update, most of my time was spent trying to home-grow my own behavior tree system for AI. (Technical post to be found on Patreon.) I also spent a lot of time developing a conversation system and dealing with a bunch of bugs that were slightly outside of my control. Anywho I still managed to get some stuff done and I think it's ready to show!
New Features:
A dialogue system! The super market sheep now has dialogue and a tiny completable quest (Press E to talk).
Small button prompts appear near the cursor when you're near contextual actions.
Kobolds now all have their own player controller, and can walk around, do actions, jump, and are still very dumb. They'll get smarter as development continues...
Kobolds will path home when night falls, this currently doesn't happen during the time-skip so you'll still have to gather them up if you're going to skip the day.
Unity update to the 2020 beta! This might fix some crashing issues for some people. (This also makes it so animation overrides work again).
Music is now used very sparingly, still needs work but now it doesn't just loop the 7 tracks or so over and over.
Some minor graphical improvements (floating dust is more dense, soft body physics are more synchronized with character movement, walking dust is now visible (again), some minor character retopology and weight painting).
New flamingo character for the casino, doesn't have any dialogue or AI yet, but will soon!
Optimizations:
Most logic that doesn't need to run every-frame now doesn't, this includes soft-body physics, penetrator/penetratees animation updates, AI, and the music manager.
House has been replaced by some brushwork, it looks a bit nicer but still isn't finished.
Basic brushwork for a city has been put in place, it's still a WIP but it should give some stuff to explore and an idea of how some city buildings might work.
Two new characters have been made and put into idle poses in their respective buildings. (NPC interactions coming soon!)
Audio reverb zones have been set up, different rooms and building locations should have a noticeable difference in audio reverb.
Many textures have been replace with procedural textures, they still aren't generating at runtime, but as soon as a bug in Substance's Unity plugin is fixed, we'll be able to have a LOT more high-res textures without taking up lots of data.
Fruits all now have random sizes and contain coherent amounts of juices.
Kwicc n' Thicc has been replaced by a generic super store, the store re-stocks each day with a certain amount of goods.
New main menu, it doesn't have any tessellated geometry or any complex parts. This should make it easier for lower-power hardware to at least reach the options.
Penetration physics are now fully physical, this means knots "pop", and more complex physics interactions can be had. Needs a bit more work still, but the physics seems to come up with reasonable solutions.
The day night cycle is now linear (before nights used to be about 25% of a full day) This should allow users to stay up later without being surprised at the speed increase.
Kobolds now have random proportions! They can be really short/stocky with a big butt, or really lanky and top-heavy. It's all random!
Timed the day change during the fade-out so it's harder to tell the game froze while generating kobold proportion meshes.
Decals can now affect the player.
Optimizations:
Kobold proportion generation has been threaded.
Reduced max world decals from 1024 to 256, should help people who had low fill-rate speeds.
Animations are now played on physics, this makes them a bit more jittery but it's also required for the physics to work well.
Replaced lots of hand-crafted materials with procedural ones, I have yet to reap the full benefits from this but instead of having around four 2k texture maps per prop (~20mb), there'll be a single 16kb file that generates the textures on runtime. This'll let me use a LOT more textures, and a lot more detailed textures without impacting hard-drive space soon.