Dana: crafting tree/graph explorer

by Credne

Dana provides ways to explore and display the recipe graph of Factorio (vanilla or modded). This mod is still in alpha stages: it is recommended to use it on a dedicated (sandbox) save, or at minimum to backup your save. While the mod should work in multiplayer, be careful about griefing (rendering huge graphs can freeze the game for several minutes).

Utilities
5 months ago
0.18 - 1.1
1.97K

b [Solved] Full crafting graph crash

2 years ago

Tried clicking the Full crafting graph, and after 3 minutes i got an error

The mod Dana: crafting tree/graph explorer (0.2.0) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event dana::on_gui_click (ID 1)
Unknown recipe name: dect-alien-biomes-rock-huge-white
stack traceback:
dana/lua/canvas/objects/CanvasSprite.lua:34: in function 'makeFromInitData'
dana/lua/canvas/Canvas.lua:85: in function <dana/lua/canvas/Canvas.lua:82>
(...tail calls...)
dana/lua/renderers/simple/SimpleRenderer.lua:121: in function 'drawLayout'
dana/lua/apps/graph/GraphApp.lua:79: in function <dana/lua/apps/graph/GraphApp.lua:58>
(...tail calls...)
dana/lua/apps/AppController.lua:92: in function 'makeAndSwitchApp'
dana/lua/apps/query/QueryApp.lua:129: in function 'runQueryAndDraw'
dana/lua/apps/query/gui/TemplateSelectWindow.lua:117: in function 'onClick'
dana/lua/gui/GuiElement.lua:124: in function <dana/lua/gui/GuiElement.lua:119>
stack traceback:
[C]: in function 'draw_sprite'
dana/lua/canvas/objects/CanvasSprite.lua:34: in function 'makeFromInitData'
dana/lua/canvas/Canvas.lua:85: in function <dana/lua/canvas/Canvas.lua:82>
(...tail calls...)
dana/lua/renderers/simple/SimpleRenderer.lua:121: in function 'drawLayout'
dana/lua/apps/graph/GraphApp.lua:79: in function <dana/lua/apps/graph/GraphApp.lua:58>
(...tail calls...)
dana/lua/apps/AppController.lua:92: in function 'makeAndSwitchApp'
dana/lua/apps/query/QueryApp.lua:129: in function 'runQueryAndDraw'
dana/lua/apps/query/gui/TemplateSelectWindow.lua:117: in function 'onClick'
dana/lua/gui/GuiElement.lua:124: in function <dana/lua/gui/GuiElement.lua:119>

2 years ago

Got the same error just trying to draw yellow inserter:

The mod Dana: crafting tree/graph explorer (0.2.0) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event dana::on_gui_click (ID 1)
Unknown recipe name: dect-alien-biomes-rock-huge-white
stack traceback:
dana/lua/canvas/objects/CanvasSprite.lua:34: in function 'makeFromInitData'
dana/lua/canvas/Canvas.lua:85: in function <dana/lua/canvas/Canvas.lua:82>
(...tail calls...)
dana/lua/renderers/simple/SimpleRenderer.lua:121: in function 'drawLayout'
dana/lua/apps/graph/GraphApp.lua:79: in function <dana/lua/apps/graph/GraphApp.lua:58>
(...tail calls...)
dana/lua/apps/AppController.lua:92: in function 'makeAndSwitchApp'
dana/lua/apps/query/QueryApp.lua:129: in function 'runQueryAndDraw'
dana/lua/apps/query/gui/QueryEditor.lua:131: in function 'onClick'
dana/lua/gui/GuiElement.lua:124: in function <dana/lua/gui/GuiElement.lua:119>
stack traceback:
[C]: in function 'draw_sprite'
dana/lua/canvas/objects/CanvasSprite.lua:34: in function 'makeFromInitData'
dana/lua/canvas/Canvas.lua:85: in function <dana/lua/canvas/Canvas.lua:82>
(...tail calls...)
dana/lua/renderers/simple/SimpleRenderer.lua:121: in function 'drawLayout'
dana/lua/apps/graph/GraphApp.lua:79: in function <dana/lua/apps/graph/GraphApp.lua:58>
(...tail calls...)
dana/lua/apps/AppController.lua:92: in function 'makeAndSwitchApp'
dana/lua/apps/query/QueryApp.lua:129: in function 'runQueryAndDraw'
dana/lua/apps/query/gui/QueryEditor.lua:131: in function 'onClick'
dana/lua/gui/GuiElement.lua:124: in function <dana/lua/gui/GuiElement.lua:119>

