Today, we’re joined by Lead Game Designer Luke and Game Engineer Carter for a closer look at our latest RoboCo dev efforts:
Here’s something we finished a little while ago but haven’t written about yet: our new system to assign blame for property damage!
No one likes being blamed for something they didn’t do. But figuring out who to blame is also a tough problem, at least for a game engineer trying to interpret sandbox gameplay in a real-time physics environment. In our Closed Alpha build, we didn’t even attempt to interpret; instead, any object broken during a RoboCo challenge gave a penalty to the player. We intentionally placed humans away from breakables so that the humans were less likely to knock over a glass while casually strolling by. But then there’s that physics unpredictability: a human could get bumped off path or turn to look at a passing robot and in the process could smash something while you were minding your own business.
We never cared for this, as it’s a good game design principle to, you know, not punish the player for no reason. We brainstormed solutions, like what if you were only blamed for objects that broke within a certain radius of your robot? Ah, but that doesn’t quite work, because then you could deliberately throw a bottle at a wall and not get blamed, while a human nearby you could break a plate, and you’d get blamed for the plate.
In the end, our game engineer Carter devised and implemented a blame system that so far has proven clever and efficient:
• Whenever your robot interacts with an object, the game invisibly marks that object as having been recently touched by you.
• When a marked object touches a second object, the second object also becomes marked, to account for that sweet domino effect.
• Marked objects go back to being unmarked after enough time elapses. The cooldown time is designer tunable, so that we can experiment with the appropriate interval, which could be as small as a fraction of a second.
• If an object breaks while marked, your robot is blamed for it and it counts as property damage.
• If an object breaks while not marked, your robot is not blamed for it and it doesn’t count as property damage.
Here’s a closer look! Note that these prop outline colors will be invisible during gameplay.
And there’s even more nuance to how marking works to keep things fair:
• When marked objects touch other objects, they transfer their remaining cooldown, not the full cooldown time. Otherwise two objects could just keep each other marked.
• When two marked objects touch, they take the maximum of the two cooldowns.
• Humans can be marked too! But instead of using the designer tunable cooldown, the max cooldown they can have is an amount of time so small it just represents an instantaneous moment.
• That way, if the robot hits a human into something or causes a human to drop something by pushing them, the robot gets blamed. But if the human doesn’t break or drop the object while being touched by the robot, then the human accepts blame for any damage they may cause.
More footage of our blame system in action.
This system does leave some outlier possibilities: An object could sail through the air for longer than the cooldown window and yield no penalty, but we don’t mind to err on the side of forgiving for that. Or a human could manage to break an object within the brief cooldown window. We’ve contemplated an additional rule where a marked object becomes unmarked when a human touches it, but that one rule requires quite a lot of extra calculation and could even lead to situations where an object is frequently flipping between marked and unmarked states if the robot and one or more humans are in a bit of a wrestling match around it. Games often have to balance the ideal simulation against efficient performance so that they are playable, and so far this system seems like the best balance. Certainly it has radically reduced the unfair scenarios that existed prior.
So for all you moral philosophers out there, we are happy to report that we have efficiently solved the problem of who to blame, at least if you’re a robot or human in RoboCo. Feel free to apply this to all your upcoming household arguments about who left dishes in the sink, but remember, no guarantees expressed or implied!