Notice: SCANsat mod updates are now presented and discussed in this thread.
Download build 5 here.
Source code for the plugin lives on github.
Changelog post for build 5.
Changelog post for build 4.
Changelog post for build 3.
Changelog post for build 2.
Note for new users: This is a work in progress, and the current state of the plugin is different from the initial description. Please refer to the changelogs linked above to see what's changed so far. This mod is usable, but not finished.
Original first post:
I've been working on a mapping mod for a bit, and I'm now at a point where I'd say it's definitely not ready for release, but maybe ready for some feedback.
The main aim of this mod is that mapping should work as a game. Meaning, you should be able to put a mapping satellite in an orbit and get a reasonably useful map by playing normally, without long waits. It should be fun to watch how your satellite uncovers the map, but you should still have to work for it a bit if you want the map to be perfect. At the same time, all data is pulled from the game - "faking it" by just showing you parts of an existing map isn't acceptable. I also wanted to be able to have several different sensors that show you different things under different conditions, which is something I'm getting close to now. Unfortunately, if you haven't already guessed, all this meant realism has had a somewhat low priority so far...
So what does this do?
This is what the main UI looks like right now. Every part in this mod opens this UI if you enable it via the right-click menu or action groups.
In this particular example, you can see that I have three scanning vessels active. Number 3 is the active vessel, which is why it's green, and the abbreviations below the map tell me that it has both low- and high-resolution altimetry sensors active as well as a slope detecting sensor. Because they're green; you're probably noticing a pattern here. It doesn't have a biome sensor active, it doesn't have an anomaly sensor active, and it also doesn't have a BTDT sensor, which is another anomaly sensor that can also identify (as in, name) anomalies, but has to be very close to do that (i.e. on a lander or a rover, not a satellite). Oh, and if any of these tags were orange, that'd tell me I'm at the wrong altitude.
You can also see that these sensors cover a fairly large area of land - although the high resolution altimetry sensor covers a smaller area than the other sensors, which is why there are greyscale bands around my active satellite's track. The other satellite in orbit around Kerbin in this game only has a low resolution sensor, which is why its track is only greyscale. And lastly, the vessel named "Anomaly Scanner" is really a rover sitting near the KSC that has a BTDT sensor equipped, so it doesn't leave a visible track at all because this window currently only shows elevation.
Oh, and that red line shows update progress, because this map is continuously rebuilt line by line. It's not as slow as it sounds, I promise. I could probably make it update completely live too, but this way should give more constant performance (and I liked the look of it...).
Obviously there are two buttons here that you can click. The one that says "Forget Map" will reset all mapping data for this system. I mean it. It'll forget everything about whatever you're orbiting at the time.
The other one opens a larger map window. This is a part of that window showing a map of Eve:
No surprise here. It's a larger map with more detail than the smaller map. It takes a few seconds to render, because this is when the mod actually scans the terrain. It uses the same coverage data as the small map, meaning you'll see tracks of your satellites here too. But since that coverage data is recorded at a much lower resolution than this map, edges will be jaggy.
The small square that looks like a magnified view of the two craters to the left of it is in fact a magnified view of those craters; you get it by right-clicking somewhere. If you right-click inside the magnified view, it'll magnify it even more, too. Good thing that satellite had a high resolution altimetry sensor on it, because otherwise this zoom would not be so useful.
The text at the bottom refers to the mouse position within the map (or the magnified bit). Green means there's data of that particular type, grey means there's no data of that type, and red means there would be data if the game had that kind of data (Eve does not have biomes, but if it ever gets biomes, then I would be able to see the biome in this location). The number is terrain height under the mouse cursor, again good thing that I had a high resolution sensor, because otherwise this number would be rounded to the nearest multiple of 500.
The buttons are pretty self explanatory, they switch display modes. You can also use them to refresh the map if your satellites have scanned some more land. The greyscale button actually affects all maps, or at least I hope it does.
I need to say something about biomes here - you've no doubt seen the biome map of Kerbin in that blog post that introduced biomes. That map is exactly what I can get from the game, too. I didn't really like the colour scheme, so biome maps rendered by this mod look different. Here's one showing Mun:
The actual biome map from the game is very colourful, with lots of brightly coloured blobs of biome. Unfortunately, there is a small problem: There is a function in the API that seems to be made for finding the biome at a given location, but I couldn't figure out how to use it without printing debug messages to the screen. So I implemented my own interpretation of "closest map color", meaning biome edges can be inaccurate on these maps.
Also, since I mentioned anomaly detection before, here's the difference between the anomaly sensor you put on a satellite and the BTDT sensor:
As you can see, the BTDT sensor on my rover I mentioned earlier has correctly identified the KSC, while the Island Airstrip nearby still shows up as a generic "Anomaly". (Note, these names are pulled from the game too, if you don't like the lack of spaces or the extra zeroes in some, that's not my fault ).
Oh, and another thing about this window: Every time a map is fully rendered, it's exported as a PNG image to the PluginData folder inside the mod's folder. Existing images get overwritten, so if you want to keep anything you should probably copy it somewhere safe.
Some other things that I think are nice about this
- Scanning a planet can be completed in a few minutes if you set up a good orbit, or throw enough satellites at the problem, and time warp for a bit. This mod doesn't actually interpolate positions during time warp, but with the current field of view sizes, I've had good results from up to 1000x time warp around planets like Kerbin. Faster time warp works too, it just doesn't paint recognizable tracks anymore.
- All active scanners scan at the same time, including those on vessels in different SoIs. You don't have to keep your satellite as the active vessel until you're done, as long as your other vessel also has a part from this mod that can open the mapping interface. (The non-scanning one counts.)
- Watching your satellites make pretty tracks doesn't use too much processing power and shouldn't slow anything down.
- Works on Macs, too! At least on mine, anyway.
So, what's the catch?
Well, near as I can tell, this mod is actually working as described, and usable even on my Macbook that struggles with running KSP in the first place. But there are some things that are just unfinished or bad:
- All the parts in this mod currently use the same terrible mesh that I made to find out how to get a mesh into a mod, with a texture I made to find out how painting textures works in blender. I don't know how soon I can make the actual models. At least it looks vaguely like a sensor array. But it's not pretty, and it's not animated.
- It's not properly integrated with career mode yet. Currently, the parts should be hooked into "Science Tech". Obviously, the plan is that the better sensors should come much later. But those sensors didn't even exist two complete refactorings ago.
- Parts don't use electrical charge yet. This is never going to be perfect, as I can't drain charge on inactive vessels. But I still want it at least for the active one.
- I'm also hoping that eventually, scanning planets and in particular, discovering anomalies, can generate science, but I don't even know where to look for that yet.
- Map sizes aren't configurable yet.
- The small updating map still needs a way to show progress for sensors other than altimetry.
- Only scanning vessels (and the active vessel) are currently displayed on maps.
- All the map markers are basically text labels that start with an x or an o, which means they're all potentially off by a few pixels.
- Scanning isn't very realistic, and I don't know if I can ever change this because it's really important to me that this works as part of a game. One thing I'd like to do at some point is make the field of view dependant on the altitude of the scanning vessel. But the fairly low resolution coverage map limits this somewhat. And the amount I'm willing to blow up persistence files limits the resolution of that coverage map.
- Scanning (basically) only happens while the mapping interface is open. It wouldn't be too hard to make it go on while you're doing something completely unrelated on a different vessel, but I haven't gotten around to it yet.
- There are probably a bunch of bugs in the code too, since I haven't touched C# in about ten years. (You can probably tell...)
- There's even at least one bug visible on one of the pictures in this post... doh.
What I'm looking for here is primarily feedback on whether I'm on the right track with my ideas on making this a "gamey" feature. Also, I haven't been finding too many NullReferenceExceptions lately, so that probably means it wouldn't hurt if more people could try to use it.
To anyone brave enough to try this, thank you, and I hope it's not entirely useless.