Archive for category Uncategorized
A unexpectedly influential addition in 0.10.0 is the addition of a Stamina meter.
I’ll explain why we need it after I explain what it is.
The stamina meter has some basic, functional similarities to the stamina meter you might find in other games: it’s a meter that is used up when creatures do something exhausting, like sprinting or attacking. But it is quite a bit more complex under the hood. Here’s how it works:
Obviously, creatures will use up their stamina when they engage in any ‘exhausting’ action: walking and running, attacking, those sort of things. Less obviously, both the strength/speed of these actions and their stamina cost will be linearly proportional to the creature’s stamina at the time. An exhausted creature will run slower and be weaker than their fully rested counterpart.
This will have several interesting results. A creature which triggers the ‘flee’ response will begin by sprinting as fast as it is able. As it runs it’s stamina will drop, so it will slow down, but also use less stamina. At a certain point, it’s stamina regeneration (metabolism) will reach equilibrium with its run speed: this will be the fastest run speed it is capable of maintaining. A high speed stat won’t necessarily make a creature faster if their stamina regeneration (directly proportional to metabolism) can’t keep up.
Similarly by virtue of how the system works, a creature’s initial attack will be its strongest. This should be a boon to predators, allowing them to kill weaker prey with one blow. I’m also considering add a stamina cost to getting hit, to further advantage the creature that lands the first blow.
Tangent: Speaking of boons to predators, one change I’ve made recently is to significantly reduce all creatures total hitpoints (/10) and increase their damage resistance (x10) to compensate. This will make it less costly for the survivor of a fight to heal damage, making hunting more rewarding.
So, why did I think a stamina bar was necessary? Because of the temperature overhaul mentioned in the last post.
I was thinking about the effects of cold and heat on creatures. None if they’re operating at optimal temperature, damage if they’re exposed to hot or cold extremes… but what about moderate temperatures? Real-life creature’s don’t get hurt from moderate changes in temperature, but they don’t enjoy it either. Besides, the game has far too many causes of damage already: gradual health loss has been my go-to source of selection pressure since 0.4.1, and I really need an alternative.
So I wanted a ‘stage 2’ state for creatures that were hot or cold, but not too hot or cold. In real life, creatures sweat, pant and shiver… all of which are thermoregulation adaptations and have nothing to do with their internal temperature being non-optimal. How do creatures without these adaptations, reptiles and amphibions, respond to non-optimal temperatures?
They sleep. And there’s my answer: mild non-optimal temperatures should make creatures lethargic, and slow them down without actually hurting them or costing them energy.
That realisation lead to the implementation of Stamina as a means to control their speed and cause them fatigue without hurting their health. Their maximum stamina (the orange bar) at any one moment is directly proportional to how close their temperature is to optimal at that moment, so creatures who maintain an optimal temperature will be able to move and attack with far more strength and speed. Additionally, if their temperature is bad enough (freezing/burning to death), they will not be able to move, which is a death sentence even before temperature damage kicks in.
This gets really cool in it’s interactions with other systems: one thing that’s been bothering me is endothermism’s ties to a higher metabolism and more active lifestyle. Originally I assumed I’d need to implement something manually: factoring metabolic heat production into the speed calculations. But with this stamina implementation I don’t need to because those ties are likely to emerge as symptoms of this system. Creatures capable of thermal regulation will naturally be faster and more active by virtue of always operating at their optimal temperature, while their ectothermic counterparts will slow down or speed up based on the current temperature, just like their biological counterparts.
Every time I feel a bit enthused to come back to write a new blog post I feel obligated to discuss my absence and motivational issues. After all, I can’t just come back and pretend everything is fine. Everything is not fine, I’m having motivational issues. Motivational issues are not fine.
But then I start writing about it and get all introspective and offer solutions and then get self-conscious and realise I’ve made promises in it I may not be able to keep and scrap it all and then the brief period of motivation has passed and so I don’t post anything to the blog. Blargh! I must have written my “comeback” post six times by now. I’ll be honest, I’m sick of writing this post over and over.
So… screw it. I’m not talking about it. This is me not talking about it. I know it might look like I’m talking about it but I’m not. It’s actually just Venus reflected by swamp gas. These are not the droids you are looking for. Have some conveniently distracting pictures:
This is the new (read: months old but I haven’t shown it to anyone yet so that makes it new) underwater shaders in action. Before this the underwater visuals didn’t actually work: going underwater would make the water plane disappear, there was no fog, and the ground was lit the same as abovewater. This was why we had to clamp the camera above the water plane and make creatures swim on the surface.
Of course, this was all implemented when I thought underwater creatures were going to be the major feature of 0.10.0. That’s fallen by the wayside, but the visual improvements are still there and they do improve the general appearance of the game quite a bit.
Aside from the visual improvements, I’ve also implemented a significant upgrade to the temperature system.
In 0.9.0, a creatures energy loss due to temperature was determined simply by comparing the external temperature to their optimal. This works fine for passive temperature adaptations (for example, evolving fur coverings), but it doesn’t allow for them to *respond* to temperature changes. Since they have no thermal inertia, dedicated thermoregulatory behaviors like basking in the sun, splashing in the water or huddling together for warmth are useless. Behaviours like that might temporarily reduce how rapidly they lost energy, but wouldn’t stop other forms of energy loss entirely and would prevent them from seeking food. Ultimately, with the thermal system as simplified as it was, these behaviors would be a complete waste of time and energy for the creatures engaging in them.
So I added thermal inertia to the system, followed rapidly by a metabolic heat production gene, which for now I’m calling “endothermism” even though that’s actually a misnomer. Endothermism also ties in with optimal metabolic temperature: as a placeholder, I’ve set it to 38 degrees (human operating temperature) for 1.0 endotherms’s, and 28 degree’s (arbitrarily chosen) for 0.0 ectotherms’s.
(I’ll note that the things I’m writing here are driving biothermal regulation experts into a frothing rage, but they kinda deserve it for making their field needlessly opaque with polysyllabic words. I DON’T BELIEVE “POIKILOTHERMIC” IS A REAL WORD)
Insulation was sort of already there in the game, so naturally I completely removed it and started over. Although I did use it’s values to help work out some of the new insulation values for the various furs and skins.
All of this is extra complexity, but it’s for a good cause: with it, we can implement the thermal regulation behaviours I mentioned before. So for example, an endothermic creature can “huddle”. Huddling decreases surface area, which increases insulation, which can be an effective way to increase the body temperature of endotherms. Joining an existing huddle is even more effective.
Other implemented behaviours are “Basking in sun” and “Basking in shade”. The “bask” action increases their surface area, meaning they reach equilibrium with the outside temperature sooner. Swimming also provides cooling, simply due to the cooler temperatures of the water: I haven’t gotten to the point of implementing it as a seperate behaviour yet (and suspect I may not need to, since creatures naturally understand to move towards cold area’s like water when they’re hot).
Speaking of water temperatures, I’ve been trying to work out what temperature the water should be in relation to the atmosphere. I initially implemented it as a constant “AirTemperature – 10”, but that’s not good enough. The deep sea supports homeothermic creatures precisely because it is always a constant temperature, so depth needs to be factored in. But depth doesn’t acutally matter unless the creatures can movement up and down on the Y axis, and I haven’t even decided yet whether I want P. specium to float or crawl along the seabed.
In short, progress may be slow but it is still being made! More info to come soon.
If you’d asked me 6 months ago, I’d have said Species 0.10.0 would be my opportunity to work on dietary chemistry. Biochemistry is the lynchpin for several major features, and I’m quite keen to get it working. Plus who doesn’t like complicated flowcharts filled with biochemical technobabble?
But then I rethought that plan…
If you’d asked me 3 months ago, I’d have said Species 0.10.0 would be my chance to add swimming and marine ecology. Swimming is more a sideline feature, but it’s big and flashy and it’s a noticeable lack in the game right now, since we have the water plane but not swimming. Plus I’d already started work on the underwater shaders, and was dropping hints about it in the forums.
But then I rethought that plan…
But I do have some idea’s.
I’ve been playtesting the game myself, trying to work out what’s missing. And there is definitely something missing. For a game with an infinite possibility space of procedurally-generated, evolving creatures and a whole variety of different biomes, it’s weirdly predictable and samey. That’s actually a word. Apparently it’s British.
It’s a problem that plagues procedurally-generated games in general. Humans are irritatingly great at pattern recognition: they can spot when entities share animations and behaviors. Different games get around this problem in different ways, to varying levels of success… but that’s a topic for another post.
In Species 0.9.0, this manifests itself in quite a few places. There’s the ‘template’ bodyplan: once you spot that all the creatures are vertebrate hexopods, their appearance becomes a lot less interesting. The basic behavior of “walk around slurping up food sources and spawning babies, then die” is also problematic. If you’ve seen P. Specium’s behavior, the behavior of many evolved creatures won’t be new to you. But how do we address something like this?
The obvious answer is “variety”, but that could refer to any number of different things.
Like in real life, creatures really should engage in far more behaviours than just seeking food: not just social and territorial behaviours, but also various actions related to temperature regulation, seeking other important resources (water and oxygen, most notably) and finding a place to sleep. Even the generic “eat food source” behaviour could become a heck of a lot more interesting simply with the addition of different types of food sources: there’s a gulf of difference between catching insects in your beak, picking grubs out of the ground, and grazing on foliage.
Currently, there’s only really one survival strategy: “walk around slurping up food sources as efficiently as possible”. In addition to more behavioural variety, we need the environment to provide a wider variety of niches for creature’s to occupy in order to encouraging those varying behaviours to co-exist in the same world.
At the moment it can be hard to identify variety even in cases where it genuinely exists. Creatures can die from overheating, freezing, starvation, old age, injury, harmful mutations, or player-instigated robomurder, but what players generally *see* is a creature lying down and exploding. Without knowing the context of why and how it died, all death get’s lumped into the same boring “ran out of health” category.
I don’t know which of these is most vital, but my thoughts at the moment are that any of these three… features? concepts? themes? … are more important to the current build of the game than Biochemistry or Swimming would be.
I’m actually fairly far off the beaten track here: unlike previous updates, where I had completed most of the design work well in advance, 0.10.0’s development will be more reactive and involve a fair bit of improvisation. I don’t have a checklist of features to complete this time around.
At the moment I’m focusing my work on one of the items under “Behavioral Variation” (can you guess which one?), but I suspect I’ll drift between a variety of features as the update comes together. I also completed a number of smaller tasks while I was rethinking my evil plans, and I know how much you all love aimless ramblings about the technical minutiae of development, so stay tuned!
I warned them, I told them there’d be hotfixes, but they laughed at me! They called me mad, haha! Well who’s mad now, huh? HUH? HAHAHA! AAAAHAHAHAHAHA!
This update fixes:
- crash when loading saved games
- crash on some machines when clicking “Select Target” from the Nursery UI
- exceptions not providing usable information
- fences being placed as unremovable ‘Nursery Walls’ instead of the usual barbed wire
Hotfix Link (executable only. To install, extract into Species 0.9.0 Alpha and overwrite the existing files)
If you don’t already have the game installed, you can get the full game here. DO IT FOR SCIENCE.
We made it! Species 0.9.0 has been released, and is now wildly rampaging amongst the pitiful masses of humanity.
Here’s what to expect: (screaming of puny humans not included. That’s just a bonus)
- The Nursery, wherein you can contain a live population of organisms and bend them to your whimsical designs by means of artificial selection and a pair of miniaturized rovers.
- Your Own Species, created by causing aforementioned live population to speciate from their wild counterparts. What you do with them after that is your own business. Live in harmony? Take over the world? Drive everything else to extinction? It’s up to you.
- Automatic Population Control. Who needs human interaction anyway? Those long running sims don’t need you nannying them anymore: the game can keep the population in reasonable limits for you by messing with the food efficiencies.
- Sexual and Asexual Reproduction Modes. Feeling prudish? Disable mating completely! Feeling… uh… not prudish? Enforce it as a requirement before creatures are able to reproduce.
- Double Scale Worlds. Bigger tree’s, bigger cliffs, but same-sized creatures.
- XML Save/Load. More robust, human-readable save files.
- And a load of minor fixes and improvements!
Check out this amazing dramatic fan trailer for the upcoming Species 0.9.0 by Youtuber GameGabster:
GameGabster’s been doing Species ALRE lets play’s for quite some time, plus a bunch of other games of a similar nature, so check out the rest of his channel while you’re over there.
Species ALRE 0.9.0 Alpha will be released on Thursday the 31st March
To celebrate this milestone, I’ve been playing around with the creatures designer. You can click-and-drag to rotate the camera in it now, too. Plus it displays some basic stats about the abomination you design.
Here’s a bear I made out of a Primum specium.
And here’s a speed-oriented creature that makes me want to implement proper running animations (not for 0.9.0, sorry).
And then there’s… this.
Prerelease community bug-testing will commence tomorrow. If you want to be involved, sign up to the forums at speciesgame.com/forum.
Best of luck keeping these things from haunting your nightmares!