Hey look, grassyness. That’s a word now.
As mentioned, even though it’s the same texture assets as before, it holds up to camera rotation a lot better than the previous grass billboards, which always faced the camera. It also blends well into the terrain, thanks to a lighting system which borrows grass lighting from the terrain below it, rather than the actual grass geometry.
I also gave the underwater biomes their own grass sprites, to make them a bit more visually distinct. There are 7 underwater biomes total (sulphur lake, reef, warm sea, marshes, cool sea, sea ice and deep ocean), of which four have new “grass” sprites.
Mindspider Update: Okay, it’s a good news/bad news situation. Good news, the broom closet was a weapons locker, and the brooms were flamethrowers, so now we’re in the control room and none of us have eyebrows anymore.
Bad news, the spiders hacked an escape pod and are on their way to earth. Probably to kill you all. Anyway, that conflicts with my world domination plans this month, so we’re trying to hack the pod. Well, my surviving minions are. I’m getting myself a coffee. Priorities, y’know?
OH GOD THERE’S SPIDER EGGS IN THE MILK THIS IS THE WORST DAY.
Species is not a particularly communicative game: it has dozens of features, but it doesn’t really go out of it’s way to tell you about them.
In part this is because I prefer the idea of getting the UI right: if overused, tutorials can be a crutch for poor UI design. I’d like to have a UI that is fairly easy to understand and navigate even without tutorials.
But at some point I have to accept that Species is a complicated game: too complicated to communicate all it’s features simply through UI conventions, tooltips and icons. So, I’ve been working on a tutorial manager that taps into the messaging system to drop little tidbits of wisdom when you do specific things, like click on creatures or bring up the clade diagram.
Then I realized the problem with this approach, which is that it was dumb and I am dumb. The messaging system is designed to show messages in a bottom-up order, chronologically speaking, which is something only dumb stupid backwards software written by idiots does, #followmeontwitter.
Additionally, the messaging system is unobtrusive by design, so you don’t get swamped by speciation notifications. By the time you notice the game is quietly trying to tutorialize you, the messages are already fading away.
So that system can go suck an avocado because I’m working on a better one already.
This dialog will store up tutorials as you encounter them and allow you to read them at your own pace. Naturally, this box will vanish once you close all the tutorials.
I’ll also add a ‘Show Tutorials’ checkbox to the New World page so you can turn them off. If you wish, you may scream “SILENCE, MINION!” at the screen when you do so. Or not. It’s really up to you.
PS: Worked it out. The spiders hacked the alarms to catch us off guard. They’re way smarter than we anticipated.
So, we’re hiding in a broom closet now. Good times.
So, moving to Monogame broke the billboard grass the game has been using since v0.5.0.
The reason it broke is a complicated mess of complicated messyness, but ultimately it boils down to this: Monogame in OpenGL mode (which I’m using in the hope of one day supporting Mac and Linux) doesn’t do vertex texture fetch. This means I can’t use a texture to move the grass billboards.
This is bad, because the grass in Species isn’t actually positioned on top of the terrain. The graphics card moves it to where it thinks the terrain is, based on the terrain’s heightmap. This means the grass can be a simple, low-memory tile of billboards that I can put wherever I like without ever touching the CPU or RAM. As a result, the grass itself had practically zero performance impact.
I was also using vertex texture’s to decide what grass texture to show on each billboard, based on the fertility temperature map and the biome index texture. Basically, everything about the billboard grass relied on vertex textures, which Monogame simply doesn’t do. I’d been hoping for an assist (I raised this issue with the Monogame developers a while back), but unfortunately that hasn’t happened.
So that being the case I’ve been trying to remake the grass from scratch. Not exactly the best thing to be doing in the weeks before a launch I will admit: I really should be getting my minions to playtest it right now and fixing the inevitable plethora of bugs. But I’ve still got too much work to do.
This time around, I won’t be using camera-facing billboards: I’ll be using actual grass geometry.
The new grass model, rather than being a square that always faces the camera, is a pair of squares, rotated and offset slightly from one another to make them look that bit more organic in the game.
This results in slightly sparser-looking grass, but since it has an actual 3d shape, it holds up better to things like camera rotation.
Bit by bit I’ve been re-implementing the features the old billboard grass had. I’m still not all the way there (no lighting, max density, and the grass isn’t matching up with the floor cover at the moment), but I’m getting there.
Hopefully I can get this build to the test minions soon!
Nyarlathotep willing, Species ALRE 0.11.0 (the “Fins and Flippers Update”) will release on Steam on Friday, 28th September.
When it comes to balancing newly implemented body parts, limbs have a certain advantage over simpler body parts like limb-tips and facial features. Since they are attached to the skeletal physics system, their shape and size will naturally influence selection pressures without me needing to carefully define stats for them.
This won’t apply to underwater creatures: fins don’t touch the ground, and balance and droop are not relevant forces underwater. So I need to fall back on an older system for water limbs: balancing the Speed and Stamina stats. A limb with high speed should avoid having similarly high stamina, making it better for sprinting, while a limb with high stamina should also be slow, for marathon runners.
In real life, physical limitations enforce these sort of rules, but for Species there’s nothing stopping me from implementing a limb that has a gazillion speed and stamina points. Which would be bad. No limb should have both speed and stamina as this would make it overpowered and cause all the creatures in the game to converge on it, suppressing biodiversity.
To add another wrinkle to the concept, limb stats should not be randomly assigned: there needs to be a visual signifier that indicates whether a creature relies more on speed or stamina.
To this end, I’ve settled on a mental model of “propulsion” and “drag”. I can easily observe the aerodynamic shape of a limb and make an educated guess at those, where values like “speed” and “stamina” are a lot more abstract and harder to decide on based purely on shape.
Thus, paddles and flippers are easy. They have a large surface area, giving them high propulsion and drag, which means statistically they will have high speed at the cost of stamina.
Fins and Wings (stingray wings that is, not bird wings) are streamlined: they have low propulsion and low drag, and thus they tend to bend the creature’s stats more towards stamina and away from speed.
This model won’t only apply to limbs. All body parts provide some sort of drag, and thus influence swim stamina. The most notable of these will be large, bulky heads, which will be folded into the torso’s “streamlining” calculation and weighted heavily in calculating swim stamina.
Tails will also provide propulsion and drag, although due to positioning their drag will generally be lower than an equivalently-sized limb.
It is time: I am beginning commencement of World Domination Scheme 7.21!* And also getting the Species page up on Steam. Insert evil laughter here.
I’m taking down the download page and donation buttons on speciesgame.com, and the Steam “Coming Soon” Page is now live. I would greatly appreciate it if my readers could sign into Steam and add Species to their wishlist: it’ll help us out in the charts and aid Species ALRE in it’s never-ending quest to infect members of the human population.
Special thanks to Mike Stankiewicz for making the steam trailer, doing most of the work on the page, manning the Twitter and Facebook accounts and generally boosting enthusiasm for the project (both mine and others). If simulation games are your thing you should definitely check out Interstellar Transport Company, Mike’s other project, also on Steam.
On the Species 0.11.0 front, I’m finally getting into some delicious, juicy Content, starting with flipper limbs!
As indicated, they use the existing leg system. Unlike almost all the existing legs, they do not increase walk speed, but they do increase swimspeed. Quite substantially, now that I’ve ironed out a few kinks in the stat calculations.
They are also animated, of course. The limb system means they have to be. Combined with the new swimming body animation, and the limbs now mostly following the body geometry as it goes through it’s terrible and at times mildly non-euclidian contortions, it actually looks pretty good. You’ll have to take my word for that right now, I don’t have any animated gifs on hand.
Sorry about that. Here’s another genetically modified P. specium to make up for it:
In case you’re wondering, yes, those side wings do flap up and down in sequence like a stingray. AND IT IS GLORIOUS. … I’m definitely going to have to find a better way to make animated gifs for you folk…
Flippers aren’t all I’ve been working on, either: I’ve also been
utterly ruining substantially improving the Tail system. Because let’s be honest, Tail Curvature and the other tail morphs never worked right. Instead, we will have tail types! Wonderful tail types!
We’ll still have Tail Length, and Tail Thickness, because those aren’t completely awful. But no more Tail Curvature. Screw tail curvature forever.
Does anyone else feel like the word “curvature” is misspelled? Or, like, it should be misspelled? It looks misspelled. I feel like it should have an “i” in it. Like, “curviture” ARGH THAT’S SO MUCH WORSE!
Anyway implementing this will mean a mild overhaul of the tail system, and that could take a few days to complete aaaand I’ve already done it since I drafted this post.
Whoo! I’m on a roll!
I’m implementing a few extra tails: the types in the previous screenshot will boost damage and swim-speed, but I’m also modelling up some large ‘abdomen’ tails for food capacity, and of course a variety of properly curved scorpion tails (also for damage, so I suppose they’re technically a redundant body part, but c’mon. Obviously I was going to have scorpion tails. Why do you think I implemented the Tail Curvature gene in the first place?).
A plethora of new tail types for 0.11.0 will provide another lucky monsters gene for evolution to play with and combined with all the differences involved in navigating water will hopefully get us some new and interesting looking species.
*footnote: World Domination Scheme 7.20 didn’t get past the testing phase, so we had to swap out the hypnotic time-travelling meerkats for ordinary hypnotic time-travelling cats. If this works, the internet will be retroactively and inexplicably full of my feline minions- oh god what have I done.
First things first: with Mike Stankiewicz’s help we’re starting our move to Steam, so I’ll be taking the Species 0.10.0 alpha down from speciesgame.com within the next week, along with the donation buttons. Please be aware that the Species alpha will not be downloadable for a while as we build up to the Steam launch.
With that out of the way, let’s get onto the important stuff: I taught Primum specium to swim!
Ultimately I decided to implement a realistic buoyancy model. I actually implemented the variable-buoyancy model I described previously, but decided it was not going to work for a couple reasons…
The first reason was the odd effects it caused when I was defining tissue density. I’d planned for the starting/average tissue density of creatures to be 0.913 (this being the density of body lipids. Primum specium is basically a blob of fat). But water has a density of 1.0, which meant it would have floated on the surface. I had to fudge the numbers to make P. specium able to dive.
That wasn’t a breaking problem though. What ultimately clinched it for me was implementing the oxygen system.
Oh, right! There’s also an oxygen system now! Here’s what I went with:
“Respiratory System” is a genetic value akin to “Diet”, ranging from -1 (water breathing) to +1 (air breathing). Creatures at the 0 mark (ie. P. specium) are roughly equivalent to anaerobic organisms: they absorb a small amount of oxygen regardless of the medium they’re in. The trade off for this is that they have to ‘gasp’ periodically to restore their oxygen meter, wasting time and energy.
Oxygen is a 7th emotion, somewhat akin to fatigue. When it becomes a problem, air breathing creatures will swim for the surface, water breathing organisms will move downhill hoping to reach water. Once they reach a breathable medium, they will ‘gasp’ to double their oxygen regeneration rate until it isn’t a problem anymore. (Anaerobic organisms can gasp anywhere, but restoring their oxygen bar will take a lot longer).
Back to the buoyancy model! I temporarily turned P. specium into +0.1 air breathers to test the need to swim for the surface for oxygen. This lead to a problem: P. specium was happy to make the attempt, but it didn’t have enough swim speed to reach the surface, and ended up continually swimming upwards against an invisible force until it gave up and was dragged back into it’s preferred plane to suffocate.
This cinched it for me: I still think the variable buoyancy model might have provided some interesting evolutionary results, but if those results are going to be odd and unintuitive, they’re simply not worth it.
So instead, I implemented a realistic buoyancy model: unless they’re perfectly balanced, creatures will slowly sink or slowly float upwards while in the water. This will give swimming creatures access to all levels of the water column, provided they have enough propulsion to resist their buoyancy.
This same buoyancy model will also apply to the air, which will open up some interesting options for the future. I can’t promise there won’t be any bugs…
… but they should be the fun sort of bug, rather than horrible game-crashy sort.
The end result of all this tinkering: when you put them in the shallows, my air-breathing P. specium have a dive-to-eat/surface-for-air cycle that is fascinating to watch, and really sells the idea that the world of Species (well, the oceans at least) is a 3 dimensional space and not simply a 2D plane. I’m really happy with the way it came out, and may actually end up leaving the +0.1 air breathing gene in.
I still need to implement a few extra bits of oxygen-seeking behavior (eg. walking uphill if you’re not a swimmer, swimming downwards if you’re a buoyant water-breather, treading water to prevent being re-submerged while gasping on the surface, etc), but I’m very happy with where this is going right now.
Oh, I also took some time to fix a problem that had been bothering me in the development version: Creatures eyes had stopped appearing. I hadn’t realized how much I missed their doofy faces until they were gone. Thankfully, that’s fixed now!
… yes, totally fixed.
I also added a crown to the kelp!
I know it doesn’t look like much, but putting those floating leaves on top of the water took me far longer than it should have and convinced me never to try and do ‘special rendering modes’ for specific tree types ever again. Until such time as I completely rework the vegetation system from the ground up (which will be necessary when/if I implement evolving plants), I’ll stick to normal tree types.
Like coral, which is totally a tree.
One other thing I’ve been working on, but can’t really show via screenshot, is attaching limbs to the creatures body more firmly. Previously, the leg’s up/down animation was an estimation based on where the torso animation was at. I’ve overhauled that system to bind the legs directly to the torso bones, which should have them follow the animation of the torso much more closely.
This will also assist the legs in following the torso’s movement during the swimming animation, which differs in a number of significant ways from the walking animation.
It’s an incremental improvement and it won’t fix everything wrong with creature animation, but it’s a start.
There’s still a lot of work to do: I still dont have grass working in the Monogame version and I need to introduce swimming-specific body parts like flippers and variable tails, but we’re gradually inching closer and closer to having something worth releasing!