HELLION

HELLION

Not enough ratings
Hellion Explorer User Guide 0.1
By CheeseJedi
A user guide for Hellion Explorer - a simple app to view and edit .save files for the game HELLION.
   
Award
Favorite
Favorited
Unfavorite
Exploring Hellion - an introduction
About Hellion Explorer
Hellion Explorer is a Windows application that was originally created to allow easy viewing of the .save files used by the HELLION Dedicated Server (and now Single Player mode) in order to more effectively track down bugs in the game.

Helliion .save files can be quite large, and working with these in an app like Notepad++ (and having the language set and syntax highlighting active) can be quite cumbersome. A typical ship definition can exceed 2,600 lines of json.

The idea was to present the hierarchy of objects within the game both in a Solar-System centred view as well as a raw data view and the ability to jump from an object in one view to the other.

Since it's creation it has gained some quite useful features. Dynamic loading of nodes prevents all the data loading at once and speeds up opening .save files (double-clicking a node triggers any sub-nodes to load) while the basic search functionality was extended with path-based searches that can include wildcards (* character).

The biggest change to date was the implentation of the editing and save functionality, which is currently considered experimental.

The existing json data view window has now become the object editor - complete with realtime deserialisation feedback to let the user know if the json is free of deserialisation errors (which can catch missing punctuation etc. in the json).

The Main Window
By default three main areas of Hellion Explorer are displayed - these can be hidden/shown individually through the View menu:
  1. The main navigation tree in the Navigation Pane forms the backbone of Hellion Explorer and is located on the left side of the main window.
  2. Along side this, occupying the middle portion of the main window, is the Dynamic List View Pane which shows sub objects of the selected item, and also is used for displaying search results.
  3. Finally, on the right side of the main window is the Info Pane where a summary is displayed for the selected item.
Additionally there is
  • the Path Bar, located above the Dynamic List View and Info panes, which shows the path to the current object,
  • the Search Results View, located at the bottom of the Navigation Pane,
  • the Status Strip at the base of the main window where additional information may be displayed.
About the Hellion Dedicated Server
Either the Hellion Dedicated Server program, or more recently the Single Player mode, are requried to play the game. The game client is fairly lightweight and the bulk of the decision making happens server side.

The Dedicated Server writes it's save files (JSON format with file extension of .save) periodically which is configured by the server's autosave parameter in the server's config file and also autosaves during shutdown.

The .save file contains, primarily, lists of Ships (incl. modules), Players, and Asteroids as well as other information such as Solar System Time and other data for the spawn systems etc.

Besides the save file, a critical part of the Dedicated Server is the Data subfolder as it contains the Static Data the game uses when running. Hellion Explorer also needs this information to be able to open and work with the .save files and will ask for a path to this folder to be set.

Technical Blurb
Hellion Explorer is a Windows Forms .NET application written in C# and has dependencies on some external libraries including FastColoredTextBox and Newtonsoft Json .NET
Installing Hellion Explorer
Installation
The latest release of Hellion Explorer can be found on the GitHub page:
https://github.com/CheeseJedi/HELLION.Explorer/releases

Hellion Explorer is now distributed as a .msi (Microsoft Installer database) file. Simply download the .msi file and double-click to run the installer and follow the wizard.

Note: The installer adds shortcut(s) to, and associates the .save file extension with the Hellion Explorer app.

Upgrade Installation
If you only have a version of Hellion Explorer that was distributed via .msi file, upgrades are simple. When running the new version, any previous (.msi) versions will be automatically removed.

Uninstallation
To uninstall, simply select Hellion Explorer from the Windows Add/Remove Programs list.

Notes for users of legacy versions
Previous versions of Hellion Explorer that were distributed via .zip file are now considered legacy versions.

If you have a legacy version of Hellion Explorer on your computer you will need to remove these manually i.e. manually delete any files that were unzipped.
Configuring the Data folder location
Before Hellion Explorer can open a .save file it needs to be pointed to the correct Data folder. Failing to set this correctly usually results in Hellion Explorer crashing. Almost all bug reports for previous versions of Hellion Explorer were down to this folder not being set appropriately.

