Planet Search Overhaul
I’ve been working on stuff that I can’t talk too much about since that would spoil it, but there are some QoL improvements I’d made a couple of months ago that I wanted to talk about, but hadn’t had a chance to just yet. Talking about it so much after the fact is a bit tricky – I don’t remember all that was going through my mind as I was working on it. I did take a bunch of notes at the time, though, so hopefully that’ll refresh my memory!
The old planet list (that is, the one in the currently-released version of the game) is one of the older pieces of UI in the game, and it’s definitely showing its age. Part of the problem is that I’d designed it around the same time as the initial implementation of colonies – possibly even before colonies – so while I had some ideas about what might important to show or filter on, it was more speculative and not based on “hey, this is what actual players playing the game need out of this screen”. But at this point, there’s a lot more information to base a redesign on!
Planet list
First up was (if I remember right – it’s the first item in my notes, anyway) reworking the planet list itself. The main changes are making it a little more compact, so we can get more planets on the screen at the same time, and tweaking the columns. I removed the “survey cost” column (which wasn’t very useful), and instead added one that shows the number of stable locations in the star system the planet is in – which matters quite a bit for a potential colony.
I also rewrote it to use the new “UI table” widget – the original implementation was from before I’d wrote that general-purpose code, so it looked very similar to it but wasn’t quite consistent with tables in the rest of the game. Now it is, and looks just that little bit cleaner. The screen is now centered when playing at a larger resolution, and the list takes advantage of some of the extra available space by making some of the columns a little wider.
Navigation
I also wanted to improve how this screen ties in with the Sector map. The transitions between the list, the star system detail view, and the map are all instant now, instead of some of them having a fade in/out animation.
Clicking on the planet’s row takes you to the star system detail view, as before, but now – if you want to go directly to the map, you can click on the minimap on the row, and that’ll take you right to the map. The minimap gets “open map” hover text to hopefully make this option clear.
Planet search
The big part, of course, was re-working the planet filter/search interface – that’s the part that needed the most help, to make it more oriented towards helping the player pick good colony sites.
First up, the basics – what type of planets you want to see, whether they’re surveyed or unsurveyed, whether a faction lays claim to them. Similar to the old filter, but much more compact. Then, a filter for the maximum hazard rating, and the minimum number of stable locations in the system – now we’re getting to the “actually useful for picking a planet” stuff!
Resources
What kind of resource deposits a planet has is another important consideration for colonies. For each type of resource, you can say that you either:
- Don’t care if the planet has it or not
- Explicitly want the planet to NOT have it
- Want the planet to have X level of that resource or better
I have to admit, I’m pretty happy with the widget I came up with to show this – it’s simple to use (just click an icon) but I think gets the point across in an intuitive way, by highlighting and drawing a border around all the acceptable resource levels.
Other requirements
And, finally, we get to the stuff that’s most involved for the player to figure out without UI support – which planets allow you to install which special colony items? For example, the “Autonomous Mantle Bore” improves mining (so, you want good ore deposits) but can’t be used on a gas giant (for obvious reasons) or on habitable worlds (Domain-era safety interlocks!).
Originally, I had the idea of letting you filter for certain planetary conditions – ones that factor into item requirements. Similarly to resources, you’d need to be able to say “yes/no/don’t care”, rather than it being a simple two-state toggle for each condition, but that’s doable. So you might say “not habitable” in the conditions widget, and then click off gas giants in the top part of the filter, and then you’d see all the planets that can use an Autonomous Mantle Bore.
There are problems with that approach, though. There are *a lot* of planetary conditions to show here. If you just have a bunch of icons, it gets complicated trying to pick out the one you’re looking for, and there’s a real risk of running out of UI space to put them all, especially if you factor in mods. And many conditions are mutually exclusive – for example, cold, very cold, hot, etc – so if you’re showing them en masse, you’d want some way to handle that, too.
In addition, the player needs to be sure of what conditions the colony item actually requires. You might check the item’s tooltip, open up the planet search screen, check some boxes, go back to cargo to double-check the requirements, etc. It’s kind of a mess.
Items as search filters
The solution is probably obvious – just let the player select an item and filter the list to only show planets where that item can be used. There’s a lot less items than conditions, and you don’t have to worry about checking or mixing up the requirements – it’s a way better way to go.
So why *wasn’t* this obvious from the get-go, and why did I spent some time on the “conditions” approach? One of the reasons is that there are still a few planetary conditions you want to filter on, so I figured if you’re going to have a section for conditions, you might as well use it for more stuff. Another reason is that showing a list of colony items is a spoiler – seeing a Cryoarithmetic Engine in the planet search screen is just about the worst way to find out about it.
Plus, in the abstract, it “makes sense” to be able to, say, search for all planets that are “hot” or have “toxic atmosphere” or whatever. It’s kind of fun! It just doesn’t *directly* matter – it only matters as far as that condition affects the planet’s hazard rating and factors into what items you can use. So if we were making an abstract “search for planets with these properties” interface, searching for conditions would make a lot of sense. But we’re making a “find planets to colonize” interface, and searching/filtering on conditions doesn’t make sense here.
Showing a list of colony items is still a spoiler, but that’s easy enough to deal with – the items only show up on the list if the player is aware of them, using the same mechanism as unlocking items for the Codex. (Actually: I wrote this code prior to the Codex, and then retrofitted it to reuse the same parameters as Codex-unlocking. Or, perhaps, the Codex unlocking was an expanded version of this code. Either way!) The unlocks are persistent across saves, so you don’t have to do it every time you start a new campaign.
Cryosleeper and Hypershunt
These are both things you find somewhere in the Sector – a massive starship, and a megastructure – that give certain bonuses to colonies within a certain range from them.
For the Cryosleeper, there’s a checkbox to only show planets within range of one, and it only shows up once you’ve found one in your current game. For the Hypershunt, I originally had the same thing, another checkbox – but benefitting from the Hypershunt requires a “Hypershunt Tap” item to be installed at the colony, so it’s actually more compact to just use this item as a filter.
Filtering on conditions
And, finally, there still is a condition that would be nice to filter on – an Orbital Solar Array, which gives a bonus to food production, without being a resource deposit. There aren’t many conditions like this – in fact, just one, though mods could add more – so a separate section doesn’t make too much sense.
Thus: the “Items” section becomes “Other requirements”, and we put the Solar Array there; you can check it to only show planets that have.
Except, there was a bit of a visual problem with this. We’ve got a list of 3D-looking item sprites there, and a flat, square market condition icon looked very much out of place. What I’d ended up doing is adding some shading around the edges of the icon, to make the edges less sharp, and make it fit in with the colony item icons.
The screenshot below shows what it looks like with the harder edges – it’s the last icon in the “Other requirements” section. It’s a bit subtle, but you can compare it to what it looks like with the shading in any of the other screenshots. Also, something to keep in mind is the edges would be even more prominent in an icon that had brighter colors on those edges.
Filter preset
You can save and load a single filter preset, as well as reset the filter to its default state. I’m not actually sure just how useful this feature will actually be – well, the “reset” button seems handy, but I’m less certain about saving and loading a preset. But it doesn’t really take up any extra UI space, since that row already has the number of matches and the reset button, so, might as well.
(Speaking of saving and loading a preset, I’d also just recently added a somewhat hidden feature to the intel screen – you’ll be able to press Ctrl-S to save the currently selected set of tags, and Q to select those tags (or Shift-Q to add them to your current selection). That you can do this is explained in a loading screen tip, and in the Codex. Ideally I’ll figure out some place to put a UI element for it in the intel screen, but this seems useful enough to want to include regardless. Now then – back to the planet filter stuff!)
Modding
The filter is extensively moddable – mods might add different considerations for what makes a good planet to colonize, or perhaps even do something entirely different with. And, if the amount of stuff in the filter is too much to fit on the screen, it becomes scrollable – less than ideal, perhaps, but better than not fitting on the screen.
All in all – having more tools at my disposal, along with a better understanding of what the screen is actually for – I feel happy with how the new UI turned out!
And, for reference, here’s what the old/current-release UI looks like:
Faction screen
While I was in the area of the code, I also spruced up the faction screen a bit. Nothing too major – just made it center on the screen (like the planet list), added some borders around the text (to be consistent with how similar information is presented in the Codex), and dimmed the faction-button highlighting a bit. Probably the main thing here is that it now remembers the previously-selected faction when opening the screen.
Comment thread here.
Tags: colony, colony items, conditions, design, planets, UI