Jump to content
Double Fine Action Forums
Sign in to follow this  
DF Brad

Automaton BRAINS!

Recommended Posts

I put this post up on our internal forum but I thought I would share it with you guys! Feedback is welcome! :D!

*****

Here's the work that I've been doing on the BRAINS of our robots! This came from taking Lee's core idea and then working with Patrick and Geoff to determine the (hopefully) best approach for how the Automatons will behave in the game!

The first chart, AUTONOMOUS HEAD INPUTS, lists all of the things that the Automatons can respond to.

Bump - The bot has bumped into a wall, a carryable, or another bot.

Damage - The bot has taken damage from something.

Movement - The bot has spotted something moving in its vision cone.

Sound - The bot heard something in its hearing radius.

Energy - The bot saw a mineable energy node in its vision cone.

Idle - None of the above conditions are true - this is fallback behavior.

These are processed IN ORDER. So if you're responding to the Movement input and then you take Damage, that response will take precedence and override your current behavior! On the other hand, if you're responding to a Movement input and you hear something, that input will be ignored completely.

For each input there are three responses that the bot can do. These are listed in the chart.

NOOP - do nothing.

Turn 90 - turn 90 degrees and then stop.

Reflect - reflect off of the the normal of the surface you bumped into and then stop. This leads to "Arkanoid Ball" bouncing behavior of the bots around a room!

Seek - go towards the source of the movement, sound, energy, or damage and activate your arms when you're within range.

Flee - face away from the movement, sound, energy, or damage and move forward.

Sentry - rotate in place, waiting for other inputs.

Random Movement - move in a random direction, waiting for other inputs.

Move Forward - move straight ahead, waiting for other inputs.

The second chart, AUTONOMOUS HEADS, lists all of the heads that we're thinking about. The idea here is that we can create "Archetype Heads" by hard-wiring some of these switches. For example, a Miner Head is hard-wired to Seek energy nodes in the world. The player can't change this! But they can determine a Miner's reaction to Movement or Damage - there are still plenty of choices to be made when you think about the many combinations of NOOP, Seek, or Flee for these two choices.

Similarly, combat-oriented heads like the Sniper or Soldier Heads are hard-wired to Seek when they spot something moving.

When we limit the number of options that are available for the player we can create a more diverse suite of Heads and also make the system easier to learn and toy with. I think it's going to be great!

We also have a Brainiac Head which has ALL SIX of the switches available for programming. This is the ultimate in customization, allowing the player to do whatever they want. This is more advanced, and would ideally be spawned farther from the player during our 2 week prototype!

Share this post


Link to post
Share on other sites

What about a puppy dog head. Similar to a sniper but with lower energy costs and hard wired to always seek, never flee:

EC: Medium, FoV: Narrow, Visual Range: Long, Int: Low

BR:Reflect, DR:Seek, MR:Seek ,SR:Seek, ER:NOOP, IR:Sentry

I had to make some assumptions about "Reflect" as it's not defined in your post. I imagine some fun scenarios where the only way to lose a puppy with a big gun is to scrap it off on another robot. That leads to question though; what happens if there is more than one followable in the FoV at once? Does it just respond to the stimuli that's closest?

Share this post


Link to post
Share on other sites

Yeah, great stuff, Brad! What's the 'intelligence' value for, though? At first I thought it correlated with the number of input switches, but that's not the case. How will an highly intelligent bot be different from a dumb one in the game?

Share this post


Link to post
Share on other sites
Yeah, great stuff, Brad! What's the 'intelligence' value for, though? At first I thought it correlated with the number of input switches, but that's not the case. How will an highly intelligent bot be different from a dumb one in the game?

We're still figuring this one out! Lee's original idea is that bots have a "processing speed" which we simplified into "intelligence." We're not sure how we want to use it, but right now I'm thinking that it controls how often they check their input queue. So a dumb Automaton would check his queue every 3 seconds while a smart Automaton would check his queue every 0.25 seconds. This leads to potentially weird / interesting behavior where a dumb bot gets shot and just sits there for several seconds before "waking up" and reacting to it, whereas a smart bot gets shot and instantly reacts.

The other idea we had was that dumb bots could "lock in" to their behavior for a certain amount of time before checking for fresh input. So a smart bot would be able to change his mind about what he wants to do a lot more often than a dumb bot. That one might also be weird!

If these lag times are too long it could lead to some weird stuff, but it's certainly an interesting idea! And Patrick just architected the input queue in a way that will let us test these concepts very easily in the next day or two! Woo!

Share this post


Link to post
Share on other sites
What about a puppy dog head. Similar to a sniper but with lower energy costs and hard wired to always seek, never flee:

EC: Medium, FoV: Narrow, Visual Range: Long, Int: Low

