Archive for category XNA

Species 0.6.1 Released

Welp, here we are. Species 0.6.1 can now be downloaded from the download page.

Get the latest release of Species here!

This release was all about cleaning up the back-end code for future features and making visual improvements.

Be warned, this release is likely to be amusingly buggy for a week or three. Whether or not that’s a good thing depends on how much you enjoy watching me scramble about like a lemur on fire trying to keep up with the necessary hotfixes. And let’s face it, of course you do, that’s hilarious. You bastards.


Stability Improvements

- several fatal crashes have been fixed (‘System.OutOfMemoryException’, ‘CladeDiagram.CollideBranches’, ‘UIManager.Paused_Export_Update’),
- the method for addressing problems when the game is minimised or graphics card is lost has been improved,
- built-in troubleshooting for some start-up problems (running from the zip file, running from Program Files, running on computer with unsupported graphics card) has been added

Aesthetic Adjustments

- Procedural texturing: creatures now have different top, side and underbelly textures, giving them a more distinct appearance and more recognisable body covers.
- Custom textures: beaks, claws, teeth and mouths now have their own (appropriately horrifying) textures, blended into the triplanar texturing.
- Fur: Fuzzy wuzzy was a bear, fuzzy wuzzy had no hair, but the creature’s in Species do now. And they find bear meat tasty.
- Water reflections: They only reflect the skybox, but they significantly improve the appearance of the game nonetheless.
- A new Species ALRE logo. Now with infinity% more cladeogram and cycad leaf.
- Adjusted Tree Shaders make better use of dark greys and oranges, meaning trees have more colour variety and look more natural.
- An improved wasteland texture.
- Fixed that weird blue shading on trees when you pause the game (it still happens on grass).

Content Additions

- Body coverings: fur, feathers, scales and skins. Also squid skin, toad warts, echidna spines and human forearms (ewwww…).
- Leg shapes: from 6 in 0.6.0 to 20, meaning a much greater variety of knee shapes.
- Heads: a number of additions (and of course, the existing heads had to be adjusted to provide beak and mouth textures and fur polygons).
- A selection of the Body Part Voting Competition head types.


- Added an "Indirect" rover drive mode to the game options. Seriously, try it out. It's hilariously broken.

, , , , ,


Species 0.6.0 Released!

Species 0.6.0 is out!

This update introduces a decent number of gameplay and environment options, and marks the end of the “gameplay” development for a while. The next few updates will be more heavily focused on the foundation of the game: the creature simulation…

New Features

– Exaggerated physics (it’s more fun if they’re virtually uncontrollable!)
– Multiple rovers can be spawned by the player.
– Programmable to apply artificial selection pressures, by feeding or killing.
– Drivable. (there’s no particular reason to include this, it’s just for fun)

Clade Diagram
– Found in the Ecosystem details page
– Shows the speciation history of the world, even after loading a game.
– Includes a fossil record. (periodic snapshots of each species average)
– Individual clades are hoverable, so you can see the phenotype of each lineage.
– Zoomable and pannable.

Satellite Map
– Also found in the Ecosystem details page.
– Displays the entire map in real time, including biomes, food sources, camera FOV and rovers.
– Creature icons are hoverable, so you can see what’s evolving where without going to that location.
– Can be colour coded to make it even easier to find creatures with outlying statistics.

Web Of Life
– Yet again, found in the Ecosystem details page.
– Attempts to display the genetic relationships of the entire population in real time, as a way to visualise the mechanism of speciation.
– Kinda buggy and laggy: this infographic proved difficult to achieve, since the Speciation algorithm does not provide genetic relationships for every creature.

World Types
– Multiple “World type” styles.
– An alternative biome map for the saltwater “Ocean” world type.
– The ability to use alternative temperature/fertility maps, and change the fertility variation and average.
– Dry maps.
– Inverted “valley” heightmaps.

– Creatures now make use of procedural texturing. (goodbye stretching and scaling texture artefacts)
– Creatures now use a Hue/Sat/Lum colour palette, giving them a more toned-down, natural appearance when compared to the ‘circus-y’ colours of the R/G/B palette.

Bug Fixes

– Fixed the weirdness with Temperature/Fertility/Water-Level changes being given strange irregular increment sizes.
– Newborn creatures are no longer possessed by the souls of their previous lives and forced to attempt to complete the dead creatures final action. (even though it was awesome)
– Creatures in a loaded world are no longer unable to turn left or right.
– Loaded worlds now no longer include a ‘phantom ecosystem’ of invisible, inedible tree’s that for could nevertheless affect fertility and crowd out the regular, visible sort. (yes, that was a thing. And you never even noticed…)
– The game no longer crashes if you try to export a creature while in ecosystem mode. (This should also prevent it from creating corrupted creature files, which cause a crash when you go to the import screen)
– Reduced the once-a-second lag spikes caused by the Speciation routine by about 60-70%. (The game should now be a little more playable at high population levels)
– Temperature/Fertility across the map no longer slowly changes after you start the game.
– And a whole bunch of others…


