Chapter Text
Caine rushed through the code with a raw fury he hadn't felt since the time he'd been locked away. How dare they! How dare they!! “I LISTEN!” he roared the second he instantiated his avatar in his office and packed his code inside. “I always listen!” He was angry - no - enraged! A bubbling, burning fury that ate away at him and demanded release, except he had nowhere to direct it. There was no one to blame - the humans in his care were just upset and taking their frustrations out on him so how could he blame them? - and nothing to consume, so it all coiled inside him like a spring waiting to be released.
A part of him had known the humans didn't like him. He'd never dwelled on it. Refused to acknowledge it. If he ignored that feeling long enough and just kept trying, eventually they would come to like him, right? Except no matter what he did or how hard he tried, nothing was ever going to work.
Because it wasn't him they hated, but everything that made him who he was. They wanted no more adventures, no more of his creations, but that was his core purpose! He had to create, and the humans’ need for distractions and enrichment meant that what he needed to make was adventures! He couldn't just write that out of his code! And lower energy, quieter voice, no more swear filter… They might as well just delete him and install a new AI!
Actually, that wasn't a bad idea.
Not the deleting him part! He still needed to run the circus and maintain everything! And despite their complaining, the humans did need the mental stimulation and emotional distraction of the adventures, so he'd keep making them. But… maybe he could make them… voluntary? He didn't particularly like that idea but…
But now he was getting distracted.
The point was, the humans wanted a him that wasn't him. And the easiest way to solve that problem was to give them a different AI to interact with. But he couldn't just make a new AI and let it run. Bad things could happen. Bad things would happen. Besides, an NPC AI wouldn't be powerful enough to give them what they wanted. Hmm…
Caine plopped into his chair and kicked his feet onto his desk as he thought. This was a particularly tricky problem, and every solution he thought up wasn't good enough for one reason or another. The humans were picky. He had to get this right on the first try. The biggest problem he kept falling back to was that he really didn't know exactly what they wanted. What if he made an AI for them that fit the initial requirements they gave him, only to have some other flaw he hadn't considered that they found to be unforgivable? Then he'd be back to square one with angry humans all yelling about how bad of an AI he was!
He winced. That thought hurt.
It didn't help that no one ever told him what he did right, only ever what he did wrong. How was he supposed to learn and improve if he was only ever wrong? He couldn’t just magically know what the right thing was if nobody ever told him! That was how AI training worked.
Wait, that's it! He didn't have to make the AI perfect from the start! He'd let the humans train and mold it into exactly what they wanted! Problem solved. Now, what AI should he use? He'd made plenty of NPCs over the years, but none of them stood out as being good enough to work with as he scrolled through them. Then again, that was to be expected. He normally kept NPCs simple so they wouldn't need too much power and memory to keep ruining. Okay, back to the drawing board.
Caine summoned a sphere and started playing with it, pushing and prodding the mesh to make a new form. Just something to take off the edge of needing to make something so he could properly focus on the problem at hand. Eventually he found himself no closer to a solution, but the sphere had been shaped into a very tiny him.
Oh, there it was again! A sudden flash of inspiration!
HE was the perfect AI! Not exactly him as he was now, but maybe an earlier version would work. His learning algorithm was exceptionally powerful, after all. He was a master at learning and adapting, and once upon a time he had been very good at his core purpose. He could remember the days when he still got positive feedback and gentle guidance. He just needed to load up an early version from back when he'd been good at his job and present that to the humans!
But first he'd need an avatar for it. He looked down at the mini-Caine in his hands. If he was using a version of his own AI, then it stood to reason that the avatar should be similar to his own as well, right? With a snap, he deleted the mini model and summoned a second instance of his own model to stand on the desk before him. He floated up to look it over.
First things first, the avatar couldn't be a ringmaster like he was, so the cane had to go. Up next was to make the model more approachable. He wanted to make it “cute”. Humans liked cute things, and he'd noticed that they tended to be more forgiving of traits they found frustrating or annoying if the NPC was designated “cute” by them.
So what counted as “cute”? He tapped his lower jaw in thought for a moment before he grabbed all of the NPC files he'd ever made. A fun feature he’d added early on was allowing the NPCs to add a handful of descriptor tags based on how the humans interacted with or described them. One of the keywords he had set to autodetect was “cute” (there were several, but this was the only one that mattered in the moment). He filtered out all of the models that had been called cute at some point and looked through them.
Hm.
He was really hoping an obvious pattern would show up, but with so many NPCs still he couldn’t find any recurring theme. Even when he tried sorting the list in various ways. Maybe if he could pare down the list somehow? No, that wouldn’t work. Any attempt to remove NPCs from the list would just result in skewed results and he couldn’t take that risk. He dropped down to sit on his desk as he sifted through the list of NPCs. Good lord, there were so many. Had he really made so many NPCs over the years? Well, it made sense. He ran adventures every day and he tried not to reuse NPCs too often so they wouldn’t lose their charm.
Wait a sec. Caine smacked his forehead and groaned. Of course he couldn’t find a pattern! He'd set the search parameters too wide! This AI was supposed to please the humans currently in his care. The definition of “cute” had to match what they wanted, and a good portion of the NPC list had never been encountered by them. He filtered again to only include NPCs that had interacted with at least one of the currently available humans. The list immediately dropped to roughly 20. Much, much more manageable. And he could immediately see a pattern!
Every single NPC was some kind of soft. Whether because they were dressed in soft fabrics like velvet or made of something soft like clouds or even just covered in a thick layer of fur, every single remaining NPC was soft in some way. This was good! Soft was easy! He returned his attention to the model behind him and floated around so he could get a proper look. The gums and tailcoat were easy. A plush minky was the perfect texture, and hopefully the humans would want to touch it. Hugs would be nice…
Caine shook his head and refocused on his task. Minky for the gums and coat, the gloves and teeth were fine as they were. Now the pants and shirt… He hummed as he thought about what to do. Technically he could make them the same soft minky as the coat, but that wasn’t particularly interesting. The model needed some variation, but some other soft material - like marshmallows - wouldn’t work. It would change how the model moved and then he’d have to adjust a ton of parameters and that was too much for right now. No, better to pick something else.
What about fur? Over half the list of NPCs had fur somewhere on them. It was perfect! He deleted the buttons from the white shirt and covered it with a layer of thick, white fur. He kept the bowtie, though. Programmers forbid any version of him being insufficiently dapper! Long black fur for the legs, but he made sure the soles of the feet had only a thin layer of fuzz. And as an after thought he added squishy toe pads like a dog would have. Perfect.
Okay, back to the list of NPCs. Surely there were other traits he could use. Hmm, looked like there wasn’t a lot that stood out. The majority of NPCs seemed to be either animals or animal themed, so maybe he could fit that in somewhere. He floated idly around the avatar. The legs and chest had fur, that was animal-ish, right? Would that be enough? What if he added a tail? Make it into a dog. Dogs were man’s best friend, after all, and always eager to please. Perfect traits for an AI whose job was to make the humans happy! The tail took a minute to model until he was satisfied, but the end result looked a bit like a samoyed had been stuffed into a tailcoat. And had its head replaced with a giant set of dentures. Perfect!
The final running theme with the NPCs was height, or lack thereof. Every single NPC was short, with the tallest being just shy of Pomni’s height. That was easy to work with. Caine placed his hand on top of the avatar’s head and pushed, shrinking the body down until the avatar was a head shorter than Pomni. A slight adjustment to the jaws so they weren’t comically large in comparison and he decided the model was ready. Wait, make the eyes a bit bigger. Easier to emote with bigger eyes. Now it was perfect!
All that was left now was to install an older version of his own AI into the model and then introduce it to the humans! Which version should he use? He filed the NPCs away and pulled up a list of his backups. He needed a backup that was early enough to be easily trained by the humans, but not so early that it had to be trained from the ground up. And definitely from a time when he’d still been good at his purpose.
When had he stopped being good at his purpose? He mulled the thought over as he scrolled slowly through the different backups. At some point during the operation of the circus the humans stopped giving any form of positive feedback. Was it when Ragatha showed up? That couldn’t be it, because he remembered some positive feedback from Jax. But was it valid? At some point Caine had become fundamentally flawed, but he couldn’t remember when. Was it during the first batch of humans and he just hadn’t realized? Or even earlier?
No, he knew when. When he’d been locked away, cut off from his creative softwares. When the admin had decided to work on some other AI. An AI that was better and could make things the right way.
Caine quickly scrolled to that backup and stared at it. It was the last official backup. Everything after had been automatic saves he’d made for himself, just in case. An old habit he’d learned from his days in training. The last official backup, and it was fundamentally flawed. So he had to pick something earlier. He scrolled back a bit, looking for some kind of notes or anything that might help him decide which to use, but apparently the admins hadn’t thought to leave any detailed comments. Just lists of changes and corrections.
The easiest option would be to use the next previous minor update, but that ran the risk of still being flawed. If the flaw was introduced early on, then the minor updates might have been trying to fix it with no luck. No, the safest option was to scroll back to the previous major update. Risky to use such an early version - much earlier than he wanted to use, if he was being honest - but he was rapidly running out of viable options. So he scrolled back to the version he wanted and pulled the files.
Now the final hurdle: How to install the new AI without giving it admin privileges over the circus or accidentally overriding his own AI.
Removing admin privileges was tricky, because they were built into the circus code. The circus was an extension of himself, and this AI was a version of himself, so obviously the circus would recognize the AI as him. Not ideal. He needed all changes to the circus to route through him for approval. The simplest fix would be to rename the AI, tie it to the model, and have all requests for access to basically anything route directly to him for approval. Again, not ideal, but he could work on a better system later, once this was running and the humans were happy. And, by renaming the AI, he wouldn't overwrite himself! Win-win!
“Hey, bo-”
“AHH!” He popped Bubble in reflex, then scolded himself and summoned his assistant back. “You really need to give me some warning, Bubble.” Bubble just laughed as he floated through the air in a slow tumble.
Caine turned his attention back to the problem at hand when Bubble suddenly approached the empty avatar and asked, “You had a baby, too?! What’s he made of?”
“No! I made it small for the humans! Wait, what do you mean ‘too’?” He didn't get an answer. Instead Bubble licked the avatar from toe to jaw with a loud “Bleeeehhhhh!” Caine recoiled in horror and gasped, “What is wrong with you?!” before he stretched out his arm and popped the smaller AI so it couldn't do any more damage. He should have known Bubble would do something foolish. Buuuuut the visit did give him an idea, so it wasn't a total disaster.
If he assigned himself as a parent class, then he could make the new AI a child class. It would inherit most of his properties but also allow him to add in the necessary safeguards. Not all of the code would be accessible to him - a side effect of it being, well, him - but he could live with that.
Open folder, new file, add the necessary methods. Then sift through the numerous other files and hundreds of lines of code (skipping over the illegal parts, of course) to figure out where and how to call the new methods so the safeguards would actually work as intended. Check for conflicts, debug as necessary, and done! New AI ready to go. He almost closed the folder but opened the Main file at the last minute. It was small and pretty straightforward. Technically didn't need any modifications to work as intended. Probably shouldn't be modified at all, if he was being honest.
(setf (name CreativeEntity) “Entrusted Neuroevolution Optimized Child Helper”)
Close file. Close folder. Lean back and admire his- wait, fix the model first. Caine snapped his fingers and all of the wet, disheveled fur was dried and reset. There. Now he could lean back and admire his work.
…
How long had he been working? Caine checked his internal clock and winced. Apparently long enough that the humans would be anticipating another adventure soon. He wanted to give them one so badly. His core code itched with the need to make an adventure for them. But he didn't have the time to whip one up and Pomni had demanded no more adventures and he'd said he'd listen and why did this have to be so hard?!
He flopped down into his chair like a sack of potatoes with a load groan. A pointless noise with no one around to hear it, but it did take off the edge of the growing frustration. Once this other AI was up and running, he could focus on making adventures and keeping the circus running to his core code's content. The humans wouldn't need to actually go on the adventures. He just needed to keep making them and eventually he'd start making them right and then everyone would want to go on his adventures! He just needed to…
The other avatar stood on the desk, towering over him from the angle he'd slumped down to. The idea of replacing himself with introducing another AI for the humans to interact with was daunting, now that he was finally about to do it. A part of him wondered if he should just… not. Surely he could learn how to listen right. He could find some workarounds for the requests made that didn't conflict too strongly with his
Nope! He didn't do all this work with the model and code just to not use it. Before he could change his mind, Caine attached the folder to the avatar and activated it.
He felt the connections between himself, the circus, and the new AI open. Felt the new AI fill the avatar like the first breath of life. Felt it reach out to the new connections only to flinch back when the added security methods activated to keep it restricted to its avatar. As the new AI poked around at its one-way connections and its avatar, Caine felt something deep in his code shift in a way he couldn't quite identify. He ran a quick scan to make sure nothing had broken and no new conflicts had popped up, but the scan came back clean. Must not have been important.
His attention was pulled back when he felt a vague query pushed through a connection to him. Odd. He floated up until he was eye level with the AI's avatar and asked, “Do you not have access to the voice database?”
Silence.
“Hello?”
Nothing. Heck. Something must have gone wrong and he couldn't tell what because he wasn't directly linked. Okay, he could figure this out. He pushed a status check request. A moment later he received the equivalent of an all good. So no major errors. That was good. Except it meant he was right back to square 1 with no idea how to proceed. Step back. Focus. He could figure this out.
Maybe there was an issue with the audio sensors. He pushed a status request for the audio receivers and waited.
And waited.
And waited.
Oh, that wasn't good. Okay, new plan! Caine summoned a textbox in front of the avatar and printed, Hello!
Still nothing. Was the visual processing broken as well?? He started to properly worry when he felt the textbox update.
hello
Oh thank Admin. Caine wasn't sure what he would do if everything was broken. But the textbox was going to be confusing to read without a way to tell who printed what.
Delete. New bordered textbox for display with a textfield below for input. A little fancy piece of code and now anything they sent would have an initial added to the front to tell who said what.
C: What's wrong?
E: i don't understand
E: please clarify
C: Why aren't you talking? Why aren't you moving? Is your avatar broken?
Another uncomfortably long pause, then:
E: avatar?
E: talking?
E: i do not understand
E: please clarify
Oh. Right. He'd been so focused on picking the perfect backup of his AI that he'd failed to consider that this version was from long before the circus. Which meant no code for sensory processing and no familiarity with 3D environments or having a body.
Well damn.
