A New Chapter in Speculative Biology

I would like to begin my blog by saying hello and thank you to everyone reading this first post. Good blogs are made largely by the viewers, rather than the actual persons that write them, and I see this as a start of a great relationship.

VirtEvo is an evolutionary simulator that my team and I are currently working on. There are a couple games that are similar in concept to ours out there such as Thrive or Species ALRE, to name a few. However our game will be fundamentally different from all of them in that instead of having the game run on only one computer, which would greatly limit the computational power available, VirtEvo is programmed to be a multi-player game able to run on hundreds, if not thousands, computers simultaneously. As a result, we will be able to include features that would be computationally expensive for a standard PC game. These include simulation and evolution of grass, plants, and trees, fractal terrain that will (possibly) support continental drift, extensive fluid, fur, and skin simulation, a fully functional neuromuscular system, and neural networks to control the behavior of NPCs.

The game itself will be played similar to the creature stage in Spore, but still different in many aspects. Although you will play as a single organism and evolve over the course of millennial, you will be able to at any point exit your creature and “possess” another one. The game will also be a lot more realistic than Spore and you will be given a greater control over your creature. The current plan is to have an editor in which you will be able to modify your skeleton by lengthening, splitting, or adding bones, as well as improving old organs or making new ones. The program will then cover your creature with skin and fur/feather/scales and ta-da! Your creature is created.

Since the game will rely on physics rather than a simple precomputed model, your organism’s stats will be judged by how it would actually perform if it was a living and breathing organism i.e., rather than having your speed be a function derived from the length of your leg, every single muscle contraction will be simulated. Hence, while long limbs might be better then shorter ones in some cases, it would actually penalize you if they were more than a couple meter long. And, in fact, if you choose an arboreal lifestyle, shorter legs would actually be of a greater benefit.

Now that I’ve writen a bit about what the game will be about, I would like to explain the purpose of this blog. While VirtEvo promises to be a great game and evolutionary simulator, our team is currently working on the engine and, as a result, it will take a while before we actually have any progress or graphics to show off. So before I will able to write about how we expertly implemented ocean waves or show videos of the game progress, this blog will be dedicated to speculative biology. Basically our goal is to get as large an audience as we can before we start releasing alpha and beta versions.

Blog posts should be posted every two weeks and the first few will have the following topics:

  1. Evolution of feathers, complete with step by step diagrams and in depth explanations.
  2. Evolution of mammalian fur and its original purpose (which actually wasn’t to keep us warm).
  3. Evolution of scales. This one will be fairly short, but I decided to add it in to complete the series.
  4. Evolution of bones (Spoiler: they actually evolved from teeth).
  5. Evolution of flowers and the animals that pollinate them.

Okay. That’s it. I’m out of ideas for blog posts, so if you would like something explained or would really like to read about some evolutionary enigma, feel free to post it in the comments section below.

2 thoughts on “A New Chapter in Speculative Biology

  1. Hi! I just have a couple questions:
    It sounds, to me, like the core of your engine will be the job distributor, sending out tasks to connected computers. How do you plan to coordinate computation? Will a central server assign chunks of the world to each client, or are you using some P2P handshaking mechanism? What sort of tasks can you farm out, and how will you split them between computers?
    And about your evolution simulation: are you planning on simulating at the population level or at the individual level?
    I understand if I’m asking questions that can’t be answered yet, I can wait and see how the game progresses. Do you think you’ll be writing more technical blog posts as the engine evolves?
    Thanks!

    Like

    • Hey! I just accidentally deleted the page long reply I just typed, so I apologize if this one is too short.

      When the user downloads the game, one of the files will be a dataset of the entire planet with. The height field will have points take every 100m (subject to being changed). At startup and as the player moves from one place to another, our dynamic LOD system will use fractals and other techniques for generating detail.

      The game will then fill the terrain with grass, trees, and rivers. The simulation of these will be happening on the clients machine. We are using Outerra and Proland for inspiration, but we are also looking at other technical papers.

      The final thing that will happen on the clients machine is the simulation of the player’s organism. It will rely mostly on the method described by Geijtenbeek in his paper. According to him, up to 9 simulations are able to run in real-time; however, since we will not allow for drastic changes between generations, the simulation should settle on the best possible outcome in only a few generations (these will be computed after the player exits the editor). For the actual movement, we will use a look-up table for various gates that were generated by this algorithm.

      Every 100ms the client will spend the players position to the server (a single point) and the velocity (also a single point). The server will gather the points into groups depending on their location and send them back to the clients. As a result, the player will see the location of all other organisms in his close vicinity. Their animation will also be generated by the client.

      The servers will then decide how the NPCs will move and what they will do (mate, eat, fight, etc…) and send their location to the client. As you see the plan at the moment is to simulate evolution at the individual level, but we are unsure whether this will be actually possible to implement, so we might need to generalize some aspects.

      I will definitely like to write technical posts when we get to that part. In the meantime, you can check out my “Evolution of a Trait” series of blog posts. Thanks for your interest!

      Like

Leave a comment