Posts Tagged UI
I played with the Rover UI while I working out exactly how I was going to apply the (now completed and working) torques to the creatures in a realistic fashion. This led to the following thought processes, presented in conversational format for readability and not because I pay heed to the voices in my head. Because I don’t. I am sane.
“I promised to do thing X with the rover AI for 0.7.0, but with the upgrades to the code it should be possible to make it do interesting things Y and Z as well. But there are a variety of sensible, practical reasons to leave those for a later version so I can get 0.7.0 out earlier. I would have to be completely insane to distract myself with additional feature creep at this point in time.”
“I make a very sensible point. Does the opposition wish to provide a counter argument?”
“Yes! Now! THIS IS A PERFECTLY RATIONAL AND SANE DECISION!”
So, umm… this (click for full size if you can’t read it):
In addition to the promised “creatures with genetic distance to” option, we’ve now got “trees with high/low stat”, (this should be helpful for encouraging reforestation), “Species” will be good for cladogram pruning (I’d also like to add a “plus descendants” option, since it’s hardly a proper genocide if the Rovers ignore branches of the species), and most importantly, “Population when total creature count is higher/lower than” will be great for controlling population explosions and preventing mass extinctions.
It’s already mostly implemented, so this hasn’t set me back too far.
You’ll also notice that the Rovers now have randomly-chosen names. This was another small, unplanned feature. It has absolutely no effect on gameplay, and some of the names are a bit silly, but overall I’m quite happy with the addition. It gives the game as a whole a tiny bit more personality than before.
– – – – –
“It gets harder to not talk to yourself when there’s so many of you.”
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.
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.”