1. AI Pals Engine
  2. News
  3. Devlog #2: From Behaviors to Meows + the Changelog

Devlog #2: From Behaviors to Meows + the Changelog

[p]Happy Sunday! Behaviors are one of the things I'm most excited about. They form the backbone of a truly dynamic Pal - enabling automation, unlocking deep modding possibilities, serving as a strong starting point for custom functionality and further enrich our Widgets. That's why I'd like to dive into them a bit more deeply, with real examples. At the bottom, you'll also find the changelog, detailing the fixes from the recent smaller updates.[/p][p][/p]
[p]Behaviors are essential to the core, every update on them opens new doors for Pals and Widgets. The real magic shines when you take them further: crafting custom behavior, testing limits and adding/creating entirely new things.[/p]
[p][/p][p]Example - A Widget Behavior that initiates the generation of an image (external tool) to visualize the current scene:[/p][p][/p][h2]✨ Moving beyond Language Models in AI Pals Engine[/h2][p]Language models are fantastic: they handle language processing, can mimic personality, keep conversations flowing and understand high‑level intent. But we need[/p][p][/p][p]While language models act as the soul or brain of a Pal, we also need a "nervous system" that executes actions like animations, movements, sounds and more. Not only does this system power the Pal, but it also enriches our Widgets with more interactivity and functionality.[/p][p]Combining language models with Behaviors gets us closer to a true mind‑and‑body avatar. Behaviors serve as the nervous system: fast, predictable and rule‑based. They’re built on Behavior Trees, a widely used AI decision-making method in gaming (More AI on top of AI in AI Pals).[/p][p][/p][h2]🧩 Are they available in AI Pals Engine?[/h2][p]Yes, you can edit them, create them and share them. You'll find them by clicking on Behaviors in your Pal's Avatar Config within the Widget Config (an avatar has to be set). You can even reuse your existing MCP tools as mechanisms to trigger actions on other systems.[/p][p]And yes, Behavior Trees aren’t exactly intuitive at first, especially given the current basic implementation and editor. But they're a well-established foundation. We can later add an ability-like system where we simply pick pre-built trees. And AI can help build them or even better: what if the AI modifies its own “nervous system”, dynamically generating or evolving Behavior Trees on the fly?[/p][p]Let’s cook some more on it. Anyway, enough theory let’s get into some examples.[/p][h3]Pal Example[/h3][p]This is my favorite Pal (Example Widget Name: No AI 2 – Cat), it makes me happy, you can pet it and it plays a sound via Behaviors 🐱:[/p][p][/p][p]What if we want it to meow randomly? Easy we just replace the Interaction-Trigger Node with a Random-Delay Node:[/p][p] [/p][p]I use it personally as a notification system. I get 10 meows for every review and 1 meow for a new entry in the comm hub. How?[/p][p]A custom-coded MCP Tool that checks both counts - combined with this Behavior (+ a Repeat Node set to 10 repeats to trigger 10 meows).[/p][p][/p][h3]Widget Example[/h3][p][/p][p]As mentioned Behaviors can also serve to improve the Widgets. Let's take a look at the Advanced 5 – Dice Adventure example. Here, we use Behaviors to inject dice rolls and introduce real randomness into the AI model’s decision-making. For instance, if we encounter a monster and roll a negative outcome, your character could die right then and there (Make sure not to use a completely positive biased model).[/p][p]In the future, I plan to do more experiments around this and more complex game rules. Maybe introducing state systems to manage story arcs, inventory and abilities, all of which could influence the randomization and deepen the narrative experience.[/p][p][/p][h3]Image Example[/h3][p]So, how can we recreate the example from the beginning of the post? It follows the exact same logic and is pretty easy, the overall steps are:[/p]
  1. [p]Determine when we want to get the image. After the AI completes a message or do you prefer triggering it manually via an action button? (Use the [c]GetLastEventDataAction[/c] node)[/p]
  2. [p]Retrieve the image via a custom MCP Tool (which also enables Pals to generate images) or through an endpoint using an [c]McpAction[/c] node ([c]AIP-MCP.get_from_url_image)[/c][/p]
  3. [p]Set the new image as the avatar of a decoration Pal or your current Pal (use the [c]SetPalAvatarAction[/c] node).[/p]
[p]The tricky part is integrating a local running image gen functionality. The plan is to add a tutorial to the Behavior help section soon - making it super-easy to recreate this on your own hardware, without the usual hassles and dependency headaches (or in Todd's words: it just works) + the importable Behavior.[/p][p][/p][h2]🌅What's next for AI Pals Engine?[/h2][p]I hope I was able to communicate the power of these concepts. We'll definitely need some quality-of-life and usability improvements. If you want to experiment, go ahead, particularly let me know if any crucial nodes feel missing![/p][p]Release means a lot of troubleshooting that costs a lot of time and are hard to predict. Sometimes AI Pals Engine fails, but sometimes even Windows fails with corrupt .NET environments. So slowly we can start on new things again. Here are some points for the next time, shifting to the things we are discussing in the Comm Hub/Discord, like the following:[/p]
  • [p]Better MCP Config and more Char synergy + Workshop support[/p]
  • [p]Multilingual TTS[/p]
  • [p]TTS SPEEEED Config[/p]
  • [p]STT Wake Word[/p]
  • [p]Basic Multi-Gpu config[/p]
  • [p]NoSteam Option (disable Steam Time Tracking)[/p]
  • [p]Autostart AI Pals Engine and an option to pick up the last conversation automatically in the widget[/p]
  • [p]Better Audio and Memory integrations[/p]
  • [p]More of the following: Help pages, Internationalization, Fixes, QoL Improvements[/p]
[p]Let me know what you need and if you’ve had the chance to experiment with Behaviors yet![/p][p][/p][h3]Changelog V0.8.7.9[/h3][p]Summarized from smaller updates deployed over the week:[/p]
  • [p]appLog.txt is now more verbose in case of unhandled exceptions and a proper error message got added[/p]
  • [p]Debug Window: It is now less verbose by default (You can reenable it in Settings -> Chat)[/p]
  • [p]Many UI Naming and Usability improvements like:[/p][p]Avatar renamed to Pal Avatar in Widget Config, Added Copy Text Button in Debug Window, Proper Warnings for Widget Foreground and Mouse Interaction Settings, Chars -> Added Details to context menu, Preset -> better distinction of set vs unset model and added button to reset the default preset, better clipboard error handling, additional messages to explain the app's functionality[/p]
  • [p]FIX STT: Button not changing the color properly when in Record mode (main app)[/p]
  • [p]FIX Char Details: A case in which Pending Changes were automatically displayed when entering the details without changing anything[/p]
  • [p]Fix: Char Name synchronization between views[/p]