EDCD / EDDI

Companion application for Elite Dangerous
Other
442 stars 81 forks source link

Add scanned timestamps to void entries, after an FSSAllBodiesFound Journal event #2315

Closed Darkcyde13 closed 2 years ago

Darkcyde13 commented 2 years ago

What happens now

When out exploring, sometimes bodies are scanned in-game (usually by the initial auto-scan when in range) but they don't seem to get a corresponding Journal entry, and as such there is no timestamp for .scanned, and EDDI doesn't think the body has been scanned, yet it cannot be scanned again to obtain a timestamp.

What I'd like to happen

In these instances, I'd like the FSSAllBodiesFound event to auto-complete the .scanned timestamp for any bodies in the system with no timestamp currently assigned.

How it can happen

When this event happens, iterate through all bodies in the EDDI database for the current system, and add the current timestamp to any that are void/blank.

Example Journal event: { "timestamp":"2022-02-04T20:38:44Z", "event":"FSSAllBodiesFound", "SystemName":"HIP 22909", "SystemAddress":22793921692, "Count":19 }

I've just jumped to this system for the first time. It's not populated and some of the bodies auto-scanned. Although I'm not 100% sure exactly when this happened, as I tend to do the honk quickly, and it ends at almost the same time as the general auto-scan does. I then scanned everything else, but EDDI doesn't think I've scanned one star and five of the main bodies. Obviously I can't scan them again to get a timestamp though.

As the FSSAllBodiesFound only happens when everything has been discovered, it makes sense to just go over all the bodies and check that the scanned timestamp is set or not. If not, then just add the current time.

EDDI Version

EDDI v4.0.1

Tkael commented 2 years ago

In my experience there typically is a Scan event for auto-scanned bodies. Furthermore, if this is a previously unexplored system then what created the bodies in EDDI in the first place if not a Scan event? Did you map the bodies?

Would you please provide the full journal.log where this occurred?

Darkcyde13 commented 2 years ago

Yeah, this is what had me confused. It was my first visit to the system according to EDDI, and I did the honk immediately on arrival. I then opened up the FSS to start scanning, and saw that the gas giants and a couple of others were already scanned (showing as dots on the bar at the bottom).

After completing the system scan of all bodies, I ran some test code to see which had a valid .scanned variable populated. It listed the following as not having a timestamp: HIP 22909, 1, 2, 3, 4, 6. Additionally, the .scannedbodies and .totalbodies were 13 and 19 respectively. I've been randomly getting things like this for a while, but it doesn't happen too often. I just thought I'd mention it this time as it was so many bodies on this occasion. I did map body 5, a high metal content world, after I finished the system scan.

Here's the whole Journal from that play session. The relevant parts start at timestamp "2022-02-04T20:35:46Z". Journal.220204201957.01.zip

Tkael commented 2 years ago

I'm fine with making a change like you've proposed (the primary effect would be a change to the estimated value for scans from that system) but I'd like to understand a little more fully why we're seeing what we're seeing.

So it looks like this system had been discovered by other commanders before. Take body 1 for example: https://www.edsm.net/en/system/bodies/id/306074/name/HIP+22909/details/idB/3451677/nameB/HIP+22909+1

Note the distance... too far for an auto-scan. The distance is confirmed from bodies you did scan (about 1670 LS to body 1 a for example).

{ "timestamp":"2022-02-04T20:38:44Z", "event":"Scan", "ScanType":"Detailed", "BodyName":"HIP 22909 1 a", "BodyID":17, "Parents":[ {"Planet":14}, {"Null":13}, {"Star":0} ], "StarSystem":"HIP 22909", "SystemAddress":22793921692, "DistanceFromArrivalLS":1669.962770, "TidalLock":true, "TerraformState":"", "PlanetClass":"Rocky body", "Atmosphere":"", "AtmosphereType":"None", "Volcanism":"minor metallic magma volcanism", "MassEM":0.004426, "Radius":1150394.250000, "SurfaceGravity":1.332980, "SurfaceTemperature":295.408295, "SurfacePressure":0.000000, "Landable":true, "Materials":[ { "Name":"iron", "Percent":18.898674 }, { "Name":"sulphur", "Percent":18.550365 }, { "Name":"carbon", "Percent":15.598935 }, { "Name":"nickel", "Percent":14.294167 }, { "Name":"phosphorus", "Percent":9.986706 }, { "Name":"chromium", "Percent":8.499362 }, { "Name":"germanium", "Percent":5.501695 }, { "Name":"zinc", "Percent":5.135952 }, { "Name":"molybdenum", "Percent":1.234073 }, { "Name":"antimony", "Percent":1.163467 }, { "Name":"tin", "Percent":1.136606 } ], "Composition":{ "Ice":0.000000, "Rock":0.911257, "Metal":0.088743 }, "SemiMajorAxis":205591452.121735, "Eccentricity":0.000473, "OrbitalInclination":-0.893490, "Periapsis":111.863841, "OrbitalPeriod":111144.775152, "AscendingNode":166.076507, "MeanAnomaly":244.062098, "RotationPeriod":111149.494242, "AxialTilt":0.028585, "WasDiscovered":true, "WasMapped":true }

