Archive for category Game Design
I’ve been working on applying torques to the creatures in a meaningful and well thought out manner (read: banging my head against the keyboard whilst trying to fix all the horrible signage errors). The original intention was to simply pass the torques on to the energy system and let natural selection weed out the unbalanced and physically impossible specimens. But I realised I have the perfect opportunity to overhaul a system that has bothered me since its inception: the quadruped system.
Logically, if a creature has slightly smaller front limbs than back limbs, it should lean forward in order to walk on them (unless it’s a pangolin, but they’re too awesome to be swayed by our petty logic).
Without something to enforce this, every creature in Species ALRE would be a biped, because every creature has at least a *slightly* different leg size.
The quadruped system governs how this is implemented. A hideously simplified description would be “if the torso rotation is less than 45 degrees, and it has fore or back legs, the creature will fall forward onto its front legs or chest. If it’s higher than 45 degrees, or it has mid-legs, it will remain bipedal.”
That “45 degrees” is completely arbitrary. It’s just a value I picked.
This system is why ‘head-down butt-up’ creatures, whose bodies hang forward from their back legs are so common: Any creature with large back legs and a small torso rotation will end up with this body plan.
That’s the old system. The new one is much more sophisticated.
It starts by completely eliminating the quadruped system: creatures will initially be created *exactly* as their genes would have them (ie. with only one pair of their legs reaching the ground). It then calculates the skeleton and torques as normal.
Once that’s done, it passes control to the droop system. This applies “droops” to every body part attached to the torso: limbs, neck and tail. Legs are bent upwards by the reaction force on their legs, neck and tail are bent downwards, and the torso droops based on the creature’s balance, all in direct proportion to the torque applied on the joints.
If a body part droops into the ground, it stops drooping and adds a ground contact point, which will take some of the creatures weight in the next step.
Then pass 2 starts, the body-plan is completely reinitialised: bones are regenerated, torques and forces are recalculated. The results of pass 2 are what the creature will ultimately use for most of it’s energy calculations, so as to take advantage of the creature new quadrupedal body plan. (physical droops will affect energy, but proportionally to how much they rotate rather than as a function of torque. Small drops onto legs will be a negligible cost)
This also has a noticeable effect on creature appearances. I haven’t adjusted the rotation genes at all in the following screenshot: these variations are entirely the result of torso, neck and tail thickness changes causing different torques in the creature’s body plan.
One particularly noticeable change is that the creatures tail now has an effect: increasing its mass is the only way to counter the torque produced by the head and neck in the second body plan. For bipeds with centrally situated legs (raptor-like creatures), a sizable tail will be the only way to maintain balance (other than having an upright torso rotation gene and incurring a large energy cost in droop).
I’m hoping this system will be realistic enough to promote life-like body plans in place of a real-time physics system, which would be far too CPU intensive to implement across thousands of creatures. More likely, it will be exploited ruthlessly in ways I can’t yet imagine. But hey, that’s what makes it fun!
“Anime references. There goes the neigbourhood”
I’ve come up with an idea…
Here’s the deal: every two weeks, you (yes, you) can vote for a new body part to see in the game. We’ll put up a choice of 4 new body parts each fortnight.
The winning body part of each round will be modelled by our artist Jade and added to the mutation map in 0.7.0…. if, and only if, speciesgame.com gets enough unique visitors that fortnight. (“Unique visitors” includes returning visits, so coming back the next day to check the forms or wiki counts!) Last fortnight we had 5322 unique visitors: for the first round, we’ll aim to roughly match that. To keep things interesting, we’ll adjust the target after every round.
So, without further ado, your choices for the first 0.7.0 Body-Part Voting Spread-The-Word Competition Thingy (working title) are:
* Crocodile Longjaw *
* Housefly Probiscus *
* Zoidberg Tentacles *
* Halo Elite Split Jaw *
Vote here: http://www.speciesgame.com/forum/viewtopic.php?f=24&t=264 (you’ll need to register to the forums to vote)
So go forth! Spread the word, join in on the forums, and remember to vote. The winning head type will make it into Species 0.7.0 if we get 5000 unique visitors before the 15th of September.
(Edit) Suggestions to help make sure we get enough visitors!
Visit the site, post on the forums, even try updating the wiki (it hasn’t been updated since 0.4.1!)
Like/Share our Youtube Gameplay Trailer (and subscribe to the channel if you want to see more of the same!)
Like/Share our facebook page
Link to us on twitter (though my twitter account is basically just a blog feed, so best just to skip it and link straight to speciesgame.com)
Mention us on your blog/in the comments on relevant blogs/on tumbler/on reddit… anywhere you think people might be interested! 😀
\/ Or just use the buttons below to like and share this post around \/
So. We’ve updated the Environmental systems in 0.5.0, and the Gameplay options in 0.6.0: it’s time to go back to basics. 0.7.0 will be the Utilitarian Update, focusing primarily on the backend systems behind simulating and displaying creatures.
As the name suggests, this will not be a big fancy update. We’ll be upgrading the elements that have been left behind in quality as everything else has improved, so there won’t be any brand new features: just improvements on old systems. But that doesn’t mean there’s not going to be loads of awesome stuff! Our goals for this update are:
Code Cleanup And Modularisation
Okay, boring stuff out of the way first. This update will serve as the foundation for more impressive updates in the future, so the code needs extensive cleaning, with a focus on object orientation and modularisation. This part of the update is about turning what is essentially a glorified prototype into a solid, extendable game engine.
This step will probably contribute more to the long term development of the game than anything I’ve done on it so far, so for all it’s boringness it’s worth the investment.
A few simulation-centric elements to address, mostly centered around the gameworlds physics:
– physical values. Switching the underlying stat formulae from generic, relative values like “size” and “stamina” to deeper, more realistic values like “volume”, “mass” and “surface area” will improve the simulation’s accuracy and ultimately result in more accurate and emergent evolutionary pressures. It will also allow us to make use of real-world relationships between variables (for example, the laws of thermodynamics, or newtons laws of motion) rather than trying to make our own rules via trial and error.
– metric units. Tying in with the previous point, metriking the game will make it more scientific and easier to program based on actual, physical laws. For all those who would rather we use imperial units… pfffHAAAAAAAHAHAHAHAHaHaHaHaHahahahahaaah.
– the vertical axis. At the moment, Y position has very little influence on the game: Species is basically a 2d game playing out in a 3d environment. This will change that, by introducing gravity and bouyancy as actual forces on the creatures, applying modifiers to eyesight based on head height, introducing a neck range which affects what plants a creature can and cannot eat, keeping them from hovering, preventing needle legs and necks, and so on. And I’m sure you can imagine one or two planned future elements which will rely on vertical physics to work…
– LOD. The level of detail system is a mess, combining two or three seperate systems for creature animation, detail and the far-distance sprite imposters. Replacing and optimising it should be worthwhile from a performance and visual standpoint. (this point ties in with both Cleanup and Aesthetics as well)
You didn’t think I’d stop with Procedural Texturing, did you? Improving the creature aesthetics will involve three more steps this update:
– Under/Over textures. Tri-planar texturing should allow us to apply a different texture to the creatures back and underbelly, giving them more definition and a better appearance overall.
– Manually applied textures. Some textures, such as those for claws, teeth and mouthes, should be tailored to the body part they’re applied to. This will give creatures face and limbs more definition and allow us to give the creatures even more hideous faces than ever before.
– Fur. Not High Level Shader Fur: that’s too much of a performance impact, but fur polygons, like what Skyrim has. You can see it best around the edges of this image:
I have no idea how well this will turn out, but I desperately want to try it out and (in theory at least) it’s performance impact should by limited to the GPU. We’re just trying this as an experiment, so no promises it’ll make it into the game. This is not really an essential feature so much as developers prerogative, and that’s me so I get all the prerogratives. ALL OF THEM.
(You may have noticed that I haven’t mentioned Normal Mapping or Gloss Mapping here. The reason for this is simple: we’re prioritising Aesthetics over Graphics. Mapping techniques are fascinating and valuable tools in their own right, but ultimately they’re varnish. If the creatures look terrible without them, they’ll look shinybumpyterrible with them, and shinybumpyterrible is still terrible.)
– We also want to add basic procedural animations for eating tree’s, corpses and grass. This won’t be anything complex, just moving their heads into the appropriate position, but it should provide a bit more context to the creatures behavior.
Saving the best for last: we’ll be bringing all the stage 1 placeholder assets up to at least stage 2 placeholder assets. That’s a technical way of saying we’re going to be deleting many of the current assets and adding wider variety, more gradual evolutionary stages, and better-looking textures and models for:
– Body Coverings. Since we have to remake the body textures anyway for the aesthetic upgrades, we might as well start over, giving them a detailed mutation map as well.
– Legs. We will be including a whole bunch of new animated limb shapes, which will mean even *more* hideously surreal creature forms. Yay!
– Facial Features. More variety in eye and horn styles and textures, and couple of new general categories of features.
– Heads. We won’t be completely overhauling the head models (they’re already a stage 2 placeholder), but we will be redoing the existing ones to work with the new graphical system and adding a number of new ones.
And that’s the plan for the next update. Let us know what you think below, or leave us suggestions over in the Suggestion Forums.
There’s not too much to say about the obvious mechanisms of the 0.5.0 in-game grass: it uses the billboard system which I explained a while back. I could mention the other technical details: it only draws a few, nearby, vegetation nodes, grazing affects the length of the entire node, it fades out at a distance because there’s way too much of it to draw it across the entire map… okay, done that, now what?
Well, seeing as how talking about implementation is boring, I guess we might as well talk about the design aspects.
The moment I decided on grazing as a feature for 0.5.0, I knew I’d have to represent it somehow. The grass itself, though, wasn’t originally meant to be that representation. Indeed, I’m still not entirely convinced that grass is the best representation for it: rendering grass has limitations that make it less than ideal.
Okay, I’m in the middle of typing up this post and I’m beginning to realise that the height of the billboard grass really isn’t the best way to represent grazable material. That’s what I get for blogging about a feature I’m in the middle of coding. Oh the joys of an evolving project.
Okay, new approach: I’m going to use this post as an opportunity to get my thoughts in order before I go off and play with the code a bit more.
The plan (prior to about about 30 seconds ago) was to include a grazables container or bucket within each square of terrain. This container would contain all the energy that creatures could graze from, and how ‘full’ it was would determine how long the grass in that square was. Fertility loss due to grazing would occur when the bucket was empty and had to ‘buy’ more energy to regrow.
The big pro to this approach is that grass height shows you at a glance how much grazable energy the local area has. Unfortunately, there’s also a lot of cons:
– all grazable scatter-material grows like grass and is edible, regardless of what it actually looks like. This includes pebbles on rocky terrain, shells on the beach, salt in a salt plain, and lava rocks in lava.
– grass in an area is all the same height. Since an ‘area’ is an exact square of roughly 10m x 10m, this would be especially noticable at borders where grass on one side is short and grass on the other is long.
– fertility loss is applied on an area-scale, not on a local one. A creature eating at the very corner of an area will affect the fertility of ground 14.1421m away (+/- 10m, anyway. Oh who am I kidding, I have no idea how big the vegetation squares are), while not affecting the ground just behind it.
– Grass is invisible at a distance, so you can’t see the direct effects of grazing from far away.
Now, all of these are things that can be dealt with to eliminate or reduce their effect: scattering a squares vegetation a bit beyond it’s border would blur the straight line between squares, by applying fertility loss on a macro level makes it less apparent that it’s related to overall area and not to the actions of individual creatures.
But what if we could deal with all of these problems just by changing the way ‘grazable energy’ is stored? This is the idea I’ve just had:
Eliminate the energy buckets in terrain squares, and effectively remove all terrain-based control over grazable energy. Grass no longer has any limit: creatures can just keep grazing and grazing within their biome… until the biome changes.
With this system, a creature emits a ‘death aura’ while grazing, gradually reducing the fertility in a small area directly underneath themselves. Eventually, the biome under them degrades. This introduces a direct correlation between fertility and energy: a creature absorbs fertility from the ground and gains energy in exchange.
Since grazables are no longer dependant on area but on biome, we’ll be able to introduce a variety of biome dependant statistics (starting with a simple isGrazable boolean) as a central function of the simulation, rather than as something tacked on afterwards as was originally planned.
A conventient bonus is the fact that the ‘death aura’ code already exists, in the form of biome stabilisation from trees. The only difference is that where tree’s stabilise the habitat they’re best suited for (with the exception of some unbalanced pioneering species which make the simulation more dynamic by stabilising towards biomes they can’t survive in), grazing creatures stabilise the habitat towards arid, desert biomes, and then have to move on to find more grass.
Of course, I’ll have to rework some of the code for this: the ‘buckets’ system already exists in the development version. But that’s the nature of prototyping.
[The following day]
Welp, that’s done. This actually makes the environment feel a lot more ‘directed’, since you can now pinpoint the source of every fertility change: it’s either grazing creatures, trees or water. I might have to add a few more fertility-change sources, just to make it less predictable.
Ultimately, this change leaves the grass itself as little more than an aesthetic item. Oh well: the system’s in place now, it’s useful in defining the presence and quantity of grazable material in each biome, and when even the placeholder art looks good, you know you’re doing something right..
He doesn’t mean it about the vegans. We actually think vegans are pretty awesome: it must take a lot of willpower and strength of conviction.
Please don’t kill us with your psychic vegan powers.
I’ve written this post over and over again, and dumped what I’ve written just as many times. There are so many different aspects to “depth” that I strongly doubt my ability to elocute them all. Nevertheless…
“Depth” means different things depending on what you’re talking about. Depth of setting, for instance, is a very different thing to depth of characterisation… and both are aspects of depth of narrative. The whole concept is like a fractal algorithm of amateurish literary criticism.
This post is about depth of gameplay, which narrows things down, but not by much: is the gameplay in Species about how the player interacts with the simulation, or about how the simulation interacts with itself?
If it’s the player, we have a problem: 0.4.1 doesn’t really have much in the way of that sort of gameplay, so depth there is pretty meaningless. Sure you can dramatically affect the lives of individual creatures, but unless you spend a lot of time playing about with the feed and kill buttons, your influence on the simulation as a whole will be negligible.
Which leads us to how the simulation affects itself, and to yet another facet of gameplay depth: is it about the individual creatures, or the simulation as a whole?
On a “simulation as a whole” level, Species has a surprising and impressive amount of depth. Population explosions, extinctions, punctuated equilibrium, convergence, speciation, biogeography… by recreating the basic mechanisms of evolution, we managed to unlock a smorgasbord of unpredictable, but understandable, results from a variety of complex, interacting simulations. This most certainly qualifies as depth.
And on an “individual creature” level the game still feels shallow to me. It took me a while, but I think I’ve finally worked out why, and it has to do with what the term “Depth” actually refers to.
When it comes to depth of any variety, what matters is layers.
Consider characterisation: a shallow character is exactly what they appear to be: when you peel back the first layer there’s nothing underneath it. If, even during their most vulnerable moment, the badass action hero is still spouting one-liners and generally acting tough, then they’re a shallow, single-layer character.
Deeper characters might have two layers: maybe the badass character is secretly afraid, but disguises it until the moment you see through the mask. That’s a two-layer character. The mark of a truly great character-writer is the ability to write many of these layers, onioned on top of each other… is a character a selfish bastard, a selfless hero, intensely loyal or understand the need to make sacrifices, hilarious or serious?
All depth follows this basic rule, it’s just that the layers change their nature: in gameplay, the layers are interacting systems.
Here’s an example: guns. The shallowest possible first person shooter would only have a single type of gun, where the only difference is in damage. The next layer up has one or two competing stats: do you sacrifice damage for fire rate (SMG) or the inverse (Sniper Rifle). From there, every interacting system that you add on increases the depth: do critical hits like headshots do extra damage? Are different types of guns effective against different types of enemies? And every time you add a new system, the “best” result becomes less predictable, more open to player choice and creativity. At the upper end of the scale you have games like Borderlands, where gun-depth is taken to it’s logical extreme: between wildly varying enemies, elemental effects, level and rarity, and the insanely unbalanced stats of each of the different manufacturers, there simply are no “best” weapons in the game.
The depth in Species as an evolution simulator is similar: once you peel back the “evolution” layer, you find mutation, variation and natural selection. And once you peel back “natural selection”, you find the feeding rules, the walking rules, the speed and stamina stats, combat, eyesight, behavioral modifiers… depth.
But that’s at the high-end statistical level. From a closer level, when you’re just watching creatures walk about and interact, you’re seeing all of those systems directly. You don’t see how a higher walk rate affects a creatures survival and reproduction, you just see them walking faster.
Remember our earlier example of an FPS whose only variable stat was damage? That’s what the combat system in Species currently consists of: a damage value and a hit-points value. It’s as shallow as it possibly can be, because the depth is layered on top of it rather than underneath it. It’s a subsystem of the evolution simulator, not a system in-and-of itself.
And if the only aspect of the game anyone was interested in was the statistical evolution, that would probably be fine. The combat allows creatures to kill each other, which affects their natural selection: it’s done it’s duty. But people are going to watch the combat, because it’s a far more interesting, far more personal narrative. And they’re going to get bored with it, because independently of the evolution simulation, it’s shallow.
This applies to most of the specific-creature systems: they’re all no more than one or two layers deep, if you ignore the evolutionary layers on top of them. Genetics are represented by a simple floating point number list. Creature behavior and statistics all come down to equations. Health and energy are represented as scalar values.
For me, this one is a large priority for improvement: adding depth at the individual-creature level not only makes the creatures lives more interesting, it cascades up the system and affects their evolution in usually-unexpected ways. Every layer added improves the games realism, making the top-most simulation deeper and more interesting.
It’s not the only area for improvement, of course: as already mentioned, the player interaction is currently limited to individual creatures. This results in a nasty discrepency between the gameplay on an individual level, and the simulation-depth on a statistical level. Making the creatures lives more interesting is one way to deal with this: the other is giving the player ways to interact on a global level.
Both of those, then, will be major priorities once 0.5.0 is out of the way. I’d say I’m more than halfway done with that: everything’s in place, it just neads a lot of tweaking (for example, tree’s should probably have a stablising effect on the biome under them, rather than simply sucking it dry as they grow).
And possibly some art assets to replace the placeholder grass:
PS: Dammit, there’s so much else I want to say on the subject of depth, like how physical laws provide a depth barrier the best simulations manage to reach and model, (eg. Mass = density * volume) and how even an apparently ultra-shallow game like Serious Sam manages to combine enough systems and tactics to be deeper than it appears, and how the deeper a simulation is the more you have to learn about it in order to do what you want to within it (tangential learning)…
Who’d have thought the subject of “Depth” would be so deep?
And he didn’t use Spore as an example even once. Huh. That was… unexpected.
Note: I realise my blog update schedule hasn’t exactly been regular recently. Truth is, I’ve been at a bit of a loss for things to write about. I could use some ideas. (The fact that I’ve been posting loads of potential blog material over on the forums instead of here probably doesn’t help).
I’ll try to get back to a every-Tuesday posting schedule in coming weeks, assuming I can think of something worthwhile to write about. In the meantime, here’s some disjointed thoughts.
* * * * * * * * * *
Species is a Genetic Algorithm, but it is not Genetic Programming.
Genetic Algorithms use mutation and selection to find the optimal solution to a problem. The problem to which Species looks for a solution is simply “survival”, in the context of the games environment, which adds some complexity and depth to the “problem” side of things, but the “solution” isn’t actually hugely complicated.
Creature Genetics in Species are simply a bunch of one dimensional numbers. There are exceptions, but most of the genetic values in Species can be represented as a simple slider. So the evolution in the game is simply pushing these sliders up and down on their axes. The interactions and dynamics between the ecosytem and the statistics add quite a bit of depth but ultimately it’s not a particularly deep solution.
The concepts of genetic programming are quite a bit deeper. Genetic Programs use a noded ‘tree’ structure: rather than pushing numbers up and down, mutations in a genetic program add and move branches of the tree around. These branches might refer to packets of code, if()then conditionals, or loops. Or, if we take the analogy a bit more literally, they might refer to branches.
This is actually closer to the way real-life evolution works, and I would quite like to implement some of these concepts into Species. GP concepts are much, much better at producing unexpectedly novel structures and behaviors.
Unfortionately, GP structures don’t evolve very fast, and Species is about *seeing* evolution in action. That video above encompasses 7 hours of evolution. This was exactly the problem I had with the original behavioral system, which used some similar idea’s: it was too complex and didn’t evolve fast enough to be relevant to the simulation. When I replaced it with the simpler aggression and social sliders, it became much more responsive to selection pressures.
But like I said, though I don’t have GP, I want it. I want it a lot.
* * * * * * * * * *
I am jealous right now, as I often am when looking at other evolution sims.
I cannot *begin* to describe how much I would *love* to build something like this into Species.
Unfortionately the only way to achieve that is to work out a way to fake it: physics like this is deadly to the framerate when you’re simulating more than one creature. Simulating 1500 is well and truly too much.
So… faking limb physics. My initial thoughts are that there are two ways to do this: top-down, or bottom-up.
The former involves Inverse Kinematics. The genes give us an indeterminate limb-shape, and at birth an IK algorithm takes that limb shape and makes it walk as best it can, similar to the way creatures in Spore could walk no matter the shape of the legs. We then reverse-engineer stamina and speed stats from the step motion.
The disadvantage to this is that even though the legs might look different, they will all be animated the same way. There won’t be any novelty to the motion. On the bright side, that motion will probably be (relatively) crisp and clean: the feet will reach the ground and will provide a good appearance of ‘pushing’ walking creatures along.
The second method is bottom-up: we give every joint in a creatures leg a ‘motor’ to run it, a few paramters to determine step size and speed, and we try to somehow analyse the result to give us a constant speed, or even better, a variable one. This is a painfully difficult method: it will cost a lot in terms of performance, and the physics probably won’t look great, but if it works it could have a lot of potential. The trick is in working out exactly how to *make* it work.
One possiblity is that ‘step size’ could be limited to fractions of a particular value. So step sizes could be 1.0, 0.5, 0.25, 0.2, 0.1… but not 0.8 or 0.3 or 0.15.
This would make the limb-movement cyclical, and we could simulate a single cycle of motion at birth to determine how fast the creature can move. This is an expensive operation, however, and might result in noticable lag-spikes during births if poorly implemented. It also has a limitation: if the creature moves forward in jerks and bounds, a constant movement speed would not register that and the creature would look like it was gliding (although there might be ways around that, maybe, I hope).
Don’t get your hopes up just yet, though. This is all very much long-term stuff, which I probably shouldn’t even be discussing publically, but hey: I had to post something. And this is the sort of stuff I consider for Species. 🙂
One thing about Species that I keep stressing, but which is easy to forget even for me, is that the simulation is random. It’s easy to say that a species “decides” to splinter from the main population and speciate, or to say that they’re “trying” to develop eyes and legs. But all of that is pure personification on our part: it’s like saying the ocean “decides” to have tides, or the clouds are “trying” to rain.
The ‘species’ category is a perfect example of this. I was showing a friend the game and caught myself saying that “once it comes back down from the population explosion, the simulation will make them speciate”. But that’s not how it works at all: the simulation doesn’t make them do anything. They don’t have to speciate any more than a million proverbial monkeys bashing on typewriters have to produce the Twilight series. The simulation simply detects speciation/vampire-romance after it occurs.
I could have adopted the top down approach, and made speciation something that the game makes happen after a certain amount of time or in response to certain events. That would probably have been much lighter on performance, and easier to code to boot.
But it would also have been cheating. Real life approaches things from the bottom up.*
So the speciation routine has no influence on the simulation. It’s completely passive, an exercise in analysis and display: computer-generated taxonomy. The creatures don’t know or care what species the game thinks they belong to, and the simulation would play out exactly the same with or without speciation detection. Whether or not creatures can mate is determined on an individual basis, not based on species.
This has allowed for some fascinating and unexpected effects. Quite often, a ‘speciation’ of a single creature will happen, appearing as a pixel-wide line on the population history. This is the result of a creature being born sterile (ie. mutated heavily enough that it is unable to mate with anyone else in the population). Since the creatures can reproduce without mating this creature can still have descendants, and may well become a stable species in it’s own right.
(Worth noting: a creature cannot be born into a new species, because a speciation test isn’t done for births: a newborn is simply given it’s parents species. If it is born sterile, it will speciate when the parent dies and breaks it’s link to the main population)
This system also makes for an interesting design challenge. See, two things that would make the simulation more interesting are an increased mating frequency (increasing the gene sharing and making things like sexual selection more apparent) and more speciation (making lots of small species rather than one large one). But in the current system, these two features are diametrically opposed: expanding the genetic compatibility range and allowing the creatures a wider variety of mates means populations have to distinguish themselves more before the game will detect a speciation.
One solution to this, suggested here by Icefire, is a ‘soft’ definition of species, not reliant on breeding compatibility. My problem with this is that it makes the ‘species’ category less well defined: rather than being “a collection of creatures capable of interbreeding” it becomes “a collection of creatures with an arbitrary amount of genetic similarity”.
But after some thought I decided I’m okay with exposing it for a future version. I think the default should always be the “Hard” definition of species (the game is called Species, after all) but using the softer options will allow you to make interspecies breeding possible.
*footnote: this top-down bottom-up discrepancy is an interesting spanner in the works of the Intelligent Design crowd. Design is an inherently top-down process: a designer starts with a goal and works out the simplest, most efficient method to achieve it. So designed objects tend to be mathematical and precise: straight lines and square corners. Natural objects, on the other hand, take a bottom-up approach: this molecule on that molecule, this rock on that rock, this gene on that gene, all clumping together to make up an object.
A designed room can be represented abstractly as a set of numbers: width, height and breadth for a simple rectangular prism. 3 numbers. A natural cave, on the other hand, can never be represented in full detail, because you’ll never have enough numbers. The unecessary complexity is evidence that it’s natural, not that it’s designed.
Which only makes it more jarring when denialists argue that the incomprehensible complexity of life is evidence of design. It seems like quite the opposite, from my perspective at least.
“Twilight Jokes. Statistically inaccurate Twilight Jokes. Wow, I didn’t think we could sink any lower.
The chances of pure randomness producing a particular work of fiction the length of one of Stephanie Meyer’s novels are quite significant**, and more importantly, are completely incomparible to a force like evolution, which is cumulatively influenced by forces like survival, gene-sharing and reproduction.
115362 words in Twilight * (5.10 (average number of characters per word) + 1.5 (rough guess for spaces and punctuation)) = ~761,000 characters.
1 in 49 = Odds of random key on typewriter being correct.
Odds of producing novel of this length in a single trial: 1 in 49^761000
Size of the universe = 3.1e84 (cm^3) / 4.22e-99 (planck cube volume) = 7.3e+182
Age of the universe in Plank time: 3.3 x 10^60
If trials could be condensed to the size of a cube 1 planck length on the side, and run once every plank time frame, a computer the size of the current observable universe would have performed 2.4 x 10^243 trials.
2.4*10^243 < 49^761000.
Ergo, if you want monkeys typing vampire romance novels, you're better off going into neuroscience or biology than mathematics. They've got better odds in the long run."