BR:Reflect, DR:Seek, MR:Seek ,SR:Seek, ER:NOOP, IR:Sentry

I had to make some assumptions about "Reflect" as it's not defined in your post. I imagine some fun scenarios where the only way to lose a puppy with a big gun is to scrap it off on another robot. That leads to question though; what happens if there is more than one followable in the FoV at once? Does it just respond to the stimuli that's closest?

I like the idea of a puppy bot! I'm not sure it's fully compatible with what we have, because right now bots don't have the capacity to distinguish between friend and foe. If you made a puppy bot with a big gun, it would probably do a great job at killing you! :D

Also - your puppy bot head doesn't have any player-tuneable attributes in its brain! Was that on purpose? :D

And that last thing... yeah we're going to have the bots always react to the closest input, whether that's a movement, sound, or damage instigator. It's the most learnable from the player's perspective!

Thanks for the feedback you guys! This is pretty cool to share the design process so early. :D!

Brad!

Share this post


Link to post
Share on other sites

I like the idea of a puppy bot! I'm not sure it's fully compatible with what we have, because right now bots don't have the capacity to distinguish between friend and foe. If you made a puppy bot with a big gun, it would probably do a great job at killing you! :D

Also - your puppy bot head doesn't have any player-tuneable attributes in its brain! Was that on purpose? :D

And that last thing... yeah we're going to have the bots always react to the closest input, whether that's a movement, sound, or damage instigator. It's the most learnable from the player's perspective!

Thanks for the feedback you guys! This is pretty cool to share the design process so early. :D!

Brad!

In my experience puppies are only good at two things: following things and peeing on the rug. I was indeed thinking of a puppy that was trying to be friendly but is in fact dangerous to everyone concerned. Including, the player. So no FOF recognition or configurable options. So your only option is to turn it on and hope you can stay alive alive long enough as you try to lead it to an enemy. The completely hard-wired aspect is by design I'd want players, when using this head to be thinking to themselves: "This COULD work out well." :D A small delay before the bot comes online may help (or hurt) it's usability.

I do have to ask does the arm perceive it's own stimuli or does it follow-on from head input (which would make sense). For example does the gun arm have "FIRE ON SEEK" or "FIRE ON MOVEMENT"?

Share this post


Link to post
Share on other sites

I like the idea of a puppy bot! I'm not sure it's fully compatible with what we have, because right now bots don't have the capacity to distinguish between friend and foe. If you made a puppy bot with a big gun, it would probably do a great job at killing you! :D

Also - your puppy bot head doesn't have any player-tuneable attributes in its brain! Was that on purpose? :D

And that last thing... yeah we're going to have the bots always react to the closest input, whether that's a movement, sound, or damage instigator. It's the most learnable from the player's perspective!

Thanks for the feedback you guys! This is pretty cool to share the design process so early. :D!

Brad!

In my experience puppy are only good at two things: following things and peeing on the rug. I was indeed thinking of a puppy that was trying to be friendly but is in fact dangerous to everyone concerned. Including, the player. So no FOF recognition or configurable options. So your only option is to turn it on and hope you can stay alive alive long enough as you try to lead it to an enemy. The completely hard-wired aspect is by design I'd want players, when using this head to be thinking to themselves: "This COULD work out well." :D A small delay before the bot comes online may help (or hurt) it's usability.

I do have to ask does the arm perceive it's own stimuli or does it follow-on from head input (which would make sense). For example does the gun arm have "FIRE ON SEEK" or "FIRE ON MOVEMENT"?

Arms are not going to have any intelligence. They will just be activated by the head. But the head is definitely going to check in with the arm and make sure that it's in range before it tells it to activate. :D

Share this post


Link to post
Share on other sites

Arms are not going to have any intelligence. They will just be activated by the head. But the head is definitely going to check in with the arm and make sure that it's in range before it tells it to activate. :D

So it will always fire anytime something comes into range? Or, is it connected to the head responding to something? For example, could a robot with a gun, even though it sees players/robots, be chill all the way up to the point it's damage response is activated (at which point it starts firing)?

Share this post


Link to post
Share on other sites

Arms are not going to have any intelligence. They will just be activated by the head. But the head is definitely going to check in with the arm and make sure that it's in range before it tells it to activate. :D

So it will always fire anytime something comes into range or is it connected to the head responding to something? For example, could a robot with a gun, even though it sees players/robots, be chill all the way up to the point it's damage response is activated (at which point it starts firing)?

It depends on the responses set for the other behaviors!

If you set everything to NOOP (do nothing) but you have the Damage response set to Seek, then yeah - the robot will just stay totally chill until someone provokes it with damage. Then it will Seek out the source of the damage and try to attack it! Or rather, it will seek out the source of the damage and try to activate its arms. These don't even have to be weapons! We have lots of tools, like mining lasers, spotlights, and klaxons that are all technically arms! :D!