Your journal.log truly does truly seem to be missing the remaining bodies, despite

{ "timestamp":"2022-02-04T20:38:44Z", "event":"FSSAllBodiesFound", "SystemName":"HIP 22909", "SystemAddress":22793921692, "Count":19 }

Are you 100% sure that this was your first visit to the system? If you had partially explored the system previously then you might see this. Could you use Notepad++ to bulk search your journal logs with "Find in Files" and check for this? image

Are you 100% sure that you scanned all of the bodies? Could there be an FDev bug that causes FSSAllBodiesFound to trigger early?

Darkcyde13 commented 2 years ago

Yes, I'm sure all bodies were scanned. The FSS screen said 100% and there were no more blips on the scan frequency line.

But you may be right about it not actually being my first visit. That had occurred to me too. I was wondering if maybe it was a system I had visited way back near the start of the game, around 2014-2015, when system scanning was very different and you had to manually search the system visually. At least that's the only conclusion I can come to, barring any kind of bug.

I did a search of my Journals, and only found 64 entries for 'HIP 22909', all from that log I posted above. Nothing else was found in my remaining Journals, however, they only go back to the 14th April 2017. Any Journals between the release of the game and then, I must have deleted for some reason, most likely a reinstall in an attempt to fix something would be my guess, or that may have been when I last upgraded my SSD. Although, I could swear that I've had this also happen when I've been out exploring much further out, far beyond anything I would have done in the early years, but with no Journals from that time, and only a vague memory to rely on, I could easily be wrong.

I really need to slow down in my scanning as soon as I arrive in a system. I should probably start getting used to going into the FFS screen rather than doing the scan outside of it. Like you say, the 'missing' bodies are too far out for an auto-scan.

Still, if I did scan them sometime in the distant past, it would still be useful to add a timestamp to any that are missing one when a FSSAllBodiesFound event occurs. This way EDDI would know the system has been fully scanned, rather than thinking I still need to scan some of the bodies. I guess this would mean that in addition to the .scanned property for a body, the .scannedbodies property for systems would also need to be updated.

I'm not sure how to handle scanning a nav buoy though. I'm not even sure that would be affected by such a change. Currently, if I arrive in a populated system where all the bodies are already known (automatically in the Pilots Federation database and I don't need to do a scan), and if EDDI thinks I still need to scan everything, then I just drop out at the nav buoy and scan that, then EDDI thinks I've scanned everything. I guess this won't be affected, and may even be working in a similar way to what I've proposed above for other systems. Would I be correct in assuming that a FSSAllBodiesFound event only happens when you finish scanning a system, rather than when you scan a nav buoy? If I come across any today, I'll check myself.

Well, thanks for considering my suggestion. If I can provide anything else you may want, in an attempt to figure out what happened on my end of things, then please let me know and I'll see what I can do. :)

Edit: I finally found a populated system that had all bodies already known. I see that there is a 'NavBeaconDetail' event for scanning the nav beacon, so this confirms the FSSAllBodiesFound event does only happen when you scan all bodies in a system yourself.

Looking at the Journal entries for this, it did make me also think about what other information would be useful to add to the EDDI database on top of .scanned and .scannedbodies. I'd say it would be good if we could get whatever is missing, from EDSM. Assuming that data is in their database too, of course.

Tkael commented 2 years ago

A prior visit not captured by your journal records seems like it may be the most plausible explanation then. Thanks for checking, o7. I'll go ahead and make the proposed change for the next release.