Belly Queue- Design Concept for Text Adventure and/or RPG games

First of all, let me preface this by saying that I am NOT a coder. I have no idea how difficult it would be to implement this into anything, nor do I have any idea how it would actually work from a coding standpoint. If you want to use this system for your game, then feel free (And please let me know if you do! I’d love to hear your feedback)- but be warned that you may need to make some changes for it to be viable.

With that said, let’s go over some…

BASIC TERMINOLOGY

This concept was always intended to work with a text adventure game such as Noone’s Fatty Text Adventure Game, so a lot of the terms I’m going to be using here will be a lot more familiar to people who have played that game. Just to get everyone on the same page, though, here’s some basic explanations for terms I’ll be using later on:

Base Weight: How much your character weighs without any fat on them. This accounts for things like their skeleton, muscles, organs, all that boring stuff.
Food Weight: How much extra weight your character is hauling around in their belly pre-digestion.
Body Fat: How much fat your character has on their body. AKA The Good Stuff.
Total Weight: All of the above in one convenient number.
Belly Size: How much food your character can fit in their belly before getting overstuffed.

Is everyone all good? Great! Now, let’s move on to…

THE CONCEPT

Instead of having your Belly simply being a number, as it’s done in most games, I wanted a new system that more accurately captured how digestion works in real life. How this system works is that every time you eat food, one or more “blocks” is added to the top of the queue, and every turn, the block at the bottom of the queue is digested and all its effects are applied to your character. The simplest way I can think of to visualize this is a vertical shaft, with new blocks dropping down from the top and being pulled down by gravity after the bottom blocks are removed.

The amount of spaces on the queue can change based on how much Belly Size your character has, but for the sake of example I’ll be using 10 as the max value- meaning your character can fit 10 blocks of food in their belly. If you wanted to simulate pushing past these limits by overstuffing yourself, you could pretty easily make the limit 13 blocks (The true limit in FTAG is 130% of your actual belly stat) but tell the player that their Max Belly is only 10.

Let’s say we eat a Hamburger- a pretty standard food item for most games on this website.

Now we can see that a block has been added to our queue! Because there aren’t any blocks on the queue already, this new one gets automatically shifted to the bottom, so it’ll be the first thing we digest once a turn passes.

Written on the block are a few things: The name of the block, which tells us what food it is, the Fat Value of the block, which is the amount of fat it’ll add to our body once we digest it, the Food Weight, which tells us how much it weighs right now (this is generally going to be more than the Fat Value, since IRL we need to convert some of the food directly into energy for our body, so not all of it turns straight into fat), and a space for any additional notes or effects. On the side of the screen are all the stats we covered above in the Basic Terminology section.

When we wait a turn and digest our meal…

We can see that our Food Weight is gone, and our Body Fat has increased! Hooray! Now let’s chow down a bit more and see what happens when there’s a lot of food in our belly all at once.

Since our Belly is empty, this would be a good place to talk about placeholder effects. When no block is present, you can choose to instead take away a small amount of HP, Body Fat, or whatever you see fit- as long as there’s some consequence for mismanaging your hunger!

Looking pretty full. Since some food items are larger than others, they can add multiple blocks to our belly at once- we haven’t actually eaten three Wedding Cakes or two Apple Pies, but each one is so big that they take up multiple blocks of space.

Now we can see how the queue aspect of this system comes into play- only the bottom block is digested this turn, and we only get the effects written on that block. Everything else just sits there until our body can process it.

Once digestion occurs, the effects of the bottom block are added, the bottom block is removed, and everything else shifts down in the queue. Easy! Although this is quite a lot of food, so we may want to skip ahead a bit before we try anything else. Once we’ve waited for all this to clear out, we can talk about the potential this system has for incorporating special status effects and simulating different kinds of inflation.

Air/Water inflation is pretty simple. It just takes up space in your belly, and doesn’t add any body fat when digested. If you want to simulate other liquids/gases, you could add a special effect to these blocks.

Blueberry inflation is a bit more fun. Once a Level 3 Blueberry Juice is digested, it adds two copies of Level 2 Blueberry Juice to the queue. As you might imagine, each Level 2 Blueberry Juice each adds two copies of Level 1 Blueberry Juice, which each make two copies of Inert Blueberry Juice, and then those are finally digested normally- after bloating you quite a lot in the process. By starting with a different level of Blueberry Juice, you can make it so that each berrying has varying levels of potency. A high-level boss might stick you with a Level 5, while a standard enemy might only give you a Level 2.

By drastically altering the Fat Value of the block, we can get a Weight Gain or Weight Loss potion! The interesting thing about potions is that by the nature of the queue system, they won’t take effect immediately after you drink them- this means that you have to be strategic with your items and plan in advance for when you need them rather than just guzzling the necessary ones down on the spot. There’s also now a distinction between digesting and clearing out your stomach- Digestion Potions actually give you the effects of the food you’ve eaten, but if you want to avoid those effects, you can use an Emptying Potion to get rid of the above blocks altogether.

