This thread has been quiet for a while so I wanted to provide an update on what's been happening with Observatory.
I've mentioned a couple of times before that I was hoping Observatory would get to a stable place so that I can focus on a complete rewrite for the next version, and that does indeed seem to have happened! Unfortunately those of you with any outstanding issues or feature requests are going to have to wait for the rewrite to see them. On the upside, progress on the rewrite is proceeding!
The new Observatory will be a very different creature than the current version, though feature parity (and then some) with v0.5.20.153
is something I want to have before release. For those who haven't been following elsewhere here's some of what you can expect to see in the new version:
- Completely new UI
- Option to run without UI (console application)
- Native linux build (console only, see below)
- Improved support for legacy journal data
- No longer ignores data earlier than Elite Dangerous version 2.3.01
- Improved performance
- Probable, though unconfirmed, this will be on account of System.Text.Json's vastly faster JSON reading speed over Newtonsoft.Json.
- Complete overhaul of custom criteria into something easier to write
- Plugin Support
To elaborate a little on that last point, the new version of Observatory is being built in a modular fashion. The "core" Observatory program will actually do very little on its own. ObservatoryCore contains the journal reader and monitor, event handling, a simple console interface, and will load and manage plugins. All end-user functionality will be provided by plugins, with several included in the initial release. The expected list of initial included plugins is:
- ObservatoryUI
- Provides the window based UI for end users, as well as desktop notifications
- ObservatorySpeech
- Text-to-speech notifications
- ObservatoryOverlay
- "In-game" notification overlay
- ObservatoryExplorer
- The current main functionality of Observatory. Reads scan events in the journal and checks for interesting objects
- ObservatoryProspector
- First non-exploration focused functionality. Monitors prospectors while mining and notifies of what they find based on user criteria
Unlike ObservatoryCore, not all plugins will have a native linux version, or at the very least will require separate versions. At launch I do not expect the UI, Speech, or Overlay plugins to work in linux.
Of course a big bonus of having plugins is that other people can create them! I will be providing an ObservatoryFramework library which can be used to write plugins in .NET Core. ObservatoryCore will be able to read and deserialize the entire Elite Dangerous journal into .NET classes provided in the framework, no one writing an Observatory plugin should ever need to read, parse, or otherwise think about JSON. Plugins will be dynamically loaded on startup by ObservatoryCore, and using interfaces provided by the framework are expected to add themselves as event handlers for the types of journal events relevant to their functionality, while in turn ObservatoryCore will have its own event handlers which will listen for notification and informational events from the various loaded plugins.
Naturally the ability to dynamically load and run arbitrary .NET code is potentially risky business, so all "official" plugins which I build and endorse will be signed, and ObservatoryCore will provide a warning when unsigned plugins are loaded.
On the horizon this might be extended (via a plugin!) to a simple scripting language like Lua to allow users to quickly create simple plugins without having to deal with the hassle of building/compiling a .NET project.
If you have any questions or concerns about this just let me know. I'd also like to take this opportunity to thank everyone for their support, kind words, and awesome screenshots. Keep it all coming!