2 years ago

i got an error

Did you recently do any mod install/uninstall/update ? Dana currently does not support change to prototypes once installed. This is planned for v0.3, but if it's causing troubles I'll release a v0.2.1 with just that.

after 3 minutes

Can I get your full mod list ? Dana's graph renderer is certainly not the fastest piece of code in the world, but event a full Pyanodon doesn't get close to that. I could use that for future benchmark/optimisation tasks.

2 years ago

I just tried it in a new save, and it works. I probably updated a mod after I started the other game, think it was "Bio Industries" I updated after Dana was installed and the game was started.

Took about 1 minute to load the full graph in a new game, single item takes a second if i check "maximum depth 1".

I always keep my mods up to date, and I got lots of mods, so hope you can get support for that.
Would be nice if it was possible to have a blacklist too, show everything besides "this" mod. Like Dectorio. It have so many items that's not really interesting and makes the full graph view almost impossible to read.

How to I easily extract a list of all the mods i use?
Its to many for me to write them all down by hand haha

2 years ago

I always keep my mods up to date, and I got lots of mods, so hope you can get support for that.

It should happen this weekend.

Would be nice if it was possible to have a blacklist too, show everything besides "this" mod. Like Dectorio.

The main focus of v0.3 is on better selection of what to show (right now I'm working on optionally removing sink/void recipes, barreled items, stacked items). I didn't plan on filtering by mod though (and unless these mods declare custom recipe categories, I don't see a reliable way to do so).

It have so many items that's not really interesting and makes the full graph view almost impossible to read.

To be fair, right now the "full graph" button is here for 2 reasons:

  • as a dev tool for benchmarks (for performance & correctness)
  • to show off :-)

Personally I already find just the Vanilla full graph to be unreadable. It's also a huge lag/freeze/desync hazard. I think the added value of this mod will mainly be on the "How to make" feature and the full graph will probably get hidden behind an advanced mode (even disabled in multiplayer).

How to I easily extract a list of all the mods i use?

  • Enable the right mods inside the game (loading the save will do that just fine).
  • Upload the mods/info.json file from your user data directory.
2 years ago

{
"mods":
[

{
  "name": "base",
  "enabled": true
},

{
  "name": "aai-signal-transmission",
  "enabled": true
},

{
  "name": "aai-signals",
  "enabled": true
},

{
  "name": "actual-craft-times-remade",
  "enabled": true
},

{
  "name": "alien-biomes",
  "enabled": true
},

{
  "name": "alien-biomes-hr-terrain",
  "enabled": true
},

{
  "name": "AsphaltRoads",
  "enabled": true
},

{
  "name": "assemblyanalyst",
  "enabled": true
},

{
  "name": "attach-notes",
  "enabled": true
},

{
  "name": "automatic-station-painter",
  "enabled": true
},

{
  "name": "Automatic_Train_Painter",
  "enabled": true
},

{
  "name": "baron-library",
  "enabled": false
},

{
  "name": "baron-sludge",
  "enabled": false
},

{
  "name": "baron-turrets",
  "enabled": false
},

{
  "name": "BetterBots",
  "enabled": true
},

{
  "name": "Bio_Industries",
  "enabled": true
},

{
  "name": "Biter_Detector_Sentinel_Combinator",
  "enabled": true
},

{
  "name": "Booktorio",
  "enabled": true
},

{
  "name": "calculator-ui",
  "enabled": true
},

{
  "name": "camedo-microwave",
  "enabled": true
},

{
  "name": "Clockwork",
  "enabled": true
},

{
  "name": "ClosestFirst",
  "enabled": true
},

{
  "name": "CompactPower2",
  "enabled": true
},

{
  "name": "CorpseFlare",
  "enabled": true
},

{
  "name": "custom-map-colors",
  "enabled": true
},

{
  "name": "dana",
  "enabled": true
},

{
  "name": "DeadlockMoreTextPlates",
  "enabled": true
},

{
  "name": "Dectorio",
  "enabled": true
},

{
  "name": "DewPointAggregator",
  "enabled": true
},

{
  "name": "dieselTrains",
  "enabled": true
},

{
  "name": "dirtybarrels",
  "enabled": true
},

{
  "name": "DragonIndustries",
  "enabled": true
},

{
  "name": "electricboiler",
  "enabled": true
},

{
  "name": "even-distribution",
  "enabled": true
},

{
  "name": "EvenMoreTextPlates",
  "enabled": true
},

{
  "name": "EvoGUI",
  "enabled": true
},

{
  "name": "extended-descriptions",
  "enabled": true
},

{
  "name": "FactorIO",
  "enabled": true
},

{
  "name": "FastRemoveTiles",
  "enabled": true
},

{
  "name": "flib",
  "enabled": true
},

{
  "name": "Flow Control",
  "enabled": true
},

{
  "name": "FluidMustFlow",
  "enabled": true
},

{
  "name": "fluidTrains",
  "enabled": true
},

{
  "name": "FluidWagonColorMask",
  "enabled": true
},

{
  "name": "gas-boiler",
  "enabled": true
},

{
  "name": "gas-furnace",
  "enabled": true
},

{
  "name": "Geothermal",
  "enabled": true
},

{
  "name": "hardened_pipes",
  "enabled": true
},

{
  "name": "IndustrialDisplayPlates",
  "enabled": true
},

{
  "name": "informatron",
  "enabled": true
},

{
  "name": "InlaidLamps2",
  "enabled": true
},

{
  "name": "Inventory Sensor",
  "enabled": true
},

{
  "name": "inventory-repair",
  "enabled": true
},

{
  "name": "JNF",
  "enabled": true
},

{
  "name": "KillLostBots",
  "enabled": true
},

{
  "name": "laserlines",
  "enabled": true
},

{
  "name": "lightorio",
  "enabled": true
},

{
  "name": "Logistic-Gun-Turret",
  "enabled": true
},

{
  "name": "Maps",
  "enabled": true
},

{
  "name": "MaxRateCalculator",
  "enabled": true
},

{
  "name": "MIRV",
  "enabled": true
},

{
  "name": "multi-product-recipe-details",
  "enabled": true
},

{
  "name": "MxlChievements",
  "enabled": true
},

{
  "name": "NextGenEvolution",
  "enabled": true
},

{
  "name": "OpteraLib",
  "enabled": true
},

{
  "name": "Orbital Ion Cannon",
  "enabled": true
},

{
  "name": "PickerAtheneum",
  "enabled": true
},

{
  "name": "PickerBeltTools",
  "enabled": true
},

{
  "name": "PickerInventoryTools",
  "enabled": true
},

{
  "name": "PickerPipeTools",
  "enabled": true
},

{
  "name": "PickerTweaks",
  "enabled": true
},

{
  "name": "PickerVehicles",
  "enabled": true
},

{
  "name": "platforms",
  "enabled": true
},

{
  "name": "PollutionSolutions",
  "enabled": true
},

{
  "name": "Power Armor MK3",
  "enabled": true
},

{
  "name": "power-grid-comb",
  "enabled": true
},

{
  "name": "QueueToFrontNG",
  "enabled": true
},

{
  "name": "QuickbarTemplates",
  "enabled": true
},

{
  "name": "radar-signals",
  "enabled": true
},

{
  "name": "RadioNetwork",
  "enabled": true
},

{
  "name": "railgun_revival",
  "enabled": true
},

{
  "name": "RaiLuaLib",
  "enabled": true
},

{
  "name": "RealisticDecorationCleanup",
  "enabled": true
},

{
  "name": "RecipeBook",
  "enabled": true
},

{
  "name": "Repair_Turret",
  "enabled": true
},

{
  "name": "reverse-factory",
  "enabled": true
},

{
  "name": "Rich_Text_Helper",
  "enabled": true
},

{
  "name": "Robo-Charge-1x1",
  "enabled": true
},

{
  "name": "Robot256Lib",
  "enabled": true
},

{
  "name": "rso-mod",
  "enabled": true
},

{
  "name": "SchallTransportGroup",
  "enabled": true
},

{
  "name": "Science-droids",
  "enabled": true
},

{
  "name": "Shortcuts-ick",
  "enabled": true
},

{
  "name": "show-max-underground-distance",
  "enabled": true
},

{
  "name": "sketchy-power-lamps",
  "enabled": true
},

{
  "name": "SmallNightvisionRevived",
  "enabled": true
},

{
  "name": "Solar-Lamp",
  "enabled": true
},

{
  "name": "SolarWalls",
  "enabled": true
},

{
  "name": "Soundpack-alerts-and-sirens",
  "enabled": true
},

{
  "name": "speaker-signals-2",
  "enabled": true
},

{
  "name": "speaker-signals-expansion",
  "enabled": true
},

{
  "name": "Squeak Through",
  "enabled": true
},

{
  "name": "stdlib",
  "enabled": true
},

{
  "name": "Tapeline",
  "enabled": true
},

{
  "name": "Teleporters",
  "enabled": true
},

{
  "name": "textplates",
  "enabled": true
},

{
  "name": "Transformers",
  "enabled": true
},

{
  "name": "Transport_Drones",
  "enabled": true
},

{
  "name": "Turret-Shields",
  "enabled": true
},

{
  "name": "vehiclehud",
  "enabled": true
},

{
  "name": "VehicleTrails",
  "enabled": true
},

{
  "name": "Vehicle_Radar",
  "enabled": true
},

{
  "name": "vtk-armor-reach",
  "enabled": true
},

{
  "name": "WaterAsAResource",
  "enabled": true
},

{
  "name": "windturbines",
  "enabled": true
},

{
  "name": "WireShortcuts",
  "enabled": true
},

{
  "name": "Wood_Gasification",
  "enabled": true
},

{
  "name": "wreckage-pollution",
  "enabled": true
},

{
  "name": "ZCS-Trash-Landfill-Continued-Continued",
  "enabled": true
}

]
}

2 years ago

the baron mods are disabled at the moment, because of a loading error.

{
"name": "baron-library",
"enabled": false
},

{
"name": "baron-sludge",
"enabled": false
},

{
"name": "baron-turrets",
"enabled": false
},

2 years ago

Thanks for the mod list.

I just released a v0.2.1 to add support for mod updates/installs/uninstalls. Please confirm that it fixes your issue.

2 years ago

After update it actually causes the a crash when trying to load the savegame.

The mod Dana: crafting tree/graph explorer (0.2.1) caused a non-recoverable error.
Please report this error to the mod author.

Error while running event dana::on_configuration_changed
LuaGuiElement API call when LuaGuiElement was invalid.
stack traceback:
dana/lua/gui/GuiElement.lua:261: in function 'recursiveUnbind'
dana/lua/gui/GuiElement.lua:60: in function 'destroy'
dana/lua/apps/query/gui/AbstractStepWindow.lua:50: in function 'close'
dana/lua/apps/query/QueryApp.lua:83: in function 'close'
dana/lua/apps/AppController.lua:128: in function 'closeApp'
dana/lua/apps/AppController.lua:116: in function 'switchToDefaultApp'
dana/lua/Player.lua:156: in function 'reset'
dana/lua/Dana.lua:112: in function 'on_configuration_changed'
dana/lua/EventController.lua:29: in function <dana/lua/EventController.lua:28>
stack traceback:
[C]: in function 'index'
__dana
/lua/gui/GuiElement.lua:261: in function 'recursiveUnbind'
dana/lua/gui/GuiElement.lua:60: in function 'destroy'
dana/lua/apps/query/gui/AbstractStepWindow.lua:50: in function 'close'
dana/lua/apps/query/QueryApp.lua:83: in function 'close'
dana/lua/apps/AppController.lua:128: in function 'closeApp'
dana/lua/apps/AppController.lua:116: in function 'switchToDefaultApp'
dana/lua/Player.lua:156: in function 'reset'
dana/lua/Dana.lua:112: in function 'on_configuration_changed'
dana/lua/EventController.lua:29: in function <dana/lua/EventController.lua:28>

Disabling Dana lets me load it

2 years ago

And I thought I could just shut down the computer after listening to a little round of FF victory fanfare. Such disappointment.

Could you upload the bugged savefile ?

2 years ago

I found an incompatibility with informatron.

Problem should be solved with informatron v0.1.12 & dana v0.2.3.

2 years ago

Sorry for not replying earlier, it was late and I forgot the day after...
Works great now! Even after I've updated and installed even more mods on my save, then enabled Dana again.

A suggestion; Maybe "maximum depth 1", should be checked by default. :)

2 years ago
(updated 2 years ago)

Thanks for the feedback.

I can understand the need to add a default depth, but not the value of 1. With depth=1, you just get the same result as RecipeBook & FNEI & others. For this specific need, I feel that their UI is (and will remain) vastly superior to mine. Depth>1 is where Dana can shine compared to them.

Anyway, the algorithms behind "Usage Of" & "How to make" are extremely simple right now. I hope I'll be able to replace them by something more robust in future versions. There might not even be a depth setting anymore.

New response