Share this post


Link to post
Share on other sites
Lee's original idea is that bots have a "processing speed" which we simplified into "intelligence." We're not sure how we want to use it, but right now I'm thinking that it controls how often they check their input queue. So a dumb Automaton would check his queue every 3 seconds while a smart Automaton would check his queue every 0.25 seconds. This leads to potentially weird / interesting behavior where a dumb bot gets shot and just sits there for several seconds before "waking up" and reacting to it, whereas a smart bot gets shot and instantly reacts.

The other idea we had was that dumb bots could "lock in" to their behavior for a certain amount of time before checking for fresh input. So a smart bot would be able to change his mind about what he wants to do a lot more often than a dumb bot. That one might also be weird!

If these lag times are too long it could lead to some weird stuff, but it's certainly an interesting idea! And Patrick just architected the input queue in a way that will let us test these concepts very easily in the next day or two! Woo!

Can a bot that has been activated and is actively seeking on movement ever be distracted? I know it's early and all this stuff isn't quite worked out but it seems that a bot seeking on movement that's "locked on target" when checking for new stimulus would always see the thing that activated it to begin with (as long as it's still moving [i.e. running away]). I ask because the ideal scenario I was imagining for the puppy head would be for the player it was following to maneuver in such a way as to cause an enemy robot to pass between the puppy and the player, thus causing the puppy to follow the enemy robot instead.

Share this post


Link to post
Share on other sites

I am really loving this game and it will probably be the first that i try. Also I am really looking forward to get a beastly robot with a big gun and just ride that bitch around.

Share this post


Link to post
Share on other sites

The real question is where we are going to put this Dubstep Head, or which robot is way into Dubstep. Is it known if other robots generate more sound than others, making it easier for them to be caught if they generate more sound?

Share this post


Link to post
Share on other sites

Maybe intelligence can be how sensitive the head is to stimulus? For instance, a dumb robot might not see something moving until it was 10 feet away, while a smart robot could see things at the other end of the world. It could also be how accurate the arms are at performing the action - a dumb sniper will miss a lot more than a smart one.

Share this post


Link to post
Share on other sites

I think it would be cool if the robots chimed with synth sounds that were specific to the response when it is active. "NOOP" would be silence or a dull pulse, the "sentry" response could have a radar ping. Maybe "random move" could make a random arppegio sound.

I imagine a type of panic ensuing if suddenly you hear a group of bots chime with the "seek" response.

I also like the idea of putting a head on a robot to find out what behaviors it evokes. Having to test it out on a weak bot before putting it on a weaponized one because it might try to kill you.

Share this post


Link to post
Share on other sites

I'm getting scared I'll need an engineering degree to play this game.

Not that that's a bad thing, but the fact that Lee wants no tutorial really scares me. I hope that's being reconsidered and if still no tutorial, a really detailed instruction manual.

Share this post


Link to post
Share on other sites
I'm getting scared I'll need an engineering degree to play this game.

Not that that's a bad thing, but the fact that Lee wants no tutorial really scares me. I hope that's being reconsidered and if still no tutorial, a really detailed instruction manual.

You won't. It'll be fine. If someone explained all the things that are going on just to make Mario jump without floating upward forever into infinite space or falling through the floor and plummeting forever into infinite depths, not to mention how all the sprites (i.e. little images of Mario) are triggered/animated/etc at the right times, it would start to sound like a lot of work just to make one stupid Mario do one stupid Jump.

But on the player end, you just press B. Ah. The sweet luxuries of being on the player end.

Share this post


Link to post
Share on other sites

@DF Brad

I seem to recall Lee mentioning that he is interested in the possibility of making automatons that are somehow rideable, so the player can use them to traverse certain kinds of environmental dangers.

If you guys are still interested in experimenting with that idea, maybe there should be some kind of terrain check to see what kind of ground the automaton is currently over (am I over dirt? asphalt? water? mud? sand? lava? an infinite black void?)

If we ignore the possibility of airborne automatons and think of just water and dirt, this allows the possibility of some automatons checking to see if they are over water and having a set of possible reactions:

--Deactivate/destruct (destructs if player takes it swimming)

--Turn 90 (avoids water)

--Dive (an amphibious automaton)

--Float (a jesus automaton)

--use arms (if there are any applicable to water)

Share this post


Link to post
Share on other sites

We're trying to keep the "programming" super light! I don't think you should fret about this aspect of the game until you experience it. I believe that we're making the right call by limiting the number of switches on most of the heads - you'll only have a couple of decisions you can make with most of the heads, and they should work in an intuitive manner.

