The Truth Behind Robocto (and a few lies)

The Truth Behind Robocto (and a few lies)

One of the really fun things about building and now playing Robocto is that, at it’s core, the game is a simulation of the ocean.  There are a number of things I’ve left out for now to make a game that can run on mobile platforms, like currents, tides, certain lighting effects from water, etc. yet it still plays like you’re exploring a living ocean.

AI

Building the AI for the animals has been an important part for me.  First, I wanted a large cast of animals, each with its own behaviors.  There are Blue Tang, Yellow Tang, Streaked Spinefoot, Mandarin, Amberjack, Crabs, Sea Turtles, Stingrays, Moray Eels, Humpback Whales, Orcas, and Great White Sharks (and more to come).  I researched their behaviors on Wikipedia and Youtube and broke down their movements into individual state machines.  Some of these species see further away, some have blind spots, some hide in coral, and some swim in a school.  Some are predators to Robocto, some prey, some both, and some neither.  They have varying top speeds, acceleration rates, and turn rates, varying places they prefer to hang out, and specific behaviors tailored to each species.  Even within a species there are adults, children, and everything in between, all with size and behavior variations related to their maturity.

Randomness

The key to making a simulator that feels real, where things happen differently every time, comes from a heavy use of randomness.  In past jobs I’ve built simulators of space, air, and underwater environments to test the robot code I was writing.  There I would vary certain parameters to see how that would affect a maneuver, but it was all very controlled and repeatable.  Here I’ve had the chance to throw all the randomness I can muster into the code.  But not just randomness, controlled randomness:  The various types of ore appear at random locations, but depending on the ore type, are more likely to be in deep or shallow water, or wedged into rock on a slope.  The prey animals all spawn randomly in one of many coral and swim to random locations, but are still guided by their species preferences.  Even their behaviors have randomness built in, like how hungry or persistent a shark is while attacking Robocto, to how long Morays allow you near their coral before threatening you.  Allowing so much randomness invites bugs that appear from a confluence of rare conditions that can be difficult to repeat and track down.  But usually, tweaking the bounding parameters around the sources of randomness that make those conditions fixes the problem (or makes it less likely).

Respecting Science

I spent a good deal of time on the science behind Robocto.  I’m not a metallurgist, materials scientist, marine biologist, or an expert on many of the fields this touches on, nor is the system I built meant to be an example self-sustaining 3D-printed life form that could actually work.  This is science fiction, but I wanted to make an example that might resemble something that could work.  The energy and carbon received from burning a fish of a certain size is real.  The amount of energy that would then have to be expended to smelt a certain type and amount of ore is real.  The space in Robocto’s belly, and the den’s storage is limited and real, giving the player trade-offs in what to equip for the mission at hand when heading out from the den.  The energy expended from swimming, walking, and drilling is real.  The relative size and speed of animals are real.  To be fair, by “real” I mean as real as I can make them from what I find in researching these things.  So they’re not “true”, but are likely accurate within an order of magnitude.  I took liberties with various aspects like the availability of ore, the small set of chemical ingredients needed to make things, and even that climate change wouldn’t have killed off most coral 50 years from now.  A sad troll could write a book on the various implausibilities of this specific system working in the real world, but I wouldn’t have been happy falling back on the “well it’s science fiction!” defense.  I wanted the restrictions in the game to be real, the chemistry to give some understanding of chemical properties of real elements, and the printed gear to represent existing marine technology.  Having built the simulation within those boundaries, I’m hoping players will have an immersive sci-fi experience without any magic.  Like Circus of Prodigy, this near-term, no-magic science fiction is what I like to call Sci-sci-fi.

What is Progress?

What is Progress?

Making Robocto: Scripting an opening sequence

Making Robocto: Scripting an opening sequence