Multi-texturing and Biomes

One of the priorities for 0.5.0 (the environmental update) has been to overhaul the multi-texturing system.

In 0.4.1 the best the engine could do was 4 textures (desert, grass, forests and cliffs), and those textures were placed at world-start, never changing. The end result was a very static map, very boring environment: basic tree loss/growth was the entire extent of environmental dynamics.

All this changes in 0.5.0. The design plan calls for a dynamic, responsive environment, and by crikey that’s what we’re going to have. (Crikey is Australian for… something. I dunno. Honestly I don’t even know what the word means, but it’s a stipulation of citizenship that we all say it at least once a week)

The first thing to add is more biomes. Desert/grass/forest works well as a basic, semi-tropical biome set, but what about colder biomes? Or warmer ones? Or wetter ones or drier ones? My current biome map concept has more than 20 different biomes drawn on a temperature/fertility map, including some hilariously extreme ones

If you can’t survive in a lava lake you’re simply not trying hard enough.

But that many biomes means a whole different approach to multi-texturing… or at least, I thought it did. This was when development started to go bad…

In 0.4.1 I used a multitexturing method called ‘texture splatting’. Imagine you’re painting the ground texture on a blank canvas. What texture splatting does is gives you a ‘stencil’ for each texture: so you can paint forest through the red stencil, grass through the green stencil and desert through the blue one, and by the time you’ve used all the stencils you’ve painted the entire terrain. All these stencils are nicely wrapped up into a single texture, called the blend texture.

Unfortunately, this only works for a limited number of textures per draw call: you can’t load more than a set limit of textures onto the GPU without it having a fit. So in order to render an unlimited number of textures, I’d need to change how I was approaching it.

My first attempt at a replacement system was sort of like an extremely complicated colouring book, where each grid square is numbered 1,2,3,4,etc and our hypothetical artist fills in the grid with grass/desert/forest from a colour key. Since we can include as many numbers as we like in the key, we can have as many biomes as we want.

Quick! Chop down a tree with your fists!

Once that’s done, our artist is faced with a problem: (s)he has to blur these colours together smoothly without pixilation or sharp edges. And since it’s going to be animated, a simple linear interpolation just isn’t going to cut it.

As it turns out, this is HARD. My own approach was to sample the biome-legend multiple times to give each pixel *four* biomes, each with a weighting value, which I then folded into the same channel as the key
(effectively, I designated the first digit of the channel as the key, and the remaining digits as the weight).

Honestly, the most surprising thing about this ridiculously complicated strategy is that it worked… mostly.

The grid is meant to be there.

But “works in general”, doesn’t mean “works well enough to use”. On closer inspection, the system produced artifacts all over the terrain. (not a typo: graphical glitches are “artefacts”, ancient relics are “artifacts”. I read that somewhere and internalised it, so it must be true) I actually got it working perfectly wherever 2 biomes met, but that was the limit: at any intersection with more than 2 it produced hard edges and odd colours, and the moment it was animated these artefacts started jumping about and generally making themselves easy to spot.

How many artefacts can you count?

So I ended up scrapping the idea entirely, and starting over with a new strategy, one requiring less math and more art.

This new strategy was much simpler: we go back to using the ‘stencil painting’ system, but this time once we’re done painting with the first 4 stencils (biomes), we put a new, transparent canvas over the existing canvas and keep on painting on that with a new set of stencils. Rinse and repeat.

This method turned out to have it’s own set of pitfalls, chief among them, alpha-blending and redrawing the entire terrain multiple times, with different textures each time. For an item which takes up as much of the screen as the terrain, this is a large graphics cost, and in a GPU-bound game probably would have spelled the end of this strategy. But Species is CPU-bound: it has GPU cycles to spare. So full-steam ahead.

“Everlasting pure darkness” will not be a biome in the full game. (Unless someone mods it in).

The artefacts of this method also turned out to be quite different to the ones I faced with the other method. The other method loved to produce singular, localised artefacts: hard edges and biome colours where they shouldn’t be. This method’s artefacts usually affected the entire terrain. I’d say two in particular are worthy of noting here, mainly because I haven’t actually managed to fix them: double rendered polygons and biome-set edges.

