FTLAV, the FTL data gathering and visualisation tool

All your guides, strategy discussions, request for help on how to play go here. Please use [SPOILER] if relevant.
User avatar
NTG
Posts: 7
Joined: Mon Sep 28, 2015 12:51 pm

FTLAV, the FTL data gathering and visualisation tool

Postby NTG » Mon Sep 28, 2015 1:14 pm

FTL Adventure Visualiser (FTLAV) is a tool I'm currently developing for recording and visualising your unique FTL adventures. You could use this as a way to archive a particular spectacular FTL session to save it for posterity. Alternatively, this tool could be used for optimising your play style. You can export the graph as an PNG file, with background (see below) or without (transparant).
Image
Since version 2 you can also export all gathered data since the moment you began tracking to a single spreadsheet. Files are in the CSV format, meaning that you can open in any spreadsheet application (Excel, Numbers, Google Spreadsheets, etc.) or text-editor. Here is an example of such a CSV file, captured during the same game as when this graph was generated. Here is another example by Reddit user /u/mekloz. Due to the simple structure of CSV (Comma Separated Values) it's really easy to feed it to your own applications and scripts. I'm curious to see what you will do with it.

The FTLAV GitHub page or go to downloads.

If you have any questions, suggestions, ideas, encountered bugs or other problems, please let me know. Preferably by filing an issue. But if you don't have a GitHub account you can also leave a comment right here. If you want to contribute directly that is of course also possible, but you may need to have some experience with Java development.

I must not forget to do a shoutout to Vhati's FTL Profile Editor. If that project wasn't open source, FTLAV would have never happend.
User avatar
5thHorseman
Posts: 1668
Joined: Sat Mar 02, 2013 2:29 am

Re: FTLAV, the FTL data gathering and visualisation tool

Postby 5thHorseman » Mon Sep 28, 2015 9:25 pm

Wow, very cool.

I would suggest multiplying hull and fuel by 10 so the 3 graphs are closer to the same height.
My Videos - MY MOD HUB
Simo-V - The Potential - Automated Scout - "Low O2" Icons
The Black Opal - The Asteroid - The Enforcer - The Pyro

"Every silver lining has a cloud..."
User avatar
Gencool
Posts: 409
Joined: Sun Jun 16, 2013 1:21 pm

Re: FTLAV, the FTL data gathering and visualisation tool

Postby Gencool » Tue Sep 29, 2015 4:43 pm

I agree with 5th, it would help de-clutter the low half of the screen.

Also, a thought; with ever-accumulative stuff like Total Ships Defeated, Crew Size, and the crew's Skills Mastered stats, it seems like a bad idea to have it displayed as an ever-increasing line.
Maybe you could check to see if there's a difference with the last beacon, and put a symbol on the graph to represent it when there is?

So at the top of the screen you could have an explosion symbol, or something, that shows whenever you destroy a ship, and maybe at the bottom of the graph it shows when there's a change in crew.

Quick example:

ImageImageImage


Looking at the State Vars in save manager, you could also cross reference 'lost_crew' to show whether the crew member died or just left.
There's also 'env_danger' and 'nebula', which could be used in a similar way to the above, and (if you were up to it) you could put a symbol in whenever the weapon/drone loadouts change (maybe not show the actual weapon, but maybe put the name in as text?)


Just thoughts!



[edit]

Maybe times scrap by 0.25 for roughly the same effect (try to cap everything around 40-50)?

Looking at the Excel/Profile Editor a bit closer, you could also consider symbols for;
Environmental hazards (by type)
Store Visited
Blue Option Chosen
Rebels Delayed
Ship surrendered (shown if the ship was not also destroyed)
Ship Escaped (check if escape ticks gets to 0?)
Flagship Battle ('flagship nearby'?)
ImageImageImage
- Gencool (aka Puppetsquid) -- I make weird stuff
User avatar
Gencool
Posts: 409
Joined: Sun Jun 16, 2013 1:21 pm

Re: FTLAV, the FTL data gathering and visualisation tool

Postby Gencool » Wed Sep 30, 2015 1:04 pm

I know I should post this to the GitHub, but my confirmation mail hasn't come through yet so I'l leave it here for now-

I was thinking; only checking 'Crew Size' could miss out on a load of data (e.g. a crewmember dies in battle but you gain a new one via a slaver, or a crewmember dies but is cloned)

I'm sure you'll figure out something better than this, and this is only using data that I know can be pulled from the Save Editor (there may be better ways around stuff), but here's my thoughts on the subject (I'm not a coder, so this is just basic logic gates)

----------------------------------------------------

