New informational map overlays (Patreon)
Content
Oops, got a little sidetracked :P
So a collection of map overlay ideas has been building up in my notes over time, and last week I felt like experimenting with one of them for a bit. Well that started to turn out fairly well, and I ended up continuing along with several at once.
While I had intended to continue with the rebalance work following the last stream, instead at this point we have some new features to play with: a more powerful volley data visualizer, a map ruler for measuring distances, and robot FOV overlays...
Ruler Overlay
This all started with thinking about a way to help measure distances, and not just from Cogmind to another point, but from anywhere to anywhere else. Enter the new ruler overlay:
The original primary way to measure a distance would be to enter targeting mode and use the R value indicated in the Volley window. Indirectly it's also possible to get this info using the range circle that appears when hovering over a weapon or some utilities, or use the toggle animation accompanying some utility effects. None of these approaches are suitable for general use, though, nor can the Volley window be used to measure ranges while using a melee volley. Not to mention all of those methods only really work for getting distances from Cogmind rather than between two other points.
As you can see above, the new ruler overlay shows the distance to every other point from wherever the cursor is positioned. It's just an overlay, so of course equally compatible with keyboard mode:
In terms of visual representation, ranges were too cramped to print out in full, so I decided on the alternative of using double digits only for the thresholds--multiples of ten, which makes the whole thing much more readable. I mean it's still a jumble of numbers, but at least pretty quick to read and very informative :)
I spent a lot longer designing how this would look (and animate) than actually implementing the underlying functionality, which is simply a bunch of range calculations from an origin :P
The ruler overlay is activated with Shift-Alt-x (mouse toggle still to come), and since it's not modal or anything, just an overlay, technically you can continue playing while it's active, although naturally it covers up a lot of important info!
Do it for the cool (or crazy!) factor?
Terrain Destructibility
A common question while playing is "can I destroy that piece of terrain?" (wall, machine, etc...). This usually involves checking the armor and resistances against your current (potentially modified) volley damage, and although it usually doesn't take all that long to figure out the answer, crunching data is what computers are good at, so... now I've mostly automated that process with a single button ;)
This feature is integrated into the volley range visualizer, which now in addition to showing the range(s) of your active weapons, will also highlight in red the foreground of visible destructible terrain depending on whether or not you can destroy it.
Even better, it also checks your inactive weapons and looks through your inventory for other weapons that might still be able to destroy terrain and gives it a different color glow (yellow).
Here you can see it in action, where the Assault Rifle isn't capable of taking any of the machines, the Beamcaster can only destroy one, and none can destroy the Fabricator (thus it always remains blue):
The calculations generally take into account all applicable sources of damage modification, e.g. active utilities, current momentum, resistances, etc. The appearance of terrain you don't likely have the means to destroy at the moment remains unchanged. Note that even in such a case, it may sometimes still be possible to destroy the terrain using other means, since the system does not take into account inactive utilities or those in inventory, special weapons, the environment, or other means to creatively destroy terrain, but it is a useful way to quickly confirm that you already do have the capability.
FOV Overlay
This is the most (okay, only :P) controversial of the bunch, not necessarily because players other than me will be against it, but anyway we'll get to that after I've introduced what this is.
Shift-Alt-v toggles robot FOV overlays, allowing you to identify every cell that each enemy can see. All the FOVs are combined unless examining a single robot, in which case it only highlights those visible to that exact robot:
Another example in ASCII+keyboard mode, also tabbing around to different robots including even non-hostile bots (neutral FOVs appear gray, and ally FOVs appear blue):
Note that object quick labels are not active in this mode, since the main intent is to observe the area covered by FOV, and having labels pop up interferes with that purpose.
The visualizer also takes into account active Cloaking Devices, using darker shading to represent the FOV reduction effect:
Nifty, eh? Not so fast! This is an experimental feature which may not actually be in the final version...
My biggest concern is that this has the potential to really change the feel of the game in a lot of situations. Where without this information you're kinda guessing at the edges of enemy FOV (especially due to the effects of machine obstruction) and maybe have to deal with the consequences of a surprise spot, always knowing exactly what visible enemies can see takes some of the suspense out of those moments.
There's also the other concern that when people can see FOV for all bots, they might not understand or like some of the results and report them as bugs, when that's simply nuances behind how the system designed.
One of my original concerns, that displaying robot FOVs would be too slow, isn't quite as big a problem as it would've been back in the early days of Cogmind development when computers were slower, but it's a still a very processing intensive overlay to calculate given all the variables, at least if there are many robots in sight. I did do some optimizing and it's within acceptable bounds for most cases now.
Then there are also the logic issues. Unless I put a huge amount of time (and program memory) into building a secondary world data and FOV system around what the player remembers rather than the actual map layout, the current approach can sometimes reveal information you shouldn't actually know (e.g. missing walls, open doors, and various other situations).
Obviously on the plus side having complete FOV data might make for some interesting precise stealth planning, but you can get a lot of those moments just fine without it, and I do feel something is lost by showing everything. Unlike the ruler and terrain destructibility, this is not pure QoL--it can actually have a significant effect on gameplay and the whole feel of the game.
We've done pretty well with Cogmind's existing system of hidden FOV for years, so I think this feature might end up getting canned, but I'm willing to experiment with it and let everyone else here try it out for fun and science, so it'll be included in the next release regardless.
Next up: More actual rebalancing work (the process is going well, I think!) and a new prerelease to test with these and other features.