Monday, November 2, 2015

I now propose the greatest game ever concieved: Squirrel Simulator

Honestly, I don't know if modern gaming hardware is up to the challenge, but you have to admit that it would be damned cool.

Historically water and foliage have been some of the hardest things to to simulate.  Well, not hard per se, more that they're extremely calculation intensive.

Consider that "Squirrel Simulator" popped into my head on the way to my pharmacy a while back when a squirrel leapt, as squirrels often do, from one branch onto another. These weren't the big sturdy branches, but rather the more numerous end branches that spread from the tree like pseudo fractals and cause the branches of one tree to become mixed with the branches of another without the two ever actually touching.

Naturally the branch that the squirrel leapt from reacted to the downward force exerted by the jump followed by the sudden absence of the squirrel's mass, but the more impressive thing was on the other end of the transit.  The squirrel caught it's intended branch and for a moment it and the branch dropped like a rock before a new equilibrium was reached and squirrel scampered off to preform its next feat of acrobatic daring that would make human athletes envious.

So we can imagine Squirrel Simulator where you run, jump, climb, and eventually unlock "Flying Squirrel Mode" (spoiler: they don't fly, they glide) through a world of branches and leaves and sprouts and the giant gap between the bottom branches and the ground and generally go around being awesome and having a good time.

But the amount of information would be massive, no two trees are the same, after all, and if you took shortcuts by making them that way it would show and the appeal would be lost, nor can you simply procedurally generate the trees using stochastic methods to keep them different and then discard them as soon as they're out out play.  Learning the best paths and experimenting and improving would obviously be an important part of the game.

But each leaf, each shoot, each branch, and ... well actually we can get away with pretending the trunks never move outside of windstorm levels because those things are massive fuckers that are hard to budge, but everything else needs to move in a realistic way in a system that's constantly having internal effects.  When one branch hits another that needs to cause a chain of reactions, the very air displacement as the squirrel launches itself through the empty space between one branch and the next is going to affect the leaves and thus the sprouts.

ANd the rendering, sweet fuck the rendering.  Maybe we can simplify the behind the curtain stuff representing branches as lines with a variable for thickness, though this is certainly not ideal, but to actually put the damned thing on screen and have it not look like shit?  Holy Mary mother of god and all her wacky nephews, think of the sheer polygon count.

So perhaps the world hasn't yet progressed to a point where it is ready for a game as great as Squirrel Simulator but I'm putting it out there now.  The idea is in the nonexistent aether now and you can't stop it.


  1. Hang on, why not stochastic methods? So that the player can learn the particular trees nearby? I recall another game that handled that issue by using a fixed seed, plus the location of each tree (well it wasn't trees in that game), to allow a consistent world to be generated at runtime. It was kind of an mmo precursor. You wandered the world offline, but if you were the first player to visit a place, you could submit a name. With a virtually unbounded world, a vast number of handcrafted place names were collected.

    1. Hang on, why not stochastic methods? So that the player can learn the particular trees nearby?

      Second question first: Yes.

      That pretty much covers the first one too, but for more detail and a jumping off point to further thoughts that I have had:

      Stochastic methods are initially promising because of the randomness inherent in them, but because of the desire for a persistent consistent world that promise goes away since, because of the same randomness, you'd need to save the entire resulting tree rather than the inputs used to create the tree.

      So in the end you'd want a deterministic system for tree generation with a bunch of different variables, have the variables that are input randomly selected for each tree, and then save the input, thus allowing the same tree to be regenerated later on without having to actually save the whole damned tree.

      But things become more complex because the trees in question wouldn't exist in isolation, the trees around them represent constraints on how they could reasonably be expected to have grown* due to the other trees competing for space and sunlight. How, precisely, to work that out in terms of tree generation and and store it without needing a branch for branch save is something I'm not entirely sure on.

      I do think that the biggest hurdle isn't in making the maps but instead in using them though. You'd just have lots and lots of branches, branches are not cylinders, people know this. So you've got the screen and the gameworld filled up with highly complex objects that do relatively little to occlude the highly complex objects behind them, which do little to occlude the highly complex objects behind them, and so on.


      * The trees would be made in an already grown state, though if the game spanned multiple years (a gray squirrel can live 20) it would have to actually have a way of making trees grow realistically.

  2. actual squirrel simulation would have no reason to be hyper realistic. The players aren't really going to notice if the trees are spaced out in a way that doesn't perfectly match nature - and if it's in a park, it isn't going to be natural anyway. The player is going to get bored jumping from tree to tree very quickly if there isn't anything else to do.

    The most important questions are probably going to be: which branches can I jump to from here, which are too weak to hold my weight, how bendy is the branch and can I manipulate the bend to reach different branches, what holds food, where are predators, and what places can I most easily hide? Look at what is important to the squirrel/player and simulate that. You don't need to calculate how every little leaf is going to fly off or not for that, or even every twig of the branch, unless you have crazy high budget in which case go crazy. Hell, you might be able to make a text version of this simulation. It just depends on what you are actually trying to accomplish.

  3. I agree that rendering would be the main difficulty. Storage would be relatively easy: start with say 256 standard twig shapes. A branch consists of a number of twig tuples (twig ID, attachment point, orientation) on one of the 256 standard branch shapes. Then you fit the branches onto the limbs, the limbs onto the trunk, and so on.