Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danikaze/eddt
Provide real time information using the Elite Dangerous Journal files
https://github.com/danikaze/eddt
elite-dangerous obs-studio
Last synced: about 1 month ago
JSON representation
Provide real time information using the Elite Dangerous Journal files
- Host: GitHub
- URL: https://github.com/danikaze/eddt
- Owner: danikaze
- Created: 2020-07-25T09:31:40.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T12:29:07.000Z (almost 2 years ago)
- Last Synced: 2023-03-03T01:05:47.454Z (almost 2 years ago)
- Topics: elite-dangerous, obs-studio
- Language: TypeScript
- Homepage:
- Size: 1.77 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# EDDT
**_Elite Dangerous Desktop Tools_** is just a small app to detect and extract changes from your running session of the game by listening to changes in the game journal.
## Installation
[Download](https://github.com/danikaze/eddt/releases/latest) the installer and execute it. It will automatically install the application in the `%USERPROFILE%\AppData\Local\Programs\eddt` folder and create a Desktop shortcut.
It can be uninstalled as a regular Windows application, from the `Add or remove programs` menu.
**Alternative:** Download the unpacked version, unzip it and execute it from your preferred location without installing it.
## Architecture
All the processing is split in several phases.
There's a singleton [EventManager](main/ed/event-manager.ts) and a singleton [DataManager](main/ed/data-manager.ts).
- The `EventManager` is listening to the Elite Dangerous Journal file and triggers [events](main/ed/events.ts) when they happen.
- The `DataManager` listens to those events through the [EventProcessors](main/event-processors) and update the _data library_, which is accessible from other parts of the code as well. When any data is updated, an event is triggered so actions can be taken.
- The next step is done by the [InfoGenerators](main/info-generators), which create texts that can be used some way (usually piped to a [file writer](main/outputters/write-file.ts) instance)
- The last step is done by the [Outputters](main/outputters), which accept strings (provided by the `InfoGenerators`) and do something with them, so they are usable by external programs (such as [OBS](https://obsproject.com/) with a _Text Source_ reading the contents from file).### Notes
`DataManager` listen to game Events (triggered by `EventManager`), and since those Events could affect more than one data at the same time, the events triggered by the `DataManager` are done after all the updates are finished, providing as well the timestamp, so the `InfoGenerators` don't run several times for the same update.
Some `Outputters` could act as a _middle-ware_ for `Outputters` as well. (i.e. the [Rotator](main/outputters/rotator.ts) accepts several `InfoGenerators` and manages the info outputting it into only one file via another piped `Outputter`)
There are [middlewares](main/info-generators/middleware) for the `InfoGenerators` as well. They take the incoming data and can cancel the generation (by returning `undefined` or returning a modified version of the data itself)
## Is it safe?
Completely!
It reads information provided by [Frontier](https://frontier.co.uk/) in the game intended to develop third party applications like [EDMC](https://github.com/EDCD/EDMarketConnector).It only provides game of the game universe, nothing personal.
If you are curiours, you can check the content of the `Journal` files in the directory: `C:\Users\%userprofile%\Saved Games\Frontier Developments\Elite Dangerous`## Configuration
Yes, some settings are required to make this app work! But from version 0.5.0 this is possible to be configured using [settings.json](main/static/settings.json) (or `settings.js` with `module.exports` would work too). This file will be available in the `data` directory inside the application **after** its first execution.
This is the list of all settings available so far (settings without a default are required)
### Root level
| Setting | Description |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| locale | Language to use from an [available localization file](static/locales), as the file name without extension. Default: `en` |
| displaySettings | If `true`, settings being used will be displayed when starting the app. Default: `false` |
| displayFinalData | If `true`, all the available data from the events will be displayed when exiting the app. Default: `false` |
| eventManager | Settings related to the ED Event Manager ([EventManager options](#eventmanager-options)) |
| navFilePath | Path to the file where the navigation information will be written. If specified, the folder must exist but can left blank to not outputting this information |
| navFileOptions | Options related to the navigation information ([WriteFileOutputter options](#writefileoutputter-options)) |
| eventsFilePath | Path to the file where the events information will be written. If specified, the folder must exist but can left blank to not outputting this information |
| eventsFileOptions | Options related to the events information ([WriteFileOutputter options](#writefileoutputter-options)) |
| gameModeFilePath | Path to the file where the game mode will be written. If specified, the folder must exist but can left blank to not outputting this information |
| gameModeFileOptions | Options related to the game mode information ([WriteFileOutputter options](#writefileoutputter-options)) |### EventManager options
| Setting | Description |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| journalFolder | Folder where `.journal` files are. Default: `C:\Users\%userprofile%\Saved Games\Frontier Developments\Elite Dangerous` |
| verbose | If `false`, misc. information won't be displayed. Default: `true` |
| logEvents | Array of `'used'` or `'unused'`. Shows when one event is detected. Default: `[]` |
| ignoreBefore | Events generated more than the especified number (in milliseconds) won't generate any output. This avoid generating a big queue of events when opening the app in the middle of the game instead of opening it at the start. Default: `30000` (30 seconds) |### WriteFileOutputter options
| Setting | Description |
| ------------ | ----------------------------------------------------------------------------------------------------- |
| verbose | If `true` it will log the content being outputted to the file every time it changes. Default: `false` |
| clearOnStart | If `true`, the file will be emptied when the app is opened. Default: `true` |
| clearOnEnd | If `true`, the file will be emptied when the app is closed. Default: `true` |## Change log
### 0.7.0
- Provide an executable for easy execution
- Added info generator: `Distance`
- Differenciate when killing skimmers from pirates, allowing to use different texts for it### 0.6.0
- Added info generators: `LoadData`, `Scan`, `FactionKillBond`
- Fixed: `DockingRequested`, `DockingGranted`, `DockingDenied` events not being loaded### 0.5.0
- Added localization for messages
- Added settings file### 0.4.0
- Add info generators for `BodiesApproached`, `BodiesLeft`, `MissionsAccepted`, `MissionsCompleted`, `MissionsFailed`, `MissionsAbandoned`, `DockingRequested`, `DockingGranted`, `DockingDenied`, `InterdictionsEscaped`, `InterdictionsLost`, `InterdictionsSubmitted`, `Bounty`, `JumpDistance`, `MaterialsCollected`, `MiningRefined`, `ProspectedAsteroids` and `LaunchedDrones`
- Refactor middleware usage for `EventManager`, `InfoGenerator` and `Outputter`
- Refactor `EventManager` to provide events even if they are old (to be able to keep track of changes), and use the new `DataManager.eventsEnabled` instead
- `DataManager` final content is shown when exiting the app### 0.3.0
- Perform proper cleanup on exit
- Added Outputter middleware `TextSpacer`
- Fixed minor bugs introduced in 0.2.0
- OutputRotator tunning
- Added `isOld` and `middleware` options in `EventManager`
- Define which events are old so they are not processed in case the app is opened in the middle of the game (avoid over queuing old events)### 0.2.0
- Refactor the process flow to work like `Game Events` > `Data management` > `Info generation` > `Output`
- Added new events (`Scanned`, `HeatWarning`, `Bounty`, `ShipTargeted`) rotating into `events.txt`#### 0.2.1
- Don't use already shutdown Journal files
- Properly detect the Journal file even when the app is executed before the game is opened### 0.1.0
- First version to test the PoC
- Available events
- Navigation ones (`NavRoute`, `FSDJump`, `Docked`, `Undocked`, `ApproachBody`, `LeaveBody`) into `nav.txt`