Modular Fluffy Project by:Foxhoarder

MODULAR FLUFFY PROJECT

After all the projects over the years started from scratch and then abandoned, it’s safe to say that making a fluffy breeder game requires another kind of approach. My suggestion is a modular one, where the loss of individual coders and artists won’t cripple the project, and new participants can donate smaller pieces to it without needing to familiarize themselves with the entire codebase.

To achieve this, my plan is to have each part of the game and AI split into distinct modules, with easily accessible functions for communication between the parts. This way changes and additions to any one module won’t affect the others, as long as the API’s required for their interaction remain the same. Likewise, new items and elements can be added freely as long as they included the tags and stats to interact with the rest of the game.

I believe Unity3D would be the best choice for the engine, as it already includes crowd-based pathfinding and physics engine capable for handling large crowds of fluffies. Making the game in 3D also reduces the artists workload, as the same models and animations work from any direction.

In short, the modules for the fluffy AI would be:

  1. Stats module: This includes the fluffy base stats like health, hunger, poopies and so on, and handles them changing over time. Other modules access this information for things movement speed and the fluffies decision making. Fluffies individuality modifiers are also stored here, allowing varied personalities by altering things like how much a fluffy prefers any given toy, how much it fears any given threat, or how quickly it starts to feel lonely.

  2. Thinking module: Thismodule handles the fluffy deciding its next action, by calculating the priority of each possible action and choosing the highest scored one. For example, hunger raises the priority to eat, and tiredness the priority to sleep. These priorities are calculated for each food source and sleeping place individually with their relevant modifiers like quality, distance, and novelty affecting the decision making.

  3. Pathing module: This module is responsible for pathfinding and calculating the distances to accessible items. The distance calculations allow the thinking module to prioritize objects that are close, and the pathfinding in general guides the movement of the fluffy itself. As a default Unity’s pathfinding moves actors without any physics, but handling the fluffies actual movement as a physical object allows for more chaotic things like stumbling over and bumping into stuff.

  4. Acting module: This handles the default physical actions of the fluffy, from moving in the direction determined by the pathing module, to running around, sleeping, and getting upright after falling.

  5. Social module: This integrates strongly with the thinking module, but due to its complexity deserves to be a separate module of its own. It keeps tables on fluffies relationships with each other and their owner, about things like strength of their frienship, how much they miss each other, romantic interest and so on. The values from the social module are mainly used by the thinking module to calculate priorities for actions like hugging, playing and mating, but also affect other actions to make the fluffy more likely to eat sleep, or play with a friend rather than alone. These are advanced features though, so this module can be mostly ignored until the first four modules are implemented.

  6. Chrisis module: This will handle anything that interrupts the fluffies regular activity, for example getting hurt, seeing another fluffy crying, or seeing an alicorn. Like the social module, this should only be started after the first four primary modules.

Just like the fluffies, the individual items in the game can be handled as self-contained modules as well. For example, as long as a food item has a value for taste, the fluffy AI can use it to calculate its priority for eating that specific item. And as long as it has an eating function, it can affect the fluffies hunger, health, and other stats as defined in the food items own code. But most of all, pretty much any additional features from appearance to spoilage to leaving leftovers can be implemented without affecting the rest of the project. This allows people to add new foods, beds, toys and other items into the game without needing to learn about the inner workings of every part of the project.

This is my mission statement for the modular fluffy project. I hope we can make this happen, doing what countless fluffy games have already done, but this time in a way that creates a permanent foundation for future development. If you’d like to work on a breeder game, this should be the framework to attain lasting results towards a fluffy breeding game.

34 Likes

More detailed definitions of each modules contents:

The first primary requirements for the stats module:
-Age, hunger, thirst, tiredness, poop, health, hitpoints and pain
-The maximum values for each of the above
-Attention span, to determine how likely the fluffy is to stick with its current action
-Sociality modifier, to determine how quickly the fluffy will start to miss its friends.
-Preference modifier for each type of food and toy, taken from the objects value and adjusted in a random direction to give fluffies individual tastes. Determined when the fluffy is created, but can change with their in-game experiences.
-Novelty value for each type of object, lowered when the fluffy uses the object to simulate getting bored.
-Novelty regenration value for each type of object, to simulate how soon the fluffy wants to use the same kind of object again.

Examples for other, more specific stats, to be implemented once the primary features are working:
-Love towards owner and respect towards owner, for interactions and obeying rules and orders.
-Lust and maximum lust, for the desire of special huggies. In unneutered fluffies starts rising at adulthood, in neutered fluffies gradually lowers down to zero.
-Litterbox training, determining how well the fluffy understands the concept of litterbox.
-Litterbox discipline, for determining how full of poop the fluffy must be before starting to consider going to the litterbox.
-Intelligence, fitness, bravery, happiness and longterm happiness, for miscellaneous uses and sales value.
-Alicorn fear, determining how afraid the fluffy is of alicorns. Lowered by spending time near alicorns, raised by having anything bad happen while near them.