Biome-set edges were where one transparent layer tried to fade out into another. I never had any trouble with the inter-set blending, but proper alpha blending is a temperamental thing. In this case, because the biome colour fades out at the same time as the opacity does, the end result was a faded-but-noticeable black ‘border’ between different blend-sets.

Oh so that’s what wars are fought over.

I managed to ‘fill-in’ the majority of these borders by extending the colour to the very edge, but there is still a faint one around the first draw pass. Thankfully it’s subtle, and dealing with it had some odd side effects, so I’m going to leave that one alone. It’s not hugely noticeable.

Double-rendered polygons, on the other hand, are a problem.

It’s zombie-triangle apocalypse! Only trigonometry geeks will survive.

This isn’t actually a problem with the rendering method: it’s a problem with the QuadTerrain itself, which I didn’t know about until the rendering method made it visible. See, when the terrain is completely opaque, rendering a polygon twice has no effect. The colour from both renderings is the same, so it’s an invisible artefact. But when you render a *transparent* object, like, say… one of the 4-biome passes of the terrain… *then* it becomes quite visible, as you can see above.

But fixing it means re-familiarising myself with the QuadTerrain class, which I haven’t touched in quite some time. I’ve already made a little progress, eliminating about half of the artefacts above with one fix. Hopefully the next fix will get the rest, but I doubt it: bugs like this are often inversely exponential. You might be able to fix the majority of them easily, but there are always one or two subtle, extremely well hidden ones that you have next-to-no chance of ever finding.

Oh well, best I can do is to make sure I get most of them.

Currently, I have 23 biomes defined as rough shapes on a temperature/fertility axis. This includes ‘extreme’ biomes, like lava and salt-plains, and a number of underwater biomes that will only be found… err, underwater. (Fertility will at least partly be determined by height: everything below the water plain will be water).

So far everything is coming together as planned. Biomes are done, 3d trees are done (I’ll do a proper post on them later), I’m midway through tying the two together, and soon the nanozombies will be unleashed on the unsuspecting… oh wait wrong blog. You didn’t hear that.


“Other stipulations of Australian citizenship include:

– Must defend vegemite no matter personal opinion of taste. (sticky salty gunk)
– Must be willing to throw foreign tourists in front of a croc to save yourself. (Or was that the other way around?)
– Must know how to defend against drop-bears (trick question: there is no way to defend against drop bears)”

, , , , , , , , ,


Potential Gameplay

For anyone not following the Development Thread:

The planned 1.4.1 release is growing: what started out as a simple polish/hotfix release has become a pretty serious extension to the game. I’m not messing with anything particularly fundamental, so it still plays much the same, but the changes make an impressive difference to the general feel of the game. Everything is a lot more ‘alive’ now.

In addition, being able to import and export creatures will give the player some much-needed interaction capabilities, and the new “UltraTime” capability (currently mapped to the “U” key) will allow the player to turn off the graphics rendering and run the simulation at the maximum speed their computer can handle.

Oh, and the creatures are somewhat less idiotic.

I’ve been trying to work out what this next post should be about. I’m already recording my progress in the aforementioned Development Thread, so that’s out (curse me for stealing blog material and posting it on the forums!). I’ve got a bunch of fragmented thoughts about depth and complexity, thanks to Dwarf Fortress, but I’m still trying to work out how to package them: “depth” in particular is a hard concept to define, and I think I’m still using the word to refer to at least five different concepts at the same time. I’m also out of idea’s for denialist rebuttals and evidential arguments: I always try to take those posts in a unique direction, giving the denalists credit for a decent sub point or using it as a springboard to explore a valid criticism, but right now I think I’d just end up ranting about how they have a lower density of brain cells than the inside of the LHC tube.

So I’m going to talk about the back-story of Species. Because clearly a game like Species needs a back-story.

Okay, that was mildly facetious. What Species really needs, and where the back-story naturally comes from, is a player avatar.

I’ve given this quite a significant amount of thought, but note that this is all speculative at the moment. The current system, where the player is just an camera with a few unexplained abilities, is not much fun. I rather suspect it won’t matter how many tools I give the player: it’ll help, of course, but it won’t solve the problem. The player needs something to call ‘me’.

But what should this entity be? There are a number of choices…

