Archive for category Video’s
Yay! Another video! And another set of comments about said video that I was too lazy to put into the original video itself! Yay!
There’s three major ones visible in the video: levitating creatures, which is caused by a minor bug with how the creature finds ground level, the Species Average Thumbnail not working, which I threw a textual tantrum over, and a bug with how Stamina is calculated (did you spot it?). I managed to fix all three of these in between recording and uploading this video.
Of everything in the UI, the real-time energy graph is the most obviously placeholderish. With a bit more work it will look a lot more professional, with current-moment positive and negative effects and their magnitudes (things like metabolism, walking, eating) shown, and icons applied to sudden drops and jumps (like the ones caused by reproducing in the video).
The genetic code you see in the video is genuine: it really is a representation of the creatures genetics, and I have already built the function that allows the player to clone creatures from it.
But with that said, it’s sadly not completely analagous to a real organisms genetic code. It has some beguiling similarities, like codons and genes, but it’s a ‘code’ in every sense of the word: it represents the creatures actual genes, which are a list of numbers. This means it’s possible (albeit difficult: it’s quite robust, and only going to get more so) to ‘break’ the code and make it impossible to compile. Biological DNA is not at all like that: it always codes for something, no matter how much you change it, because it’s “compiler” is a physical process.
This difference was implemented for several reasons, but the biggest is probably performance: I doubt I’d be able to run a quarter of the number of creatures I currently can if I was actually using the genestring itself for calculations. It also makes balancing mutation rates easier: eye sizes should mutate a lot faster than overall sizes, for example.
I won’t explain the system here and spoil it for any cryoptographers who are interested in trying to decode it, but it’s not a particularly complex code.
This is one of the player-oriented gameplay elements planned for later versions of the game. A lot of thought has been given to how the player will interact with the simulation without completely taking over the ecosystem and directing everything on Gaia, and artificial-selection and genetic manipulation are the two primary elements of this. There will not be a Spore-style creature editor. Don’t get me wrong, I thought the creature editor in Spore was brilliant (it might have been the only thing that was), but I’m pretty certain it would take all the fun out of Species if you could just customise ‘your’ Species exactly the way you wanted it right from the start.
Hell yes indeed! I now have a personal deadline to meet, a list of things to achieve, and I have officially made the announcement like we’re some sort of proper indie studio or something (fingers crossed nobody figures out we’re just some random guy with a laptop and a few friends helping out occasionally). So bar anything catastophic, an Alpha Release (Species 0.4.0) is on the horison and slowly getting bigger.
Yep. I’m following a slight mutation of the Minecraft
get-rich-quick scheme marketing strategy (my plan is probably closer to Kerbal Space Program, which is awesome by the way), which seems to have become something of a de-facto standard for indie game releases. So all the alpha releases (however many of them there are) will be free, while the Beta releases will cost something, and the full releases will cost a bit more, but buying a beta release or preordering during the alpha stage will get you the full version anyway for less money than what you’d pay if you bought later, and the alpha releases will always be free-to-download even after the beta and full versions are- HOW DID SOMETHING THIS COMPLICATED BECOME SO POPULAR?
I might set up donate/pre-order button when I release the first Alpha. I’d feel like a jerk if I took any money without giving you guys something first. 🙂
Hmm… I’m pretty sure that’s everything I wanted to cover here.
Thanks for reading!
“No snark today. Too tired from spending all night editing his stupid video for him. Lazy sod.”
Presenting the unholy lovechild of Fraps, Species and Premiere, whose birth heralds the riding of the horsemen and the coming of the prophesied end times… or would do, if October 21st wasn’t 4 days ago…
… Hmm. I don’t really have much to add here. I think I put far too much information into the annotations this time around.
I stuffed them up again. It’s hard finding a format that works: the first video’s annotations were distracting, this video’s annotations are unreadable without taking your eyes off the video. Plus they’re really fast, because I tried to put too much information into them.
I’m still reluctant to actually narrate because I sound like a nerd.
The game in it’s current state generally stops responding somewhere between 15 and 25 minutes in due to a SystemOutOfMemory error. This is annoying, but I’m fairly sure I know at least one way to reduce the memory footprint. It might also be related to running fraps at the same time: I’ll have to investigate that.
Looks nice, doesn’t it? I ‘borrowed’ a few images from google. It’s amazing the difference a good texture makes. But since I don’t know whether they’re under copyright or not, they’re still just placeholders. I’ll make my own trees eventually.
As you can see, a stable population of creatures tends to keep the vegetation from growing back. This is annoying, because the trees add a lot to the visual design. I’d like to work out some way of keeping a decent number of trees around even when there’s a moderate population amongst them: maybe rather than shrinking/growing, trees could transition between a ‘dead’ texture and a ‘live’ texture? Not sure, but mulling it over.
For the programmers amongst us who find this sort of thing interesting, here’s the colour key for some of the larger debug timer bars:
Blue: Update Call. Creature AI, Behaviours, Movement, Interaction: I've managed to reduce this one by a lot by messing around with the implementation. It's quite a compact routine now, though the code needs a major clean up.
Green: Species/Population Tracking. This should be almost entirely taken up by comparing creature genetics to search for speciation. Unfortunately, it's not: that's actually surprisingly fast. What really takes up the time in this routine is drawing the population graph. Render Targets hate me: the entire population graph may have to be re-written to fix this.
Magenta: Prepare Draw. Updating the animations, bone sizes and positions. This is where most of the Skinning is done. Lots and lots of matrix operations. It's been optimised, but it's still a fairly heavy routine. But not as heavy as...
Blue (2): Draw Call. Thanks to the 'every creature is unique' nature of Species I can't use mesh instancing, so drawing 1000+ creatures takes an utterly unholy amount of time. I am using State Batching where possible (so, for example, I draw all the torso's in one loop, all the necks in the next loop, and so on), and that helps, but mostly it's just a blow I have to take.
There’s any number of things that need improvement visible in the video, mostly related to entertainment value more than accuracy. Some, like homogeneity and being able to tell which species is which, are general behaviours that require a subtle solution. Other’s, like implementing a proper vision system for creatures, are specific and obvious. It’s probably simplest to focus on the specifics for now, since they’ll likely have massive effects on the overall behaviour of the simulation. A lot of work to do yet!
The Next Video
… I realise this video was kinda boring overall, so the next one will be about showing off potential creature variety and the effect different shapes and body-parts have on stats. Much more interesting! But there’s a lot I want to implement before doing that, and if this video was anything to go I happen to be absolutely terrible at getting these up at the time I want, so don’t expect it for a while, okay?
Huh. Guess I did have more to add. That was unexpected.
Oh well, it keeps me entertained. Not much else to do in the EMP cannons prison block. Thank goodness they have internet access, that’s all I can say. Very forward thinking of me, putting internet access in my own prison cells- DAMMIT WHY HASN’T ANYBODY LET ME OUT OF HERE YET?!!
(UPDATE) At 5:53 EST the insect-man army broke our defenses and overran the Orbital EMP Cannon. We were all taken hostage by the geneticist Overlord and mouthpiece for the bio-scientist hivemind, a rather pleasant bearded fellow.
Thankfully, after we locked Qu in one of the cells to shut him up, I was able to convince the Overlord to spare our lives. He even let us keep the cannon, though he took the firing mechanism (for our own safety, of course).
It’s been several hours, and everything has returned back to normal. Seems remarkably quiet, though. Strange, though. I can’t shake the feeling I’m forgetting something, but for the life of me I can’t remember what it is…
IT’S ME YOU BLOODY SASQUATCH! LET ME OUT!
… nup, can’t think what I might be forgetting. Oh well, I’m sure it’s nothing important.
I WILL WREAK VENGEANCE UPON YOUR PATHETIC FORGETFUL SOUL! YOU HEAR ME?!
I’m regretting not removing some or all of those annotations. It would have been better to play a faceless mute, or simply not bother with some of the more casual comments. What seemed amusing the first time around became significantly less so after having tried to render the video for the something-hundredth time, but by then it was too late to change them.
Yes, I know.
Head, Torso and Tail-ball
The simplest starting creature, in the long term, will be a featureless blob. It will absorb just-enough nutrients through it’s skin to survive, just as modern bacteria do. This will allow the player to evolve an ecosystem from the simplest forms of life. For the moment the creatures diet requires them to eat, so heads had to be provided. And the tail-ball is a purely temporary measure, to mark the position of the tail-tip until I add actual content for it.
The creature level of detail becomes annoyingly apparent in the first half, where you see a huge number of dark shapes rather than creatures. Waiting in the wings is an upgrade to this system, to use imposter sprites rather than a single texture. This should result in a much better appearance for large populations. I’ll discuss LOD more when I reach that point in the chronological postings.
Some of the creatures in sight after the time lapse have… unusual heads. Certainly, they have heads you wouldn’t expect to see on the children or grandchildren of the starting creatures. This is for two reasons: because there is currently no mutation restrictions (any head-type can mutate into any other head-type) and because there are currently a grand total of 7 head types. The game engine still occupies most of my programming time: modelling content is considered a strictly secondary priority at this stage.
Many thanks to Brain Sugar, for the excellent music.