I made you a biochemistry!
The above diagram still needs some work: I need to establish water, oxygen, fibre and enzyme requirements for the various metabolic processes. I might need to find better sources than wikipedia for that. I’d also like to simplify it: perhaps combine ATP, NADH, FADH2 and Quinol under the catchall of “energy” and eliminate the ATP Synthase and Citric Acid Cycle processes. Oh, and I need to work out how some bacterial colonies digest cellulose, and look into photosynthesis.
By now you’ve probably worked out what this is all about: at some point in the last few weeks I stopped thinking of “diet” and “dietary chemisty” as a game design problem, and started researching actual biochemistry instead. Turns out it’s fascinating. Who knew? Well, biochemists, probably. Slimy bastards been hogging all this fun to themselves.
In any case, the grubby fingerprints of evolution are all over the field of biochemistry. The entire metabolic system is built on progressively simpler but less efficient systems: you can elimate everything but glycolysis and anaerobic creatures can still get energy from ingesting glucose.
Researching it has also been an eye opener. I haven’t really learned any trivia I didn’t know before this, but I have tied together a large number of factoids I’d picked up via cultural osmosis and Attenborough documentries into a coherent, interelated web. “Termites and cows use bacterial colonies to digest plant matter”, “our muscles generate lactic acid when they can’t get oxygen fast enough”, “our body starts feeding on itself when we starve”, “animals breath in oxygen and breath out CO2″, those sort of things. Biochemistry links all these things together and tells us why they happen. Which is awesome.
This really is how I should have been designing these elements of the game from the very beginning. Although I still may not end up simulating biochemical evolution (doing so would violate the “seeing evolution happen” design goal), this bottom-up approach to diet provides us with several interesting elements that would otherwise be simulated seperately: oxygen and water requirements, as well as the… um… expulsion of CO2 and uh… undigestables. If we do include biochemical evolution, said… undigestables… might be digestable by other species, and could serve as as a… um… food… source…
Oh god what have I done. It’ll be just like that digimon I had as a kid.
Of course, the requirement for water and oxygen (clean water! fresh oxygen! nothing to do with shit!) might have some impact on Primum Specium’s ability to survive. How’s PS going to get to water if it can’t even find food consistantly? The bottom-up approach states that problems are caused by the simulation not being accurate enough, so how do simple real-life organisms solve the oxygen and water problem?
The answer is diffusion: their cell membranes are thin enough to absorb the elements they require. Which means that the reason Primum Specium is having trouble surviving isn’t because it’s simple, but the opposite: it starts with a complex rough-skin texture (it’s actually rhino skin). This will have to be replaced by a transluscent membrane of some description. Which should be fun to do.
Displaying a complex, semi-accurate biochemical system like this to the user is going to be an interesting design challenge. Done right, it has the potential to be an interesting insight into how the creatures work, with the added bonus of providing bucketloads of tangential learning. Done wrong, it could very easily become an incomprehensible mess (like the flowchart above) that obscures why some creatures survive and others don’t.
To simplify it, one possibility is to treat it as a discreet process. Minecraft is a great example of discreet processes: you don’t craft 1.24kg of logs into 4.96kg of planks, you craft 1 log into 4 planks. It’s impossible to have less than 1 of any resource in minecraft, which is part of what makes the game so intuitive and satisfying: integers, especially small (two digit) integers, are much easier for most people to work with than fractions or decimals.
Thus, a discreet biochemistry system would involve 1 glucose being ‘crafted’ into 2 pyruvate. This mirrors the molecular reaction, where 1 molecule of glucose is broken down into 2 pyruvate molecules, which is a nice bonus.
In Species, of course, the majority of numbers are continuous. This is a matter of necessity, rather than game design: evolution is a continuous process. In fact, the numbers which have to be discreet (“head type”, “body covering”, etc) evolve very differently to the continuous ones: they operate under a “lucky monsters” system, where the rare mutants who have improved types have to actively survive and outcompete their brethren, rather than the entire population slowly changing on a statistical level.
The non-genetic numbers, though, don’t always have to be continuous. Some of them do: Kinetic energy and movement can’t be represented discreetly unless time is also represented discreetly, as in turn-based games like X-Comm. But diet is one place we could take things in the other direction: rather than continually absorbing energy from plants and meat, a creature’s feeding routine could easily be reconfigured to take discreet, periodic “bites”, with every number between there and energy being discreet.
It’s an interesting concept, and would make possible my ideal representation of the in-game metabolism: a functional infographic where you can actually watch each molecule being broken down into simpler molecules as it falls through the metabolic pipeline.
As always, much of this is long term stuff. Not as long term as some of these posts, though: as I wrap up my work on 0.6.0 I’m already thinking about what I’ll be including in the 0.7.0 release, and I’ll certainly be laying some of the foundations for this stuff.
PS: Random Screenshot.
First of four, I apologise for any formatting problems. WordPress doesn’t like me posting from this machine, and won’t let me access the HTML-editor I usually use to spread my blither across the intertubes, so I’m forced to attempt to use wordpress’ text editor. And, as is always the case when I use software for the explicit purpose for which it is designed, it does it’s valiant best to stop me.
I take this as a good omen. After all, you’re not doing science properly until inanimate objects start taking up arms against you.
Second of e, 0.6.0 is very nearly feature complete, which means I’ll be announcing the release date very shortly. Rovers and Clade Diagrams and Sat Maps oh my.
Third of i, the official website is still down. Frustrating. I tried to sacrifice a goat to our hosting provider, but that didn’t really help much and was kind of embarrassing for everyone involved. Especially the goat, who left halfway through.
The other point about the website being down is the possibility of lost data. I should be able to retrieve things like people’s pre-orders from other locations, but there’s a chance the forums and wiki have been lost. I’m thinking it might be best to treat all this as a fresh start: stop maintaining a separate ”Genetic Engineering” version of the game, forget about as many of the indiegogo perks as I can without breaking promises, and organise the site to accept pre-orders without me having to manually create an account for everyone.
Regardless, I do hope the website will be back shortly. Or at least before I find another goat.
Forth of infinity, I’ve got a blog post or two lined up, so even if the website doesn’t come back there should be something interesting to see here over the weekend.
“Or at least, interesting by Qu’s standards, which means it’ll probably be a flowchart of the bodies metabolism or something equally weird.”
Development doesn’t stop just ’cause the site’s down. Got a few pictures for you.
Rovers on an “Oasis” map. You can see the desert dunes in the distance. We currently have 5 different types of map, each with different water, height map and background settings.
The triumphant return of the 0.4.0 crater.
Working clade diagram, with hoverable species and fossil icons.
Old picture of the Sat Map. The current version also shows tree’s and corpses as green and red dots respectively. Also hoverable.
Grumble mumble grumble.
I’ve temporarily uploaded Species 0.5.0 to mediafire. You can find it here:http://www.mediafire.com/download.php?ld53yiv2f5f27tq
You’ll also need to install the XNA 3.1 redist to play it: http://www.microsoft.com/en-us/download/details.aspx?id=1….
My hosting provider had a catastrophic disk failure, and speciesgame.com is currently missing from the internetz. Which is bad.
They’re working on getting it back up ASAP. Which is good.
Hopefully it will be back shortly. If you’ve just found the game, check back in a day or two.
Sorry for the trouble everyone.
“This incident totally not caused by an accidental Orbital EMP Cannon firing. Out of curiosity though, does anyone know how to turn the safety on on one of those things?”
A friendly creationist left a comment on one of the old posts. I thought I’d respond to him or her in more detail here. Here’s what he or she said:
“Am I missing something? This article said nothing about how all life on earth could have evolved in only 4 billions years… NOTHING! But hey, if you want to believe everything arranged itself from a goo or a rock – GO AHEAD!”
That sounds to me like a CHALLENGE!
I certainly don’t believe “everything arranged itself” from a rock, and I’m pretty sure “goo” is only a singular noun in World Of Goo (worth taking a look at)… but I’ll try to explain what I accept as the most likely hypothesis about abiogenesis (which I guess is a synonym for “believe”? eh, close enough).
I’ll also try and simplify it as best I can, but I’m no expert so everyone else can feel free to correct me on this if/when I get it wrong.
Y’see, young earth was a very active place. Volcano’s and meteorites and lots and lots and lots of rain. Imagine the plot of Armageddon combined with the Yellowstone caldera erupting combined with a British Public Holiday, but everywhere.
Anyway, all this activity meant that pretty much every body of water, especially the shallow ones, would have been filled to the brim with volatile chemicals and minerals, like the floor of a chem lab after a shrapnel grenade. And combine a situation like that with an energy source (the sun) and earth would have been home to a whole host of interesting chemical reactions, including those that result in organic compounds.
Note that this isn’t speculation. The famous Urey/Miller experiment might not have been a particularly good simulation of early-earthian conditions, but it demonstrated that if you dump a load of inorganic components together and apply energy, you can get organic compounds easily enough. Besides, it’s successors have done a far better job of simulating early-earthian conditions, with even better results.
But back to early earth. This mix of organic compounds in shallow water, across an entire planet (that’s a lot of space for a microscopic experiment) provides the perfect environment for the formation of more complex chemical reactions, including those involved in abiogenesis.
Now, the exact mechanism of abiogenesis isn’t known, but this isn’t because it’s difficult to make happen. Turns out there’s loads of ways to make a self-replicating molecule. We’re spoiled for choice: there’s so many that it’s hard to pick a “most likely” option. Personally, I like the idea of catalytic cycles.
A catalytic cycle isn’t a self-replicating molecule. A self-replicating molecule is something that builds copies of itself out of whatever molecules exist in it’s environment: so Molecule A takes 2 Molecule B’s and combines them into another Molecule A. A catalytic cycle, on the other hand, is a molecule that builds another molecule, which in turn builds the first molecule. So A builds copies of B, and B builds copies of A. It’s chemical symbiosis, and the component molecules can be even simpler than self-replicating molecules (which are already fairly simple).
Anyway, once you’ve got reproduction, these molecules quickly take over their environment, converting all the “building block” molecules. If one of these cycles changes slightly to use a different mineral to make itself, it will be able to spread further than the original and become dominant where there’s none of the original food. This process can then continue until all the worlds oceans are teeming with catalytic cycles or another variety of chemical self-replicator. From there they become more and more complex, to use more and more ‘food sources’ and fill more and more niches. This is the base for evolution: random mutation + natural selection. It leads to more versatile molecules, to RNA and to DNA, and later to single celled organisms. Since you’re all undoubtedly familiar with evolution, I’ll skip that for now.
As you can see, this process isn’t the creationist misrepresentation of “the components of a cell rolled together by chance”. You might be able to say “the components of a catalytic cycle rolled together by chance”, but that wasn’t so much chance as chemistry.
Of course, the biggest stumbling block for public acceptance of the science behind abiogenesis (well, apart from people desperate to believe the universe as a whole cares about them) is that all this would have happened nearly 4 billions years ago. We don’t even have many *rocks* that old, and even if we did it’s not like molecules fossilize So there’s no way to know what the exact structure of the early self-replicator/catalytic cycles may have been. Maybe aliens did seed the planet with their dandruff, maybe God did look at a barren rock and think “you know what this needs? SINGLE CELLED ORGANISMS!”, maybe space bacteria from Mars surfed an asteroid here. Maybe all of these things happened at once and God got smacked in the face by an asteroid carrying martian head-lice We’ll never know for certain. All we can do is try to work out what the most likely scientific hypothesis option is. And that’s abiogenesis.
This isn’t enough for IDists and creationists, though: for some reason (I’ll avoid speculating on motives) they can’t accept that abiogenesis is even a possibility. But since it obviously is (and the research in that area just keeps on confirming this), they need to misrepresent it as something absurd in order to make their arguments from incredulity.
Which brings us back to the comment that sparked this post.
But hey, if you want to believe everything arranged itself from a goo or a rock – GO AHEAD
I don’t want to believe that because it’s a ridiculous misrepresentation. But hey, if you want to believe that the scientific alternative to your own beliefs is blatantly stupid, a fact which has somehow miraculously escaped the attention of every atheist chemist, biochemist and biologist on earth despite them spending their lives researching this stuff… go ahead.
“Or maybe it’s a CONSPIRACY!”
Alright, here’s what what’s done as of 0.5.0:
I know the original plan was to work on the simulation first, but 0.6.0 will be a slight deviation: I’d really like to fill out the gameplay profile above with Species-level Interaction and Ecosystem-level Observation tools. Aside from being entertaining, these upgrades should provide systems that will help me tweak the simulation in the future, and will allow me to focus exclusively on the sim for later updates rather than switching between interaction and simulation work all the time because I’m still worrying about whether the game is “fun enough”.
So without further ado:
Ecosystem Observation Tools
1. Sat map.
A 2d satellite map of the entire world, showing creatures as coloured dots or icons. Currently the player has to zoom out to see the movement of the creatures as a whole, which makes population concentrations hard to spot and the geographic distribution of different species impossible to track. This abstract view will allow for a much better visualisation of population dynamics in general.
2. Clade Diagram/Fossil record.
A proper one, with zoom and pan, and a “fossil” copy of the Species Average stored every few generations, stored as a node on the species line. Since it’s going to be sprite-based rather than render-target based, features like per-pixel population-sizes will be lost. I’m okay with this, since in exchange we get loads of other features: selecting species by clicking their lines, and shuffling the nodes of the graph as it develops (so you don’t end up with lines on top of lines), and viewing the graph in real-time or symbolically by generation, will be possible.
The population history will remain in the game, since it’s per-pixel population sizes are still useful, but I’m not planning on working on it any further. This new graph will replace it as the games official Tree Of Life.
I’m also not sure whether I’ll get to it, but I’d like to make is possible to see a “march of evolution” of the selected species avaliable as a part of this feature. That might get postponed, though.
I think this will probably be one of the most important features of 0.6.0, since it will give the in-game evolution post hoc evidence of actually having happened. It gives each saved world a past history, rather than just a present moment.
3. Web of Life
I cannot wait to work on this one: it will be a great way to see exactly how the mechanism of speciation works. What it will do is show genetic relationships as a node-link web, complete with it’s own elastic physics, world-of-goo style. Baby creatures will be added to the web, and dead creatures removed, in real time. Different species will be visible as groups of nodes with no links connecting them. Speciation itself will be visible as an area of the web ‘breaking off’ as the links (creatures) holding it to the main population die out.
Species Interaction Tools
1. The Mk1 All-Terrain Programmable Rover.
BAM! Hands up everyone who saw that one coming. (If you’re currently holding your hand in the air, congratulations on discovering your latent psychic abilities)
Yes, we are going to add a rover. Or more accurately, rovers: I plan to make them spawnable, so you can set up as many as you like.
This early in the piece they’ll be programmable only in the most simplistic fashion: [Feed/Kill] creatures who are [High/Low] in [Statistic]. But the advantage of it is that it will be operational at 10x speed, and it won’t get bored like a player would: it’ll just keep doing it’s thing until you tell it to stop. This will make artificial selection much easier to apply.
They’ll definately be drivable, if only because it’s easier to program them that way in order to test the physics, and it seems silly to remove a feature like that. I don’t know yet whether you’ll be able to do anything with them when you’re drive them.
I want to give these guys decent physics, too. None of the oversimplistic stuff the creatures use: the rovers will exist in limited numbers, so they get to have proper suspension and tire-friction. I’m hoping to do a halo|warthog-style exaggerated physics model for them, to give them a bit of character and make them fun to drive. I realise that doesn’t make much sense for a scientific rover, but there’s no way I’m going to pass up the chance to make something
1. World Types
I really don’t like “island” being the only world type: the semi-static shore biomes annoy me and the biome system is capable of much more than just islands. Simply adding a minus sign the the height/fertility equation can give us islands of forest in a salt plain, for example. So making the world system more versatile will be an important step.
2. Upgrade to XNA 4.0
Simply because it’s something I’ll have to do sooner or later. Might as well get it out of the way.
Oh, and it’ll probably come with a bunch of other tweaks and fixes to implement as I go, much the same as I did for 0.5.0.
One big advantage of the stuff included in this update: all of these features will be a lot faster than anything in the last one, which involved several major overhauls to existing systems. These are just UI screens and spritebatch representations of existing data.
Oh, and a realistic 3d point-vector physics engine for the rovers, but it’s not like physics is actually hard or anything. Normally that would be sarcastic humour, but it’s three days since I started working on this and I’ve already got something drivable, so… yeah…
Truth is, I expect 0.6.0 to be a pretty quick release.