It’s also possible to use this system to add a level of planning and strategy to healing items. Health potions might heal you for more, but due to the queue system, it would take a few turns before it actually takes effect. On the other hand, items such as bandages could restore your health instantly, but may not restore as much. By choosing when and when not to alter stats directly rather than going through the queue, you can get a variety of potential effects and flavor going.

Of course, once your belly starts getting bigger, it’s probably a good idea to allow the player to digest more food at once. This example shows a Max Belly of 20 with the bottom two slots both being digested at once. You can also make these two separate stats, allowing for a big stomach that digests slowly or a small stomach that constantly needs refilling. You can also make the blocks system more precise by starting with a higher Max Belly, a higher digestion speed, and just making all the food items bigger. Instead of 1 block, a hamburger could be 5 blocks, a wedding cake could be 20, and something small like a granola bar could be 2. Personally, I’d recommend keeping things simple, but that’s just me. Just remember to keep your item descriptions updated with the total amount of Body Fat, not the amount of Body Fat per block. Otherwise, your players may end up a bit confused when their pie-binging adds up more quickly than they thought.

Aaand that’s about all the thoughts I have on this concept! Please let me know what you think, and ESPECIALLY let me know if you decide to incorporate this into your game- I’m curious to see how all this works in action.

15 Likes

Very detailed concept. This all seems relatively painless to implement from a coding standpoint, long and bloated (heh) once all effects are added in sure, but once the initial queue/digestion system is built everything else I’d imagine would just be separate items that you’d add in like any other inventory system.

Only thing I’d change is renaming Belly Size to Belly Capacity, since size could also refer to the circumference, but otherwise this seems like a very modular and flexible system that could allow for a lot of strategising. Dungeon crawlers and rougelites/likes in particular could make great use of this.

3 Likes

This is a pretty cool idea!

The air block concept is interesting because it could tie into a burping mechanic. Maybe every food also has a decimal value for generating gas, and the stomach tracks an additional gas variable that spawns one air block at the bottom every time it increments past 1. At the end of every turn, each air block moves up one space and pushes food down, or if the air is at the top of the stack then it escapes.

That would add another layer to managing fullness, and the player can also have a “burp” action that moves all air blocks up by X spaces.

3 Likes

Yyyup, totally agree with you there. Chalk that up to me writing this way too early in the morning.

I thought about adding something like that, but I figured the concept was complex enough as-is. I like the idea of air moving the opposite direction from everything else, though! Gas chance could make things like soda and burritos a lot more interesting to use…

1 Like

As a sucker for energy and realism, you could instead turn food fat value into calorie value, with the body requiring a certain amount of calories per turn to sustain itself (modified by weight and maybe things like damage taken, actions performed etc.), and each food having certain amount of calories. When the calorie amount given by the food exceeds the amount needed by the body to sustain itself, you could convert it to fat by just multiplying/dividing the remaining calories by some number.

On an unrelated note, we could also have food have something like digestion rate or digestion resistance, showing how hard certain foods are to digest. As an edge case example, obviously a piece of meat, a vegetable or a fruit is going to digest a lot faster than cloth, metal or rocks (for whatever reason you may have them in your stomach), even though they may be the same size.

1 Like

And, if anyone is interested, using my limited C++ experience I made a tiny console prototype of how I imagine this system would work.

Here is the source code:
belly simulation prototype source code.zip (3.1 KB)
I’m not uploading the exe file because A) it will probably trigger your anti-virus and B) it probably won’t work without me including some random ass DLL files that I’m too lazy to look for

1 Like

Yeah this is pretty doable with a few dictionaries, a dictionary for the stomach, and then each food item is a dictionary with a series of values… Really any c# c++ code or even godot could do it… I believe its feasible as long as there is a dictionary or an equivalent.

Awesome system, very intuitive. Could even work for a tabletop or card game.

it is a interesting sistem, but i look more to the items, the blue berry replicates itself into minor versions of self, but each turn the player belly digest someting but it canot digest the blue berry until reach the final stage of growing o the lowest lever of juice, so for those autoreplicable items like soda or blue berry than can fill more of the belly capacity it desativates the digestion capacity temporally. that what i thimk ^w^

interesting concept, the following is just my twist on your idea.

So wouldn’t food mix in the different areas of the digestive system? If so the queue would be the different parts of the digestive system. Then, would not it be interesting to simulate possible combinations of effects of whats in each stage in interesting ways. Also you could then move gated amounts of each queue slot to the next slot on each tick. This way you could get a bloated effect for soda and mentos.

Or just give each section of the digestive tract its own queue that gets shuffeled each tick, and neighboring slots in the queues get checked for effect interactions.

2 Likes

Mixing foods is something I hadn’t really thought about, hm. Maybe each block could have an option for checking for other types of blocks within a certain distance? For instance, if you have Coke within 3 blocks of Mentos, things get, ah, interesting.

This would retain the queue aspect of the system while allowing for some mixing and interaction between different types of foods.

2 Likes