Setting a Data folder
Select the Set Data folder location option from the Tools > Options menu of the main window. When the choose folder dialog opens, point it to a copy of the game's Data folder.

You basically have two choices here:
  1. If you have the Hellion game client installed on the same machine as Hellion explorer, find the Data folder from the Single Player mode and tell Hellion Explorer to use that. This also applies for editing Single Player .save files.
    This is usually located at:
    <path to your Steam folder>\steamapps\common\HELLION\Hellion_Data\HELLION_SP\Data

  2. If it's a remote/cloud Dedicated Server then copy the Data folder and all contents (incl. subfolders) from the server to your local machine and point Hellion Explorer at that. Remember to keep the contents of your local copy in sync with new releases of the game - as the remote Dedicated Server is updated, remove the existing local copy of the Data folder and make a fresh copy.

Verfying the set Data Folder
Select the Verify Data Folder option from the Tools > Options menu of the main window.

A pop-up dialog will tell you whether the folder seems valid, and confirm it's path if it is.
The Solar System view
What information is displayed in the Solar System View?
Most objects in the .save file have a direct (visual) representation in-game and these are displayed in the Solar System View with an equivalent hierarchy to that used by the game.

The Celestial Bodies (which are part of the Static Data rather than the .save file) are displayed honouring their orbital relationships, with the main planets orbiting Hellion.

On top of this the various asteriods, ships/modules and players (that are inside modules) are overlaid, showing the orbital structure. Once all the ships/modules have been added, another pass runs that reassembles docked stations, so that station structure and docked ships is also visible in this view.

Objects in the Solar System View are sorted by distance from their parent object (semi-major axis) - usually a planet or moon. For example, it is possible to see in the Solar System View the ring of asteriods orbiting Bethyr in between Broken Marble and Everest Station.

Unlike the Game Data view, where dynamic loading is used to prevent excessive ram usage, the Solar System View is fully populated when the .save file loading is complete.

Expanding, for example, Bethyr in this view will show all moons, asteroids, ships/modules that are orbiting it.

Expanding the top level node of a station will show other modules (or ships) that are docked to this directly, and anything docked to them in turn etc.

The module spawning system introduced in 0.3 Rude Awakening update changed Bethyr's spawns so that the previously loose modules and derelicts are now docked together, as indicated in the picture to the right.
The Game Data view
What information is displayed in the Game Data View?
The Game Data View (server icon) is a hybrid filesystem/json file viewer (where all json files and tokens within them can be displayed as individual nodes) and has two main sections:
  1. The .save file
  2. The Data folder with it's contents.
Ships (incl. modules), Asteroids and Players that are displayed in the Solar System View are generated from (and linked to) nodes located in various sections of the Game Data.

The .save File
Todo: This section is not yet complete.

The Data Folder
As has been mentioned previously, Hellion's Data folder is necessary for the building of the Solar System View and as such is enumerated for available .json files and displayed in the Game Data View

There are a number of .json files in the Data folder representing the game's Static Data and these control various aspects of the game. For a brief overview of the purpose of each of these refer to Appendix 1 - .json files in the Data folder.

Also in the Data folder are to additional folders:
  • Collision - Contains collision information for ships/modules, asteroids etc.
  • Stations - Contains Station Blueprint files used by the spawning system. The various prefabs seen in game originate from these.

Load On Demand
Early versions of Hellion Explorer loaded the entire save file and all the Static Data files from the Data folder on load. It was determined that having all these loaded in all the time was unnecessary and consumed a fair amount of ram - perhaps in some cases 2 - 3 GB.

Instead the nodes are now loaded in down to a pre-determined depth with additional levels of nodes being able to be loaded in on demand.

The pop-up ToolTip window shows information that can be used to determine whether there are unloaded sub-nodes:

Note the Tokens and Nodes numbers - if there are more Tokens than Nodes, some nodes have not been loaded.

Triggering the load of sub nodes
Loading sub nodes can be performed in one of a few ways:
  • Loading only the next level of nodes
    this triggers immediate loading of one level of sub nodes only
    • Double click the node in the navigation pane
    • Right click the node and select Load Next Level
  • Loading all sub nodes in one go
    • Right click the node and select Load All