The first primary requirements for the thinking module:
-For each interactable object, calculate the priority according to distance to the object, personal preference for the object, and novelty of the object. Once the social module is implemented, when applicable also add the friendship value of other fluffies using the object, modified by the thinking fluffies socializing value.
-If the priority being calculated is for the same action as the previous action, add the attention span modifier to it to keep the fluffy from switching tasks constantly.
-Select the highest scored interaction for execution by the acting module.
-If the action fails for whatever reason, give it a temporary frustration modifier to keep the fluffy from getting stuck in a loop trying an impossible task. The frustration lowers with time so the fluffy will eventually try again later.

Primary requirements of the pathing module:
-Calculate the distance to an object, to be used by thinking module in priority calculations
-Guide the acting module to move the fluffy towards its target.

Primary requirements for the acting module:
-Move the fluffy according to the pathing module.
-Animate fluffy walking, running and idling as necessary.
-If the fluffy falls over, wiggle it upright and continue as usual.
-Run the relevant interaction function of the targeted object to make the fluffy use it as inteded in the object’s code. This will allow for more modularity than trying to add all possible interactions into the acting module.

Primary features for the social module, once it’s time to start working on it:
(towards each fluffy)
-Frienship values, determining preference to interact with a given fluffy.
-Romantic interest values, determining preference to ask for special huggies from a given fluffy.
-Longing values, determining by how much the fluffy misses interacting with each fluffy. Raises with time according to friendship value and the thinking fluffies sociality value.
-Whenever the thinking module is calculating an action to take, also calculate a highest priority social action to add along the other possible actions the fluffy can choose.
-Whenever a fluffy performs a social action, lower the longing value towards that fluffy so the fluffy is more likely to play with other fluffies as well. Also lower longing towards every other fluffy a little, to keep a fluffies with lots of friends from spending all their time on socializing.

Some examples for the chrisis module, once it’s time to start working on it. As these events are often localized around a specific target, they can be handled with a bounding box centered around the source of the interruption:
-When a scary thing happens, each fluffy within a radius determined by the event compares the priority of their current task with the scariness of the event. If the scariness minus distance is less, proceed as normal or just slightly more hurried, otherwise flee, panic or hide as necessary.
-When a fluffy is calling for help or crying, each fluffy within hearing radius compares the priority of their current task with the priority of consoling the crying fluffy. This will make fluffies less likely to starve to death or poop on the floor while consoling a friend.
-When a hungry foal chirps, every lactating mare within hearing radius calculates the priority to feed it, according to their friendship with the foal, the foals hunger, and the amount of milk the mare has available. If the result is higher than the priority of their current task, they will feed the foal.
-If a chirping foal is extremely hungry and no mare has fed it yet, every fluffy within hearing radius will do a similar calculation and alert the player about it. Or if the player is unavailable, attempt to find a lactating mare to alert instead.
-If a fluffy recognizes itself to be stuck, it calls for help from any other fluffy in the hearing radius. If that fluffy succeeds the priority check, it will head to the stuck fluffy and pull it backwards. If that doesn’t succeed, it will seek to alert the player instead.

Edit: Here’s the project’s Discord server: Discord

10 Likes

The only ballbuster nastier than you is the development process of a fluffy breeding game.

11 Likes

So I have to say that from a game design perspective, this is very well thought out and detailed, to the point where it looks professional. I especially like the emphasis on creating an initial skeleton of a game at first, and then allowing community members to tack on their own additions like new beds, toys, etc. For example, one of the gripes I have with the released fluffy games is there’s only 1 of each item, or different colored items (like the balls and bowls in casual fluffies) that don’t do anything different. Making the skeleton and then fleshing it out from there is what’s really going to make a game feel alive, and let new ideas really flow.

Now I don’t want to bring anyone’s hopes up, but if anyone does start working on/putting a team together for something like this, it might be something I’m interested in. Being a full time university student means I can’t dedicate a ton of time to development (at least until the semester is over and the summer is less hectic) but I have some experience scripting and designing games in Unity, and def comfortable with the interface and how it works. Even if I just help out in creating or making the fluffy animations in Blender, it’d be cool to work on something like this. Been looking for an open world, sandboxy fluffy game for a while.

8 Likes

Fluffy vitruviano.

6 Likes

Thank you! Making the workload easy to distribute is indeed the main idea behind making a maximally compatible skeleton first. Here’s a discord server I made for the project: Discord

6 Likes

Damn, that’s spot of thought! All my simple brain cam process is “Make things go boom!”

5 Likes

This work has been featured by the staff of FluffyCommunity

4 Likes

I like the overall idea, the issue with me is I do the majority of my AI development in a Lisp dialect so getting it to play nice with Unity would be kind of a pain in the butt.

2 Likes