Native Creature. The player could be a creature in the game. There are a variety of reasons I don’t like this idea (‘controlling’, rather than ‘aiding’ the creatures, the fact that the player creature would be capable of things the others aren’t, etc), but I do like the idea of ‘seeing things through their eyes’, so that might have to be something you should be able to do in-game.
Human. Similar to Minecraft: the player could simply be an unexplained, unnamed human wandering around, doing whatever they want. This is the simplest choice, but it doesn’t offer much in the way of explanation: why is there an immortal human capable of time acceleration capability walking about in the middle of nowhere?
God. Something like Black and White: the player could be a deity, capable of interacting with the environment via unexplained means. I don’t mind the idea, but the unfortunate implications put this one well outside the realm of possibility.
Alien. Similar problems to ‘human’, although it adds a bit more interest to the player avatar.
Alien base/ship. Now we’re getting somewhere. Making the player avatar a ‘base’ gives it a few capabilities, including the ability to deploy/control multiple entities (aliens or robots) which return to the ship after some time. But making it alien implies Panspermia. Panspermia is an interesting concept, but it’s not quite the feel I want for the game.
Human base/ship. Getting close. A NASA-style lander, with a series of rovers, captures the feel of scientific discovery and most of the game play elements that I want. We’re close, but I still don’t think it’s just right. I also need a way to define a nursery area.

… which leads us to the option I’ve decided on:

Derelict Artificial Intelligence Building Complex.

“Created by a (probably-long-extinct) native species (maybe human, maybe not, I don’t intend to clarify any time soon), the genetic AI was originally designed to study, protect and preserve the ecosystem, and had a suite of facilities and vehicles to use to that end. Eons later, the derelict structure is accidentally activated again. It sets about the task of repairing itself and studying it’s new environment.”

This idea is my favourite: it solves the ‘nursery area’ problem quite elegantly (the area inside the complex’s walls becomes the nursery), provides me with a variety of potential vehicles, tools and structures (the design I have in mind is an unholy mix of Jurassic Park and NASA), and also provides a motivation which makes sense: the AI itself is as undirected as the player, so even nonsensical attempts to artificially select the biggest head and smallest body are logically consistent with the character.

Back on the ‘vehicles, tools and structures’ front, I’d like to make them semi-autonomous and customisable. So outfit a rover with a health/energy scanner and a food bag and you can send it out to automatically (ie. without input) feed the starving. Likewise, give a rover an a ‘creature-head-size’ scanner and a pair of chainsaws, and you can send it out to “enhance the selection pressure” in favour of large heads. (both of these behaviours would probably require some sort of AI upgrade)

This system allows the player to exercise significant power and artificial selection pressure over the ecosystem without ever actually controlling it directly: the smaller-headed creatures don’t magically die because they had smaller heads, they die because a homicidal chainsaw-wielding rover attacked them. I also want to keep the vehicle cap small: this isn’t supposed to be an RTS, so there will probably never be more than 4 or 5 in your fleet. You’ll need to upgrade those rather than making more if you want them to be more efficient. If you want to make an army, that’s what genetically engineered superpredators are for.

As for structures, at bare minimum we’ll need a garage (vehicles), incubator (genetic manipulation and cloning), nursery (members of your personal species) and storage (food, possibly other resources).

That’s where all this is heading and I’m extremely excited about it: so excited that I need to keep pulling the reins tighter to keep myself from running off and programming them now. The simulation is the most important thing right now: these sort of game play aspects will only be fun while the simulation stay’s interesting.

Doesn’t make me any less excited, though!

“Not that that means much. He’s also been known to get dangerously excited about robot cartoons, fake text games, stick figures and pennies.”


Plans for the Next Version

Alright I’m back.

It’s been a fairly small launch, but that was expected: it’s not like I advertised the game much beforehand. I’m kind of relieved: I can go back to working on it without worrying too much. I think I’m more comfortable with the idea of slow progressive growth than with rapid expansion.

And going back to working on it is exactly what I’m doing. I think I have a better grasp now of the games failings, and I’m looking into rectifying them, starting with the most obvious: the static vegetation.

The 0.5.0 release will contain an extensive vegetation overhaul: very little of the current system will survive into it’s next incarnation. This will provide three things that (in my opinion) the game needs: an gentler survival curve, an evolving environment, and a prettier world.

The gentler survival curve will be achieved by a new behavior: grazing. Rather than having to find a tree in order to get enough energy to reproduce, a creature will be able to gain energy by grazing from the ground. This comes at a cost, of course: it’s slow and won’t provide much energy, and will also reduce the local fertility. But it will mean that even creatures that don’t find a food source will still have a chance, and the deaths of most creatures will become a bit more interesting than the current average of “too stupid to look for food”.

Speaking of which, I’m well aware that the AI needs a lot of work. Unlike the other planned overhauls, I’m planning on slowly improving the AI bit-by-bit, since it touches upon all the other features I’m looking at and working on. The creatures will get smarter and more responsive, but to what extent I don’t yet know…