If the node that was clicked wasn't fully loaded any additional sub nodes will appear and a plus (+) expansion icon will appear next to any nodes that have sub nodes.

It is important to note that nodes that are not loaded in do not appear in searches - only loaded nodes are searched.

For example if you want results from within all the .save file's Ships collection you would first need to right click the Ships property node or the Array node underneath it and select Load All levels.

Nodes cannot be unloaded once loaded, however the Revert option in the File menu will cause the current file to be reloaded.

Once all immediate sub nodes are loaded, the ToolTip pop-up should show the same number for Tokens as Nodes.
Moving between Solar System and Game Data
The Jump to menu

Right clicking a Solar System View or Game Data View node will show a Jump to sub menu:


This object in Solar System View
Selecting this option will jump to the corresponding node in the Solar System View. Enabled on Game Data nodes that have a representation in the Solar System.

This object in Game Data View
Selecting this option will jump to the corresponding node in the Game Data View. Enabled on all objects in the Solar System View with the exception of the Solar System itself.

Using these menu options allows rapid movement between the same object in the Solar System View and the Game Data View.

Editing functionality is only part of the Game Data view, so if you're looking at an object in the Solar System View you'll need to jump to that object in the Game Data View if you want to view or edit the json data.
Using Search
Activating the Search dialog box
With a navigation tree node selected in the Solar System View or Game Data View, pressing Ctrl+F (or using the Find option in the Edit menu) will bring up the Find dialog box.

Match Case
The Match Case option will force Simple Mode searches to be case sensitive. Does not apply to Path Search Mode. Off by default.

Simple Mode
With the Path Search option disabled, the search operation is considered to be 'Simple Mode'.
In Simple Mode the search will use the currently selected node in the navigation tree as the starting point for the search. Path Search Mode is off by default so Simple Mode is the default mode.

Path Search Mode
When the Path Search option is enabled, the mode of operation changes and the search operator will expect a path and return results that match. In this mode the asterisk ('*') character can operate as a wildcard parameter at one or more levels of the path, enabling some fairly sophisticated searching, particularly through a 'fully loaded' section in the Game Data.

Please refer to the Path Search Query Examples Appendix for more information.

Find Next (hotkey F3)
Clicking this will take you to the next available match if there is one.

Find All
Clicking this will immediately place all matches in to a new Search Result, appended to the Search section at the bottom of the navigation tree.

Search Results
Clicking a Search Results icon will display it's results in the Dynamic List View Pane. Paths to the objects are displayed in one of the columns and these can be useful when using Path Search Mode with wildcards.

Double clicking a search result will make the selection jump to the actual item in the tree that the result represents.
Using the Object Data Editor
Caution - Here be dragons!
Viewing data in the .save file and editing it are quite different things. If you are planning on editing the save file I found it helps to spend some time examining it's structure and excercise caution when making large changes.

Extra cautionary note - Hellion Explorer's editing and saving features are considered experimental and may not work quite as intended in certain circumstances! Be warned!

You will need to manage the files you are working on and make sure you take regular backups. When saving an existing file Hellion Explorer does attempt to make a .bak copy of the original, but this will be overwritten if you perform subsequent saves.

The Object Editor
The Object Editor window can be accessed by right-clicking on an existing JSON Object node in the navigation tree (representied with a gear icon) and selecting Edit.


The editor features the same syntax highlighting and collapsible code folding blocks as the previous viewer however a new tool has been added to aid in reducing errors when editing the json data...

De-Serialise-As-You-Type
When enabled, this function provides instant feedback on changes as you type them.

As you make edits it will attempt to de-serialise the contents of the editor window to a valid jObject and display feedback in the status bar at the bottom of the editor window.


This information will often contain a reference to the line and character/column where the first error occured - using this with the cursor position display, over to the right hand side of the status bar, can help track down the location of an error.

Note: De-Serialise-As-You-Type is disabled by default for larger sections of json data for performance reasons. To switch this on, select Deserialise-As-You-Type from the Edit menu.

If you run primarily with this function turned off it is recommended to occasionally turn the function on to check validity, and fix any errors, especially before saving as the editor will not accept an invalid and non de-serialisable edit to save.

Applying changes
File > Apply, close editor, then save the main document.
When complete changes can be applied to the .save file in memory by selecting Apply from the File menu.

