So I arrived at what I think (well in a more polished state) to be the solution to the problem of "I cannot even see the battlefield because planets are planets" First a video, after that a wall of text to explain some things: It's mostly dirty code with a ton of hacks in it to make it does what it does, so it has a lot of edges atm. It sort of is borderline for coherent performance wise as well. The cpu load when the zoomed out view is shown is 20-30% higher compared to without it. However don't misunderstand the little jumps the units on the map make, the unit positions are updated at fixed 4 fps. I could make them update faster, but I rather do it a little slower from the start then to break in once there are a lot more units. I feel 4 fps is enough anyway, the big map is not about totally accurate positions. It is sorta playable though. Still quite rough around the edges, especially switching between planets (also while making the video I noticed that I somehow failed when I made the t2 air factory svg icon xD), but I'll be able to smooth a few more things over. But it shows what I first imagined when I heard the words "multiple planets" and "strategic zoom" together in one sentence somewhere during the kickstarter. Imagine how some part of me dies every day because instead PA just gave up on it completely and lets people aimlessly wonder around planets. Obviously what I imagined back then was an implementation in native code that would not overlay an ugly svg rendered graphic but instead "unfold" the planet itself into a projected view and be a lot more "fluid", but oh well this is all I can do without godlike assembler abilities. There probably are some ways to smooth the svg stuff like that as well, but I doubt the cpu is fast enough for fancy transitions and animations, so it'll stay a bit rough. So far the selection stuff is still a bit rough (well everything is), I plan to add features that allow to show only specific types of units and only select those. So a quick press of a button will allow to select all air units or the like by making a box on the zoomed out view. I already can click the icons and have a pixel perfect reaction to it. So you can actually click the icons if you want. Unlike in PAs normal view with normal icons where selecting a single dox via a click is practically impossible, @jables I still have lots of ideas to test. I'd like to display stuff like half finished buildings, pings, etc. So far you can only select units and give move commands, but I will pretty surely add the ability to map ping and maybe I'll also allow placing a building on the minimap, though that will obviously be pretty inaccurate.To quickly place a radar or similar it would work however. Also I am not very happy with how it shows multiple maps when you zoom out so far. I am probably gonna change something about the size differences between the maps and how they are placed in the future. I might do away with the concept of having a focused planet when zoomed out completely. When zooming in on a location the camera is also a bit rough. The camera api is limited so what I do is that when you zoom in on some location I start a quick loop in the background that basically forces your zoom in fixed on that location. Until you wait a second or you press down middle mouse you won't be able to move the camera around by zooming in on some point of the planet. It's fixed on the point you hovered over with your mouse on the zoomed out view. To get the unit positions I am still using access to the server memory. Next week I'll probably look into trying to get the data I need from the client. That might have the added advantage that it handles fog of war for me. Atm I only show the units of the player, not enemies. I could show enemies -all of them- or implement my own fog of war implementation and before I do that I will look into the memory of the client instead, because I will have to do that anyway if I want to make this a "UI" mod. So much to improve, but I guess the idea becomes clear. We'll see if I can manage to make this into something usable. I like the results so far. Oh also on the topic of map distortion that I guess was one of the reasons PA does not have this kind of thing: Yeah it is a bit weird when you tell a plane to fly somewhere and instead of the "obvious" direct path it instead flies over some edge. I guess showing the path it will take on the map would be an advantage to make way more clear what will happen, for planes that fly direct lines I might even be able to do that. For ground units that follow complex terrain.... maybe if I have a few more month I can figure out how to read the path the unit has planned to take somehow. Though since not even the client shows that in any form I guess that would really force me to access the server, which is kinda defeating the point of a UI mod. Anyway I don't think the drawback of the projection is that big. Yes it is a bit harder than on flat maps. But that is the nature of playing on planets and I think a projected full overview of everything is way better than no overview at all. tldr: Once I imagined PA would have a zoom like this, obviously a lot more polished than my hacky version. lots of fun stuff with projected maps. I can select units, order them around and see everything that happens on all planets. Lots of rough edges to fix and lots of ideas to allow for even more control over stuff. yey fun
Still working on this, took some time to clean up mess and do a rewrite of everything as well as optimize things to "work" (playable yes. Completely fluid... only with a single planet and limited unit counts), assuming you have a free extra cpu core. On release I plan to have: - pixel perfect selection of icons, even when making a box selection (works) - show icons, indicating selections as well (works) - show command lines (atm a little rough, the release version will color depending on command type and use little line segments to follow the planet curvature) - give commands on the map (move works, the others are mostly easy to implement. Not sure about placing buildings yet) - show hp bars (data exists, just need to draw a few little green bars) - show where your camera is on the minimaps (works) - make settings on what a box selection on the big map will prioritize, see in the top left corner of the screenshot (works, misses hotkeys) - the selection priority setting also controls the ordering of icons, higher priorities are drawn on top of others (works) - zoom in on locations of the maps (works) - partially support unknown maps. Mex and Control points are displayed on them as well as all icons and stuff. (works, sadly I've not yet understood how to get information on land/sea, though I have an idea for the mid term future.) - scale the whole map UI depending on your window size. (works) -automatically determine decent configurations of the maps, so apart from optional rotation you dont need to do any configuration for the maps (works) - use a little pip as preview for the big map when in "show only big map" mode. (works) - show pings (TODO) - show important alerts (TODO) - eat cpu, memory and completely circumvent network optimizations that would stop unit position updates on planets you are not currently viewing by adding extra gpu load (works...) The memory reader works 100% client side, but only on Windows x64 and is likely to only work if you have fancy security features like ASLR disabled. I think on average I needed to do fixes to the reader on every 3rd patch or so. Not every patch breaks it, but some do.
This is 2015, ASLR support isn't fancy any more, it's what I'd say is a required baseline feature of any modern program
Well PA normally doesn't have it and I think on windows the default setting is to only enable it on executables that have some flag set.
Regarding pings, would it be possible to give special ping icons that last longer to important alerts, such as "Enemy Commander Spotted" and "nuclear installation/anti nuke installation/umbrella/holkins found"? A new feature that would be very handy is a "permanent marker" ping a player could place himself on the map. For example, say I suicide scout an enemy planet with pheonixes, and I find a vulnerable patch of power gen without an antinuke. I could place a "permanent marker" ping to the spot I want to launch a nuke on later without worrying about forgetting where I planned to send that nuke. Permanent markers could also serve to remind oneself as to where commanders were last spotted, chokepoints, T2 factories, etc.
All possible, but no time to implement anything at all atm. I would also add new features to the UberMap, not the AlertsMinimap. I still keep this one running, but it is the fallback. Dunno right now how well the memory reading part of the UberMap works and I have a todo about testing how it behaves when a user just uses it without the memory reader. I guess midterm I will make it that the ubermap with memory reader will be very similar to the AlertsMinimap, so they will become one mod.
Disabled GeoMapper as this mod is obsolete (if the actual alertsminimap isn't already disabled I'll disable that too when I get to it)