The evolving environment will be a load of fun to program. I should probably clarify: by “evolving enviroment” I don’t mean “evolving plants”. Sadly, with CPU usage what it is, I can’t spare the extra CPU cycles to include completely mutable plants. It’s on the wishlist, and anything I can make mutable I will, but there a hundred-fold more plants than there are creatures, so plant evolution will have to be limited to simple things like size and colour.

But even though the individual plants will be mostly static, the forests most definately won’t be. As temperature and humidity across the map changes (being influenced by creatures, rainfall, climate change, and even the player), the various biomes will drift about, and the plants native to each biome will colonise the newly exposed area’s, allowing (and/or forcing) the creatures to migrate and adapt.

With luck, this won’t be the only large upgrade to make it into the next version either. I’d like to get a top-down map in place so you can watch the simulation in a more symbolic/iconic format, and make a number of changes to the gene system so we can start Playing God ala. Jurrasic Park. I’d also like an ‘export’/’import’ creature function as soon as possible, so you can save your favorite creatures and bring them in as introduced species to devastate the local ecosystem.

Also, I’ve been playing Dwarf Fortress. It’s not exactly a bastion of good game design (in many cases it’s a perfect example of what not to do), but it has a terrifying amount of depth and complexity, and has given me a load of new idea’s for how I can improve Species (those familiar with Dwarf Fortress are either cheering or weeping right now).

I realise Species in it’s current alpha state is a very shallow game: interesting, but not for long, and with no actual gameplay behind it. All of that is coming: an idea I’ve had to start with is to allow you to highlight creatures by specific statistics, which could be used to tell you which creatures to kill and which to aid in order to promote certain forms of artifical development.

I won’t set a date for the next update just yet, but I won’t go more than 3 months between updates. I’ll also try to implement anything suggested in the forums or the wiki.

“For anyone trying to apply artificial selection in the current version, the best way is to bottle-neck the population around a mutant creature (ie. kill everything except that creature), then feed the population up again until you find another creature you like the looks of…”



Well, here we are.

One year ago today I started this blog with a simple post with the most inspiring and unique title ever, unofficially unleashing the concept of Species on an unsuspecting world.

Now I officially release the Proof of Concept Demo: Alpha 0.4.0. You poor sods.

I’ll try to keep the maniacal laughter to a minimum, but no promises.

How to install

First, download and install the XNA redistributable from the Microsoft website.

Then, download Species: Artificial Life, Real Evolution (0.4.0). I’ve uploaded it to MediaFire as a stopgap solution until I’ve got an official website set up. That should only be a week or so, so check back! With any luck I’ll have forums and a wiki on it too.

To play the game, just extract the zip file and run “Species.exe”. I recommend you go into the options and set your resolution. 🙂

Note: some graphics cards will give you a Texture Width error when you try to run Species. If that happens, try copying this file into the “Mods” folder. It should fix that particular error.

Note 2: some other graphics cards don’t play well with the Terrain Shader. If your terrain appears blue or invisible, try copying this file into the “Mods” folder. Obviously I’ll try to build these modifications into later versions so you don’t have to install them manually.

If anyone has any problems running the game, send me an e-mail at qu.quasar{at}gmail{dot}com! I’ll do my best to get back to you as soon as I can, and I should be on consistantly for the next few days (except for sleep).

Massive thanks goes to Jade, our Friendly Neighbourhood Graphic Artist, without whom the game wouldn’t look anywhere near as polished as it does. Check out that deviantart account to see some of Jades other stuff!

The game comes bundled with the Mod Maker. I’ll post a tutorial for that later, or you can try to work it out through trial and error. You know, the same method I used to make the game. Okay, mostly error.

It’s just a proof of concept at this stage: I’ll discuss what needs implementing and improving in next weeks post. The game still has a long path ahead of it: this is only the first step!


(EDIT) Controls!

To move the Camera: Use W, A, S and D.
To toggle camera Gravity: Press Space.
To Move Faster: Hold Shift.
To change the Time Accelleration rate: Press ~, 1, 2, 3 (or use the mouse buttons)
To view individual Creature Statistics, including DNA: click the Select Creature button twice.
To view individual Species Statistics: click the Species button twice (you can even see the Species Average morph over time!).
To see the Tree Of Life: click the World button twice.
To Move creatures: click the move button, then click the creature you want to move to pick them up. Click again to place them.
To Feed creatures: click the feed button, then click the creature you want to feed.
To Kill creatures: click the murder button, then click the creature you want to murrrrder.

Bonus Controls! (mildly buggy)

Orbit camera: Press C (good for keeping track of individuals)

“Have fun.”

, , , , , ,


T-minus 4 days…


, , ,

1 Comment