As for being able to grab onto the bots - this is only for hitching a ride! You can't actually control the bot - it's just for getting over hazards or moving more quickly through the environment.

Share this post


Link to post
Share on other sites

I think limiting the number of variables is good, cos this game almost sounds like coding work.

Hey

if you haven't already. It's a method of coding automatic behavoirs into your characters.

The idea is that you pick a target, then pick an if statement, then pick an aciton. The fun part is that over the game, you UNLOCK and FIND NEW OPTIONS. So when you see "enemy with lowest maximum HP" in a shop, you start thinking creatively about how you'd be able to use that.

... I guess that's what finding new pieces is like in Autonomous.

Also maybe think about a robot who protects and fixes your other robots. Or one who acts as a scarecrow that sets off an alarm to alert other robots.

Or maybe a robot... who BUILDS OTHER ROBOTS, LEADING TO THE AUTONOMOUS SINGULARITY? lol I bet people suggesting features while you're figuring out early basic interface stuff is really annoying.

Share this post


Link to post
Share on other sites

As for being able to grab onto the bots - this is only for hitching a ride! You can't actually control the bot - it's just for getting over hazards or moving more quickly through the environment.

Oh, that's right! Not being able to control the robots is really important to the whole idea, so of course I wouldn't want to contradict it. I do like the idea of riding the automatons over hazards, though. I guess it's possible that the automatons could still react to environmental hazards or travel over/through them, but it just wouldn't be something the was "programmable" by the player.

Anyway, makes sense. Carry on. *salute*

Share this post


Link to post
Share on other sites

So the thing is that when you are riding a bot can it see you. So the plan I had was that I make a mean bot that shoots all that moves and then when activated be able to jump on its back and just let it do work while you watch and ride. Then already being on its back can maybe easily deactivate it when you want to get off and check some cool stuff.

Share this post


Link to post
Share on other sites
We're trying to keep the "programming" super light! I don't think you should fret about this aspect of the game until you experience it. I believe that we're making the right call by limiting the number of switches on most of the heads - you'll only have a couple of decisions you can make with most of the heads, and they should work in an intuitive manner...

Glad I don't have to refresh my course in electric engineering or go back to Assembler and old x86-CPU manuals to learn how to play this game (take THAT @notch & 0x10c!)

Still not feeling comfortable with the idea that robots have 'brains'. Of course, they are ROBOT-brains, but everyone knows their brain is their heart and their heart is the (single-core!) CPU inside their torso?? Ask any robot you know!

A robot head is good for having a visor (yes! I watched the pitch, thank you). Cutting/Smashing or disassembling the head would just make the robot run around like a headless (robot-)chicken - aka, fully functional - just without 'eyes'?

I have to ponder over this excecutive design decision some more. But ... yeah, it's YOUR game. I get it.

Share this post


Link to post
Share on other sites
So the thing is that when you are riding a bot can it see you. So the plan I had was that I make a mean bot that shoots all that moves and then when activated be able to jump on its back and just let it do work while you watch and ride. Then already being on its back can maybe easily deactivate it when you want to get off and check some cool stuff.

That should definitely work! Most of the Automaton heads have visors that are either "narrow" or "wide" in vision. (exact numbers TBD!) If you're behind them you shouldn't register as an input.

We are going to experiment with a head that has a 360 degree vision radius. In this case, if you right behind it it technically would be able to see you. Madness? Maybe! :D!

Share this post


Link to post
Share on other sites

We are going to experiment with a head that has a 360 degree vision radius. In this case, if you right behind it it technically would be able to see you. Madness? Maybe! :D!

I was thinking that there should be flying automatons -- like maybe there's a head or a torso that has a propeller attached to it which creates a bot that hovers. And that would be a good one for 360 degree vision since it has an aerial view.

Share this post


Link to post
Share on other sites

We are going to experiment with a head that has a 360 degree vision radius. In this case, if you right behind it it technically would be able to see you. Madness? Maybe! :D!

I was thinking that there should be flying automatons -- like maybe there's a head or a torso that has a propeller attached to it which creates a bot that hovers. And that would be a good one for 360 degree vision since it has an aerial view.

... complicates the game even further? Kojima-san would disagree with you.

Share this post


Link to post
Share on other sites

We are going to experiment with a head that has a 360 degree vision radius. In this case, if you right behind it it technically would be able to see you. Madness? Maybe! :D!

I was thinking that there should be flying automatons -- like maybe there's a head or a torso that has a propeller attached to it which creates a bot that hovers. And that would be a good one for 360 degree vision since it has an aerial view.

... complicates the game even further? Kojima-san would disagree with you.

Not necessarily. A flying automaton doesn't have to be capable of flying over walls if that's complicated to program (would be cool if it could though). I just like the idea of an automaton with a propeller flying around. :D

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...