Posts Tagged Species ALRE
Some of the things of which I have been the doing… (that’s totally a sentence and anyone who says otherwise will be EMP’d)
Rather than just adding an option to allow rovers to prioritise differently, I completely overhauled their AI. It does the same stuff as before, but in a much more versatile, object-oriented manner which will allow:
– Task queue. Allows for sequential tasks, waypoints, and 2-part actions like move and gene splice.
– Arbitrary targets. Rovers can now target anything with the “Entity” base class, which includes trees, fence posts, devices, other rovers…
– Arbitrary actions. They can now call any method in the game when they reach their target, rather than just picking through a predefined library (feed/kill in 0.6.0))
– Arbitrary prioritiser. The system for choosing which entity next merits their attention is now versatile enough to support any prioritisation method, rather than just picking highest/lowest statistics.
To test the system I added a routine that appends a “DoNothing” task tied to the camera entity. The rover finishes murdering whatever they were murdering, then comes to the camera, says hi, then runs off again on its eternal killing spree. It’s adorable.
I then implemented the UI for Targeted Rover Programming (would it be tacky to shorten that to ‘Rogramming’?).
It’s not quite as user-friendly as it was, but it’s capable of a lot more. And it was really easy to hook into the aforementioned AI system! Configuring the UI itself, on the other hand… let’s just say the UI code rather desperately needs a cleanup.
The end result? I targeted Primum Specium and let 4 rovers get to work on a randomly generated species…
This “forced devolution” sequence took about 2 in-game hours, (12 minutes at 10x). I had to switch them from killing to feeding a few times to keep them from driving the creatures to extinction, and I learned something in the attempt: it seems that selectively killing a large, thriving population is a much more effective way to apply selection pressure than selectively feeding a small, struggling one. There was a different population that caught the attention of the feeders, but ultimately they were incapable of surviving even with assistance.
There will be a major change to the game as a result of this feature: the Creature Editor which has been an unofficial part of the game since 0.4.1 will enter the game officially as a means of creating your own selection targets for your rovers. You won’t be able to use it as a creature generator: designed creatures will appear in the export list as “Genome Only”.
Finally, another potential major change: this rover AI system marks the beginning of the end for the godhand tools. The goal has always been indirect gameplay, and replacing the direct “Feed” button with a way to give the rovers that command is a step in that direction (plus it steers the game away from god games like Black and White).
It should also work well with a few planned changes to the UI (not for this update, but later): rather than “Select Mode”/“Select Tool”/”Click Target”, I’m thinking of a more context sensitive “Select Target/”Click Tool”, where the mode is determined by the target. So you’ll get different tools if you’ve got a creature selected than if you’ve got a rover or a tree selected. Such a system should be more extensible for things like group selections, as well as easier to use.
Placeholder models, but they work! They look a bit odd in 10x speed though: the optimisation that causes the biomes around forests to ‘pulse’ causes the same effect from the climate devices, except even more noticeable. I may have to work out a solution for that problem, but initial results are promising: it should now be possible to keep creatures alive on a glacial map without simply changing the global temperature.
They’ll need a UI too, though: at the moment I’m just generating them with the “G” key. Once more unto the breach!
I’ve got all the forces in play, including reaction forces, but the 3d torque calculations are still giving me trouble. Can’t work out why the tail torque is backwards. Heck, I can’t work out whether the tail torque is backwards: it’s possible that my display arrows are the things that are backwards. I’ll get there eventually.
Overall progress report!
• Mutation Map Editor: 100% done. Just need to get around to actually using it for new content.
• Fences: 90% done. A few bugs to fix, mostly AI related: creature’s need to ignore objects on the other side, and rovers need to path around.
• Targeted Rovergramming: 90% done. Some minor cleanup and bugfixes.
• Skeletal Analysis. 75% done. Slowly getting there, but the aformentioned torques are still giving me Fun.
• Physical Values: 70% done. Volume is defined, and Mass is calculated from a placeholder value for density. Should be easy to hook in the material system, which is being developed off to the side, when it’s ready (no idea when, but not for 0.7.0).
• Metric Units. 70% done. Same as “Physical Values” because they’re effectively the same thing Comes with volume and density. Not in genes, so conversion is performed in BodyPlan and fed through to the boneses.
• Climate Devices. 40% done. Mainly I just need to make a UI for them.
• Animation. Not started. If anything, my forays into step-size adjustment have just introduced more problems.
Overall? Hard to say: some of these jobs are ginormous (Skeletal analysis is taking a lot of time) while others are tiny (Climate Devices were surprisingly easy to tie into the existing system), plus I keep coming up with new things to add or overhaul.
We’re definately past the halfway point, though.
I really should have done this sooner.
It’s a graphical representation of the head type mutation map. Took me half a week to make, and it’s already showing me a number of interesting defects in the map. There’s one in the screenshot above: see if you can spot it.
If you’re wondering where that particular head should be, you can see it’s originally intended location here:
The reason for these defects is simple: so far I’ve had to build this entire map textually, with nothing to go on but the names. That’s the “Gen3C”, “Gen4CaA” and “Gen5CcAAA”. The abstract naming scheme was designed to make it easier to connect them up without being able to see them, and without making mistakes. Guess it didn’t work as well as I’d hoped.
This tool should fix that little problem by allowing me to see what I’m doing. In fact, I’m considering taking it a step further and allowing me to edit the map directly from this window.
Also, I know 0.6.1 had a smaller Content to Time-Spent ratio than previous updates. This was because I spent half my time on cleanup, rather than new features. I justified this by telling myself it would make development faster in the long run. Turns out I was right! This simple tool would have taken at least a few weeks without being able to reuse the DrawableHead class, and the fancy MutationMap classes I made for the Mod Maker all the way back in 0.4.1.