Elite Observatory - Search your journal for potentially interesting objects, or notify you of new ones on the fly while exploring!

rootsrat

Volunteer Moderator
What even is this?
Elite Observatory is a small tool which can read and monitor your Elite Dangerous journal for objects which might be "interesting" so you can go take a closer look.

What is "interesting?"
A lot of things, potentially. Currently there are built-in checks for:

  • Landable and terraformable (might not be interesting to look at, but you can go there and dream of what might be!)
  • Landable with atmosphere (I know it can't happen.... but what if it did?!)
  • Landable high-g (>3g)
  • Landable large (>18000km radius)
  • Orbiting close to parent body
  • Shepherd moons (orbiting closer than a ring)
  • Close binary pairs
  • Colliding binary pairs
  • Moons of moons
  • Tiny objects (<300km radius)
  • Fast and non-locked rotation
  • Fast orbits
  • High eccentricity
  • Wide rings
  • Good jumponium availability (5/6 materials on a single body)
  • Full jumponium availability within a single system
  • Full jumponium availability on a single body (pretty sure this can't happen, but I'm watching for it anyway)
These checks are all individually toggleable if there are some you don't want to see.

I don't care about any of that!
Well, you can add your own. A set of user-defined criteria can be created so you can find the things you like. The caveat here is that I have not built a GUI for it, and the system for reading them is very crude at the moment (I'm working on it), so you'll be awkwardly editing xml by hand. There is a description of how to do so in the readme on github, which I will link below. If you need more help, give me a shout!

You said it monitors, do I have to alt-tab constantly to check on what has been found?
No! You can enable pop-up notifications or text-to-speech!

This sounds vaguely familiar...
Well, it should. /u/imathrowback on reddit created a very similar tool a few months ago, which served as my inspiration, so I'd like to thank them for that. They also said at the time: "maybe some nice soul will copy it and make it better and awesome"
I don't know how nice I am, or how awesome this is, but here you go!

What does it look like?
A little like this: Source: https://i.imgur.com/1CLqRT1.png


Where do I get it?
Behold: https://github.com/Xjph/EliteObservatory/releases

A few people I know have been testing earlier versions, but I've been waiting on getting custom criteria implemented before doing a wider release.

What do I need to run it?
Probably nothing you don't already have. Strictly speaking it requires .NET 4.5, but if you don't have that you're probably not running Elite either.

Is it safe?
Well, I say it is, but it's up to you whether or not you trust that. You can read the source on github if you like, and to be extra safe build it yourself.

Sure, let's take a look at that source!
https://github.com/Xjph/EliteObservatory

...
Yeah, there's some stuff in there I'm not super proud of. None of it is malicious though...

This is broken garbage!
Report a bug! Either on github or here is fine.

I have an idea!
Let me know! Or submit a pull request! Or fork the project and just do it all yourself! Or rewrite it all from scratch! Or fail to muster up the motivation and do nothing! I'm fine with all of those options.

Looks very interesting, getting it now!
 
Just noticed something with the latest version, I don't know if it was there before, I don't remember it. Firing a probe into a ring will result in the warning of "nested moon."
Weird, I'll have to check what's going on there. I thought I was ignoring ring scan events completely, but evidently not.

I wonder if there are any ringhuggers with significantly inclined orbits (so you can get a really good view of the primary). Also I think I'd go with a triggering distance of 5x the moon's radius rather than 10x (is there a way to modify existing hardcoded criteria?)
That's definitely an interesting thing to look for. Best you could do right now is add a check for being highly inclined via custom criteria and watch for when a moon triggers both ringhugger and the inclined check.... but a check for just highly inclined would fire all the time on stuff that wasn't particularly interesting. All the more reason I need to expand the custom criteria capabilities.
As for distance, I tried 5x first and found exceedingly few qualifying moons in my existing logs so loosened it up a bit. As I said before, if it seems to trigger on things that you don't think are close enough to count let me know and I'll pull it back a little. For reference, the separation between moon's semi-major axis and the ring outer edge in the screenshot I posted is about 8.9x the moon's radius:
2019-09-29 00:56:11 - Eowyg Brai ZG-W c18-5 2 a - Landable - Close ring proximity - Orbit: 149,597km, Radius: 1444km, Distance from ring: 12,488km
 
I wonder if there are any ringhuggers with significantly inclined orbits (so you can get a really good view of the primary). Also I think I'd go with a triggering distance of 5x the moon's radius rather than 10x (is there a way to modify existing hardcoded criteria?)
As an additional follow-up, I just added inclination to the detail field for ringhugger as a test and out of nineteen found in my logs there are four that have inclinations of more than 10°, which should give decent views as long as you're not there while it's passing the ascending/descending nodes. Inclination isn't a value you get for rings, so I'm assuming it's always zero, otherwise this is largely meaningless. :D

Also, with regard to modifying existing hardcoded checks, you could grab the Elite Observatory repo on github and run it using the free Community edition of Visual Studio instead of the precompiled exe. I know that's not a great answer if that's an area you're not familiar with, but it's an option.
 
Just noticed an issue where proximity auto-scans are sometimes missed if several come in at once (jumping into a system with multiple inner planets close enough to prox-scan, for example). Wanted to let you guys know it's a known issue in case you run into it as well. Hopefully I'll have it fixed soon.
 
It found me a very close ringhugger moon last night - only about 1.5 moon radii from the ring edge! (you can almost see the ring particles at the edge!)
145710
 

rootsrat

Volunteer Moderator
@Vithigar - thank you VERY much for this tool, Commander! It's an amazing application on it's own, but it's true potential is unlocked by the custom alerts. This makes it very powerful assistant for an explorer. Chapeau bas, hats off and all that jazz :)

Talking about custom alerts... is there any way of making it alert me to a landable body with a surface temp BETWEEN certain values (200 - 500 specifically)? I manage to get an alert for a landable above 199 K, see below, but no matter what I do, I can't get it to report only on bodies >199 AND <501. I know I can set 2 separate ones, but then it will also alert me for anything that meets only 1 of the 2 Criteria and as far as I'm aware we're not able to combine Criteria?

Here's my code for Landable >199 K. Can you suggest anything?

Code:
<ObservatoryCriteria>
    <Criteria Comparator="Greater" Value="0">
        <Operation Operator="Multiply">
            <FirstValue Type="Operation">
                <Operation Operator="Subtract">
                    <FirstValue Type="EventData">SurfaceTemperature</FirstValue>
                    <SecondValue Type="Number">199</SecondValue>
                </Operation>
            </FirstValue>
            <SecondValue Type="EventData">Landable</SecondValue>
        </Operation>
    <Description>I found a landable body with temperature greater than 199 Kelvin, Commander.</Description>
    <Detail>
        <Item>Landable</Item>
        <Item>SurfaceTemperature</Item>
    </Detail>
    </Criteria>
</ObservatoryCriteria>

I also don't quite understand what the Detail section is for exactly...
 
Last edited:
@Vithigar - thank you VERY much for this tool, Commander! It's an amazing application on it's own, but it's true potential is unlocked by the custom alerts. This makes it very powerful assistant for an explorer. Chapeau bas, hats off and all that jazz :)

Talking about custom alerts... is there any way of making it alert me to a landable body with a surface temp BETWEEN certain values (200 - 500 specifically)? I manage to get an alert for a landable above 199 K, see below, but no matter what I do, I can't get it to report only on bodies >199 AND <501. I know I can set 2 separate ones, but then it will also alert me for anything that meets only 1 of the 2 Criteria and as far as I'm aware we're not able to combine Criteria?

Here's my code for Landable >199 K. Can you suggest anything?

Code:
<ObservatoryCriteria>
    <Criteria Comparator="Greater" Value="0">
        <Operation Operator="Multiply">
            <FirstValue Type="Operation">
                <Operation Operator="Subtract">
                    <FirstValue Type="EventData">SurfaceTemperature</FirstValue>
                    <SecondValue Type="Number">199</SecondValue>
                </Operation>
            </FirstValue>
            <SecondValue Type="EventData">Landable</SecondValue>
        </Operation>
    <Description>I found a landable body with temperature greater than 199 Kelvin, Commander.</Description>
    <Detail>
        <Item>Landable</Item>
        <Item>SurfaceTemperature</Item>
    </Detail>
    </Criteria>
</ObservatoryCriteria>

I also don't quite understand what the Detail section is for exactly...
Okay, so, yes... but it's wacky. You've definitely highlighted a shortcoming of the criteria and I should implement a "between" comparator of some sort. In the meantime we can brush off some jr. high level math to make it work.

We find a quadratic equation with x intercepts of 200 and 500 and then check for all places it evaluates below zero. Specifically x²-700x+100000, or written in my janky reverse-polish-esque criteria format:

Code:
<ObservatoryCriteria>
    <Criteria Comparator="Less" Value = "0">
        <Operation Operator="Multiply">
            <FirstValue Type="Operation">
                <Operation Operator="Add">
                    <FirstValue Type="Operation">
                        <Operation Operator="Subtract">
                            <FirstValue Type="Operation">
                                <Operation Operator="Multiply">
                                    <FirstValue Type="EventData">SurfaceTemperature</FirstValue>
                                    <SecondValue Type="EventData">SurfaceTemperature</SecondValue>
                                </Operation>
                            </FirstValue>
                            <SecondValue Type="Operation">
                                <Operation Operator="Multiply">
                                    <FirstValue Type="Number">700</FirstValue>
                                    <SecondValue Type="EventData">SurfaceTemperature</SecondValue>
                                </Operation>
                            </SecondValue>
                        </Operation>
                    </FirstValue>
                    <SecondValue Type="Number">100000</SecondValue>
                </Operation>
            </FirstValue>
            <SecondValue Type="EventData">Landable</SecondValue>
        </Operation>
        <Description>Landable body between 200K and 500K</Description>
        <Detail>
            <Item>SurfaceTemperature</Item>
        </Detail>
    </Criteria>
</ObservatoryCriteria>

Also, multiply the whole thing by the landable flag so it zeroes out if not landable. Your algebra teacher told you this would be useful some day, and you didn't listen!

In all seriousness though I should make that simpler.

As for the "detail" field, it's optional and used if you want to see the specific numbers in the output table. The output of the above criteria (with everything else disabled) looks like this:
145927


Edit: And I forgot to add the "landable" part. Updated.

Edit: It occurs to me that I could've used the simplified form (x-200)*(x-500) instead of x²-700x+100000. The result is the same, but I suppose the former is easier to write and modify if you want to alter the range.
 
Last edited:
you know those scenes in scifi show where the genius explains everything and everybody looks at him like he's speaking a different language? thats how i feel with programmers. XD i look at all that and it might as well be hieroglyphics. i wish i had the patience to learn some programming.
 

rootsrat

Volunteer Moderator
Okay, so, yes... but it's wacky. You've definitely highlighted a shortcoming of the criteria and I should implement a "between" comparator of some sort. In the meantime we can brush off some jr. high level math to make it work.

We find a quadratic equation with x intercepts of 200 and 500 and then check for all places it evaluates below zero. Specifically x²-700x+100000, or written in my janky reverse-polish-esque criteria format:

Code:
<ObservatoryCriteria>
    <Criteria Comparator="Less" Value = "0">
        <Operation Operator="Multiply">
            <FirstValue Type="Operation">
                <Operation Operator="Add">
                    <FirstValue Type="Operation">
                        <Operation Operator="Subtract">
                            <FirstValue Type="Operation">
                                <Operation Operator="Multiply">
                                    <FirstValue Type="EventData">SurfaceTemperature</FirstValue>
                                    <SecondValue Type="EventData">SurfaceTemperature</SecondValue>
                                </Operation>
                            </FirstValue>
                            <SecondValue Type="Operation">
                                <Operation Operator="Multiply">
                                    <FirstValue Type="Number">700</FirstValue>
                                    <SecondValue Type="EventData">SurfaceTemperature</SecondValue>
                                </Operation>
                            </SecondValue>
                        </Operation>
                    </FirstValue>
                    <SecondValue Type="Number">100000</SecondValue>
                </Operation>
            </FirstValue>
            <SecondValue Type="EventData">Landable</SecondValue>
        </Operation>
        <Description>Landable body between 200K and 500K</Description>
        <Detail>
            <Item>SurfaceTemperature</Item>
        </Detail>
    </Criteria>
</ObservatoryCriteria>

Also, multiply the whole thing by the landable flag so it zeroes out if not landable. Your algebra teacher told you this would be useful some day, and you didn't listen!

In all seriousness though I should make that simpler.

As for the "detail" field, it's optional and used if you want to see the specific numbers in the output table. The output of the above criteria (with everything else disabled) looks like this:
View attachment 145927

Edit: And I forgot to add the "landable" part. Updated.

Edit: It occurs to me that I could've used the simplified form (x-200)*(x-500) instead of x²-700x+100000. The result is the same, but I suppose the former is easier to write and modify if you want to alter the range.

How did you... I can't even... I mean I tried to und... I uh...

Sorry, that's all I've got for now.

Also, thanks! :D
 
just an idea... how about adding a button to export results of actual filter to file?
Not a bad idea. As Varonica pointed out you can select and copy/paste for now, but I'll see about adding an export soon. Won't be anything fancy in terms of file format, probably tab-delimited text.
 
Top Bottom