On each jump:
For Crewmembers, count each instance of [species] for 'total [species]'  (I.e. count all humans for 'total Humans', count all engis for 'total Engis'...)
Find 'Clonebay Priority' for each crewmember  (this val is copies 'universal death count' when a crewmember dies, so if the crewmember isn't dead a positive number means they've either been or are being cloned)
Find highest 'Clonebay Priority' for 'Newest Clone'   (this effectively records the last time a crewmember died, so long as you have a clonebay)
Find value 'lost_crew'  (this val seems to increment if crew are lost by any means except dismissal, so can be called to check if a crewmember has died)


For each [species], compare 'total [species]' with last jump
     If higher, print "New [species] Crewmember"  (optional: check if they have pilot/engine/etc skill equal to 1 or more 'mastery interval', but their skill mastery values are 0, as this seems to mean they were acquired ready-levelled ala 'Charlie' or 'Virus')
     If lower, compare 'lost_crew' to last jump
          If equal to the 'total [species]' difference, print "[species] Crewmember Died"
          If unchanged, print "[species] Crewmember Dissmissed"
          Otherwise, print "[species] Crewmember Lost"

     If no 'total [species]' values have changed, compare 'lost_crew' to last jump
          If higher, compare 'Newest Clone' to last jump
               If unchanged, print "Crewmember Lost"  (optional; check all crew names for any that have gone missing, cross reference for Species - not perfect but possibly useful)

Compare 'Newest Clone' to last jump
          If higher, print "Crewmember Cloned"  (optional; find all crew with higher Clonebay Priorities than the last jump for Numbers and Species info)          


----------------------------------------------------


Basically, this should find all the crew gained and/or lost for each jump, by species. It still struggles a little with a loss and gain of the same type of crewmember; the name-check should help, but if you lose and engi and a mantis, but gain a new mantis, only the engi will be recorded. I cannot think of a fool-proof solution for this.

Cloned Crew are ignored in the main expression, and counted in a separate one for ease of use. You could also use this to count the number of clones over a run (a number which would probably make some players heavily question their morality).
It may get a little inaccurate if the player jumps after a crewmember dies but before they respawn, as if the clonebay is inactive and looses the clone in the next jump the crewmember will still have been recorded being cloned in the last jump - again, I'm not sure of a foolproof workaround for this.



Personally, i'd love to see buttons for 'Show Crew Changes', 'Show Clones', 'Show Crew Changes by Race', and 'Show Clones by Race'
It would be tricky, but you could probably check for name changes, verified by species information, to also display the names of those gained/lost/cloned, but it might get complicated if players manually rename their crew during the run.

I'd also love to see icons used for it, and would be happy to help make them (provided I have the time to do so)
Commanderer
Posts: 1
Joined: Fri Mar 11, 2016 8:23 pm

Re: FTLAV, the FTL data gathering and visualisation tool

Postby Commanderer » Fri Mar 11, 2016 8:30 pm

Very cool.

It would be great if there was a capacity to see how you have done in certain scenarios historically and to see if you have improved over time.

ie. My scores have gotten worse in nebulae in recent runs, or I'm 10% more likely to win when I have 6 or more crew members.

I think that all this would take is an ability to generate graphs with historical data.

I think that would make this a very valuable learning tool and enable you to find trends and weaknesses in your game.
User avatar
NTG
Posts: 7
Joined: Mon Sep 28, 2015 12:51 pm

Re: FTLAV, the FTL data gathering and visualisation tool

Postby NTG » Fri Mar 11, 2016 9:19 pm

Funny that you mention historical data. If recently resumed working on FTLAV after a 3 months of being preoccupied with university work. For FTLAV version 3 there are going to be some big changes that make importing records of previous games possible. This is done by writing your current progress directly to a CSV file (comma separated values, a plain text spreadsheet type file structure), making it accessible with other programs like Excel or to re-import it into FTLAV at a later point. This feature is heavily modified from the CSV export feature present in FTLAV 2.

To get an insight in what types of data are supported in the current development version, you can take a look at the ParseCSV.java file. But if you don't speak Java, here is a summary:

[*]Time/Date the savefile was last changed
[*]Ship name
[*]Ship type
[*]Difficulty
[*]AE content enabled yes/no
[*]Number of total beacons explored
[*]Sector number
[*]Sector title
[*]ector type
[*]Fleet advancement
[*]Total ships defeated
[*]Total scrap collected
[*]Total crew hired
[*]Score
[*]List of environmental hazards (Astroid field, Rebel fleet, Solar flare, pulsar, etc.)
[*]Event text (only the last screen)
[*]Store listing (if prevent at current beacon)
[*]Current scrap
[*]Current hull
[*]Current Fuel
[*]Current Drone parts
[*]Current Missiles
[*]Current Crew size
[*]List of current cargo
[*]List of ship augments
[*]Oxygen level in %
[*]Ship power capacity
[*]<any system type> capacity bars
[*]<any system type> power bars
[*]<any system type> damage bars
[*]Weapons
[*]Drones
[*]Name, race, health, skills and stats for each crew member

