(Complex / More) Drones!
Posted: Thu Oct 18, 2018 3:48 pm
Fun fact: The only types of suggestions I ever post on forums are complex in one way or another.
I know this is titled "slime design" (not Slimedeas? Shame.) but it's also the only suggestion forum this site has.
First, I love drones. I truly do. They finally allow me to do...well, anything besides feeding my slimes and emptying their collectors. Thank you, Monomi Park, sincerely, for these adorable bees that can even wear curios.
However! I've encountered the same frustrations over and over, and I think I've finally come up with two mutually exclusive solutions to those frustrations.
Consider literally all of the below suggestions purchasable upgrades (perhaps from a new NPC? I originally considered 7Zee, but that raises the question about where in the list to put them. I think creating a new source for these particular upgrades, and perhaps other technological upgrades, is the best approach here.) Each separate header is basically a separate purchasable upgrade.
1: Complex Drones
Allow the use of more complex programming for drones. This programming is unique to each drone (the way it is now, just more complex). Specifically:
If / Else Statements
Example on a drone already set to collect plorts:
1. if honey:
destination = silos
elif pink:
destination = repository
else:
destination = market
2. if silo = full:
destination = repository
elif repository = full:
destination = market
Food Targeting.
Drones should be able to target “food” as a full group, in much the same way they can target “plorts” as a full group. If-statements should take care of which food goes where.
Furthermore, since the introduction of drones I've deleted all my coops, and rearranged my largos so none of them exclusively eat meat. This is because it's functionally impossible to get drones to properly feed out of coops. The only viable target is either “meat”, meaning roosters get fed out, immediately killing further chicken production; or one specific type of chicken, meaning I must either have all-boom-largos in an area or just farm ordinary henhens and not even bother with favourites. I did try just feeding old chickens, but chickens don't age up quick enough for that to keep a whole area even remotely well-fed, even with three coops.
In truth, if-statements would take care of the meat issue, but that still renders feeding meat a lategame objective, by which point most player's ranches are “done” anyway and there's no point rearranging what's worked up until then. The simplest solution is to just add “hens” as a food target.
Corral Favourability
For this to work, every corral in an expansion must be assigned an ID – by default it's just a number counting up from 1, but there's no reason players couldn't define their own corral IDs (I can already imagine people (rightly) upset at not being able to memorise the numbers and wanting to just name a corral “Shiny Bois”). Ponds, incinerators, and any future specialist slime containment should also get corral IDs.
Then players can choose from a list of preset possibilities for favouring corrals, including:
Fill most empty feeders first
Only put $food in $corral_ID
Always feed $corral_ID (last / first)
Harvest $food (last / first) – effectively, if more than one food is ready to be harvested, the drone will always go for the specified food last or first.
Share (I can't think of a simple shorthand for this rule. Effectively, if three corrals all get carrots, and the drone harvests 87 carrots, it divides 87 by 3 and feeds that number of carrots to all three corrals, tossing the small remainder into the final corral it feeds).
With that done, it's effectively just another list of if/else statements, because let's be honest, that's how most real autonomous drones are programmed, too. Because it's simple and it works.
If cargo = mint_mango:
destination = Honeys
elif Honeys_Feeder = full:
destination = GlowBois
elif $feeder_fruit = empty:
destination = $feeder_fruit
else:
destination = silos
To explain the $feeder = empty rule: $feeder looks for all feeders in the area that accept fruit. For this particular rule, if any of them are empty, the drone's destination is now that empty feeder. Then the drone checks again: any more empty feeders that accept fruit? No? On to the silo.
(I know you can technically “specify” which food goes where by pre-filling the container, but I'm having huge problems getting those containers to stay filled for any length of time, and drones literally can't even see empty feeders, so we really need a way to just tell them what foods go where)
Heirarchy
Since we're turning drone code into several separate lists of if/else, we need to indicate a heirarchy of execution (both to avoid conflicts, and to make it easier on players to understand what they're telling the drone to do). This would likely be a simple drag-and-drop list of all the different rules (which each total if-statement functioning as a single rule), with the rule at the top being executed first, and the rule at the bottom being executed last.
So using all of the above examples, a single drone could be set to:
Target = Food
1. Harvest carrots first
2. Fill most empty feeder first – making this rule the most important. Forget the specifics, just feed them whatever's lying around. (Although, if implementing the “food targeting” concept, there might need to be a requirement that it be a food type that corral is set to receive. Considering most players keep largos, that could potentially be two different food types. Effectively meaning this rule will be skipped if the drone is carrying carrots and the only empty feeder belongs to a boom/quantum corral.)
3. If cargo = mint_mango(...) – you can see the full rule above.
4. Feed ShinyBois first – if the drone is carrying valid cargo for ShinyBois, they get it regardless of who else it would go to (unless it's carrying mint mangoes, because they're only for Honeys and GlowBois, as defined in rule 3.)
5. Default behaviour – this rule cannot be dragged like the rest. It's permanently stuck at the bottom of the list, and only exists to illustrate to players that, when all the other rules no longer apply, the drone will go back to behaving the way it did before complex rules were applied to it. This means that if there are no carrots to harvest, no empty feeders, it isn't carrying mint mangoes, and ShinyBois have been fed, it'll behave the way drones do in the current version of the game.
2: Hives
Drones no longer live on individual flowers. Instead, one(1) Hive may be placed in each expansion. By default the Hive contains two drones, but the player can craft more and add them to the hive up to a certain maximum, defined by the hive's level. Hives can be upgraded twice. I'll leave the specifics up to the devs.
The hive itself has a very similar interface to the one currently allowing drone programming, but with a supermenu allowing the player to select which drone they're programming. (Maybe we could even name the drones, though Drone_1 and Drone_2 are fine too).
Drone programming itself would largely be identical to the current system, though I'd still like to see vague food targeting and some more simplistic if-statements, the full gamut of suggestion 1 is largely rendered irrelevant by the mere existence of additional drones. Essentially, if we can have more drones in an area, we no longer need the “food drone” to be able to differentiate between specific food types or corrals.
Hives still need to be watered every day, and every morning all drones consume one honey plort. Hives have a container that can hold <arbitrary number> of honey plorts, so players aren't topping them up every day. Those plorts are irretrievable, as they are with the lab repository.
I strongly prefer suggestion 1
For a variety of reasons, really. It feels less cumbersome when playing, even though it would likely be more cumbersome to implement (and learn, for those with zero programming knowledge, but even that pseudocode I wrote is very simple and could easily be rendered simpler in the in-game menu). There's also the fact that having lots of drones would cause not only lag (if you get the max-upgraded hive cap to something stupidly high like 20, though even I can't think of a valid use for twenty drones in one expansion), but would likely get into one another's, and the players' way (the two-per-expansion do already, if I'm honest).
Plus, complex programming just feels more futureproof in general. I have a whole list of possible additional drone rules, below, that are beyond the scope of current drone function. Did the devs add some new slime-related feature that isn't even in the picture right now? That's fine, add some relevant drone code to handle it!
I also feel, since this game is so accessible, it would truly be a great platform to introduce the concept of simple programming to players who had previously never even thought about it before. Consider redstone in Minecraft. How many thousands of players learned about logic gates because of that? Well, at least one, because I'm among them.
I know this is titled "slime design" (not Slimedeas? Shame.) but it's also the only suggestion forum this site has.
First, I love drones. I truly do. They finally allow me to do...well, anything besides feeding my slimes and emptying their collectors. Thank you, Monomi Park, sincerely, for these adorable bees that can even wear curios.
However! I've encountered the same frustrations over and over, and I think I've finally come up with two mutually exclusive solutions to those frustrations.
Consider literally all of the below suggestions purchasable upgrades (perhaps from a new NPC? I originally considered 7Zee, but that raises the question about where in the list to put them. I think creating a new source for these particular upgrades, and perhaps other technological upgrades, is the best approach here.) Each separate header is basically a separate purchasable upgrade.
1: Complex Drones
Allow the use of more complex programming for drones. This programming is unique to each drone (the way it is now, just more complex). Specifically:
If / Else Statements
Example on a drone already set to collect plorts:
1. if honey:
destination = silos
elif pink:
destination = repository
else:
destination = market
2. if silo = full:
destination = repository
elif repository = full:
destination = market
Food Targeting.
Drones should be able to target “food” as a full group, in much the same way they can target “plorts” as a full group. If-statements should take care of which food goes where.
Furthermore, since the introduction of drones I've deleted all my coops, and rearranged my largos so none of them exclusively eat meat. This is because it's functionally impossible to get drones to properly feed out of coops. The only viable target is either “meat”, meaning roosters get fed out, immediately killing further chicken production; or one specific type of chicken, meaning I must either have all-boom-largos in an area or just farm ordinary henhens and not even bother with favourites. I did try just feeding old chickens, but chickens don't age up quick enough for that to keep a whole area even remotely well-fed, even with three coops.
In truth, if-statements would take care of the meat issue, but that still renders feeding meat a lategame objective, by which point most player's ranches are “done” anyway and there's no point rearranging what's worked up until then. The simplest solution is to just add “hens” as a food target.
Corral Favourability
For this to work, every corral in an expansion must be assigned an ID – by default it's just a number counting up from 1, but there's no reason players couldn't define their own corral IDs (I can already imagine people (rightly) upset at not being able to memorise the numbers and wanting to just name a corral “Shiny Bois”). Ponds, incinerators, and any future specialist slime containment should also get corral IDs.
Then players can choose from a list of preset possibilities for favouring corrals, including:
Fill most empty feeders first
Only put $food in $corral_ID
Always feed $corral_ID (last / first)
Harvest $food (last / first) – effectively, if more than one food is ready to be harvested, the drone will always go for the specified food last or first.
Share (I can't think of a simple shorthand for this rule. Effectively, if three corrals all get carrots, and the drone harvests 87 carrots, it divides 87 by 3 and feeds that number of carrots to all three corrals, tossing the small remainder into the final corral it feeds).
With that done, it's effectively just another list of if/else statements, because let's be honest, that's how most real autonomous drones are programmed, too. Because it's simple and it works.
If cargo = mint_mango:
destination = Honeys
elif Honeys_Feeder = full:
destination = GlowBois
elif $feeder_fruit = empty:
destination = $feeder_fruit
else:
destination = silos
To explain the $feeder = empty rule: $feeder looks for all feeders in the area that accept fruit. For this particular rule, if any of them are empty, the drone's destination is now that empty feeder. Then the drone checks again: any more empty feeders that accept fruit? No? On to the silo.
(I know you can technically “specify” which food goes where by pre-filling the container, but I'm having huge problems getting those containers to stay filled for any length of time, and drones literally can't even see empty feeders, so we really need a way to just tell them what foods go where)
Heirarchy
Since we're turning drone code into several separate lists of if/else, we need to indicate a heirarchy of execution (both to avoid conflicts, and to make it easier on players to understand what they're telling the drone to do). This would likely be a simple drag-and-drop list of all the different rules (which each total if-statement functioning as a single rule), with the rule at the top being executed first, and the rule at the bottom being executed last.
So using all of the above examples, a single drone could be set to:
Target = Food
1. Harvest carrots first
2. Fill most empty feeder first – making this rule the most important. Forget the specifics, just feed them whatever's lying around. (Although, if implementing the “food targeting” concept, there might need to be a requirement that it be a food type that corral is set to receive. Considering most players keep largos, that could potentially be two different food types. Effectively meaning this rule will be skipped if the drone is carrying carrots and the only empty feeder belongs to a boom/quantum corral.)
3. If cargo = mint_mango(...) – you can see the full rule above.
4. Feed ShinyBois first – if the drone is carrying valid cargo for ShinyBois, they get it regardless of who else it would go to (unless it's carrying mint mangoes, because they're only for Honeys and GlowBois, as defined in rule 3.)
5. Default behaviour – this rule cannot be dragged like the rest. It's permanently stuck at the bottom of the list, and only exists to illustrate to players that, when all the other rules no longer apply, the drone will go back to behaving the way it did before complex rules were applied to it. This means that if there are no carrots to harvest, no empty feeders, it isn't carrying mint mangoes, and ShinyBois have been fed, it'll behave the way drones do in the current version of the game.
2: Hives
Drones no longer live on individual flowers. Instead, one(1) Hive may be placed in each expansion. By default the Hive contains two drones, but the player can craft more and add them to the hive up to a certain maximum, defined by the hive's level. Hives can be upgraded twice. I'll leave the specifics up to the devs.
The hive itself has a very similar interface to the one currently allowing drone programming, but with a supermenu allowing the player to select which drone they're programming. (Maybe we could even name the drones, though Drone_1 and Drone_2 are fine too).
Drone programming itself would largely be identical to the current system, though I'd still like to see vague food targeting and some more simplistic if-statements, the full gamut of suggestion 1 is largely rendered irrelevant by the mere existence of additional drones. Essentially, if we can have more drones in an area, we no longer need the “food drone” to be able to differentiate between specific food types or corrals.
Hives still need to be watered every day, and every morning all drones consume one honey plort. Hives have a container that can hold <arbitrary number> of honey plorts, so players aren't topping them up every day. Those plorts are irretrievable, as they are with the lab repository.
I strongly prefer suggestion 1
For a variety of reasons, really. It feels less cumbersome when playing, even though it would likely be more cumbersome to implement (and learn, for those with zero programming knowledge, but even that pseudocode I wrote is very simple and could easily be rendered simpler in the in-game menu). There's also the fact that having lots of drones would cause not only lag (if you get the max-upgraded hive cap to something stupidly high like 20, though even I can't think of a valid use for twenty drones in one expansion), but would likely get into one another's, and the players' way (the two-per-expansion do already, if I'm honest).
Plus, complex programming just feels more futureproof in general. I have a whole list of possible additional drone rules, below, that are beyond the scope of current drone function. Did the devs add some new slime-related feature that isn't even in the picture right now? That's fine, add some relevant drone code to handle it!
I also feel, since this game is so accessible, it would truly be a great platform to introduce the concept of simple programming to players who had previously never even thought about it before. Consider redstone in Minecraft. How many thousands of players learned about logic gates because of that? Well, at least one, because I'm among them.