In order to apply changes the text in the editor window must be syntactically correct - in other words, it needs to pass de-serialisation. This is checked prior to applying changes and errors must be corrected (and must pass the de-serialisation process) before changes will be allowed.

Once applied the edited object's node will be rebuilt and all sub nodes to be (re)loaded in.

From here the Hellion Explorer's File > Save option will commit the changes to the .save file and create a copy with the file extension .bak
Appendix 1 - .json files in the Data folder
A brief overview of the purpose of each of the Static Data .json files in the Data folder:
File Name
Notes
Asteroids.json
Defines the various asteroid models (shapes) used in game. These may be resized and/or rotated when used in game.
CelestialBodies.json
Posiibly the most important file of all - this defines the various celestial bodies and their orbits relative to each other - the orbital hierarchy.
ControlsDefault.json
Defines defaults for Keyboard / Mouse controls. Unknown if this is used by the server.
DebrisFields.json
Defines the various debris fields around celestial bodies - size, intensity etc.
DynamicObjects.json
This file contains definitions for all the Dynamic Objects (handheld items etc.) in the game.
Glossery.json
The in-game glossary information with some embedded markup.
ItemsIngredients.json
This file defines the recipies for crafting and recycling Dynamic Objects. Introduced in the Craftworks update.
LootCategories.json
The Loot Distribution system uses various categories to allow some randomisation of items spawned as it can pick from several items in a single category. This file defines the category (or categories) the Dynamic Object is in and what tiers apply.
Modules.json
Contains an empty array - file is currently unused by the game.
Quests.json
Definitions for the server-side portion of the quest system introduced in Hellion 0.3 Rude Awakening update.
SpawnRules.json
Definitions for spawn rules used by the in-game loot distribution system. Can spawn ships.modules, prefabs (from Station Blueprint files from the \Data\Stations folder) and Dynamic Objects (via the LootCategories)
Stations.json
Contains an empty array - file is currently unused by the game.
Structures.json
This file contains the definitions for all the ships, modules, derelicts etc.
Appendix 2 - Path Search Query Examples
Path Search Query Examples

All Ships
Shows all ships in the search results.
Game Data>*>*>Ships>Array>*

All Dynamic Objects
Shows all Dynamic Objects in any vessel. Useful for a quick count of total dynamic objects, and calculating average number of Dynamic Objects per Ship.
Game Data>*>*>Ships>Array>*>DynamicObjects>Array>*

All Turrets
Shows all turrets (Dynamic Object ID 79) in all vessels.
Game Data>*>*>Ships>Array>*>DynamicObjects>Array>*>ItemID>79
5 Comments
Psy0n 1 Sep, 2019 @ 8:40pm 
Hi there.. I'm having problems getting to the tool to work with current versions of the server. Any tips or is there a newer version necessary for the current server version?
CheeseJedi  [author] 12 Jul, 2019 @ 6:44am 
In future updates will be easy as the incoming version will uninstall any previous version of the program automatically (so long as it was installed from a package not a zip) as part of it's setup process. Automation for the win! :)
CheeseJedi  [author] 12 Jul, 2019 @ 6:44am 
Hi @Lucifer66 - I don't know whether you overcame your setup issue yet.

I have updated the User Guide to incorporate the new setup process for Hellion Explorer - apologies for any confusion the out-of-date info in there may have caused.

The current release only has a .zip file for the source code - that's a standard GitHub thing for releases on open source projects. Source code packages do not (usually) include binaries so would not have contained any exes or required dll files to run the program.

Instead of a file you manually unzip (and manually delete previous versions of when upgrading), I have packaged Hellion Explorer in to a Windows Installer package (the file named HELLION.Explorer.Setup.msi available on the project's GitHub releases page) - simply download this file and run it, then follow the setup wizard steps to install.
Zagan 10 Jul, 2019 @ 12:15am 
Well I started to follow this tutorial, I downloaded and unzipped the file but there is no HELLION.Explorer.exe that I can find to start the program. So where is it located? Did you forget to include it in the .zip?
CheeseJedi  [author] 3 May, 2019 @ 6:25am 
Update: Path Search Query Examples have been updated and should now work. :)