Of course I'm open for suggestions of new types of data to be included. Keep in mind that most of these types of data are also available for any enemy/nearby ship. However, due to the nature of how FTL stores progress, this can only be data from the moment the last event text disappears.

Also I can't really give you any indication for when FTLAV 3 will come out. I'm currently in the middle of my graduation project. I only have time to work on this during my daily commute and evenings.
User avatar
Gencool
Posts: 409
Joined: Sun Jun 16, 2013 1:21 pm

Re: FTLAV, the FTL data gathering and visualisation tool

Postby Gencool » Sat Mar 19, 2016 6:24 pm

I'm gonna run a stream with this a little later, if anyone's interested.

https://www.twitch.tv/puppetsquid
ImageImageImage
- Gencool (aka Puppetsquid) -- I make weird stuff
User avatar
Gencool
Posts: 409
Joined: Sun Jun 16, 2013 1:21 pm

Re: FTLAV, the FTL data gathering and visualisation tool

Postby Gencool » Sun Mar 20, 2016 10:53 am

Hallo!

So the stream was fun.

Some thoughts with FTLAV, if you're open to them;


1) Starting a new ship causes the visualizer to crash.
- I'm sure you're aware of this already, but maybe there's a way around it by having some fake values if the continue.sav isn't found?

2) It would be nice to have a limiter on how many jumps back it shows?
- A customisable cap (5/10/20 jumps), maybe a scrollbar? I realise this is totally unnecessary for anything but streaming.

3) The tags at the end of each line overlap when the values become close.
- Maybe an option to have them all stacked at the side as a colour-corresponding key?



Also, I hope you don't mind; I would like to have a go at making my own UI with this information.

I have no idea how to do so, though; Is there a UI editor I could use, and plug these values in to?
Last edited by Gencool on Sun Mar 20, 2016 1:09 pm, edited 2 times in total.
ImageImageImage
- Gencool (aka Puppetsquid) -- I make weird stuff
User avatar
NTG
Posts: 7
Joined: Mon Sep 28, 2015 12:51 pm

Re: FTLAV, the FTL data gathering and visualisation tool

Postby NTG » Sun Mar 20, 2016 12:23 pm

Of course I don't mind. Feedback is really valuable! Haven't had the time to watch or rewatch your stream.

1) With "crash" you mean the critical error message? Or a sudden crash of the application?
I'm aware of the error message. It's impossible to prevent FTL from deleting continue.sav when a gameover or a restart occurs. But I can put in some rules so that FTLAV handles these situations in a more user-friendly way. Not sure about the fake values.

2) A horizontal scrollbar was already on my list of TODO's for version FTLAV version 3. Having the option to limit the amount of jumps displayed is also a very neat idea I haven't thought about before. I will definitely look into that.

3) A similar problem to point 2. Both can be solved in the current version by stretching out the window until their isn't any overlap. But that's far from ideal. Displaying them as a table of keys would be a good solution indeed.

In the last couple of weeks I've started working on FTLAV 3. The current version forgets all data when you quit FTLAV. In this new version savedata gets written directly to a CSV file after each jump. This a human-readable file that stores data in a table-like format, compatible with any spreadsheet application (Excel, Google Sheets, Numbers, etc.). This makes it possible to record a whole FTL game in multiple sessions. Simply import a existing FTLAV generated CSV file to resume recording data. Using this simple file format would make it possible to use external applications to display the data in your own way. You could for example setup custom graphs in Excel. Or you could build your own application in Processing or some other graphics toolkit. A fully custom UI editor for FTLAV would be a bit much, but I'm planning to get more custom features (toggle display title, different graph types, toggle display keys, limited jumps, etc.).

Can't make any promises for when FTLAV3 is going to be released. It's something I in the evenings and during my commute. In the meantime, I'm always open to suggestions.
User avatar
Gencool
Posts: 409
Joined: Sun Jun 16, 2013 1:21 pm

Re: FTLAV, the FTL data gathering and visualisation tool

Postby Gencool » Sun Mar 20, 2016 1:17 pm

Yeah, the error, not a full crash, sorry for the mis-communication.
The fake value thing was me trying to offer solutions rather than just problems - the new way of data handling will probably fix the problem anyway!

If the next version outputs in CSV, and is updated each jump, I should be able to work something out with excel (I may eve venture into Processing, thanks for the usggestion!0



Because I'm an art nerd I already made a concept anyways


When you say saving after every jump, does that mean Enemy info won't get updated till you've left the beacon?
 
ImageImageImage
- Gencool (aka Puppetsquid) -- I make weird stuff