IndieStone - Visual Tech Tree Editor

SQL Tables can be used to create checks that cause database entries to only be performed if said check is true; for example, a custom tech would only be inserted into the Technologies table if a boolean selected from a setting table is true. A similar method can be used to make changes if a mod is detected (through it making an insertion into the database; like EE adding the Flintlock tech). However, this isn't possible in XML, and so XML files generated by the VTTE will need to be converted into SQL for these checks can be used - thankfully, this is a simple enough process.

Ah, I see! Makes sense. I'm glad it's a simple enough process to convert it over, I haven't really looked into how the Editor works out what XML it should generate.

You know what would've been nice? Being able to quickly see the requirements of a tech when you select it.

I think I've just encountered a want for this feature myself as well. Do you mean highlighting all of the prereqs going back to the beginning, with numbers? (Like the actual game does when you select a tech that you haven't completed the prereqs for yet.) This would let you quickly assess how many techs are "upstream" from a given tech that you're considering. I'll take a look at this and see what can be done.
 
New version time! Available on the same download page as always. I haven't gotten to the prereq feature yet, but I've made a bunch of fixes while working on the Editor.

  • The "Row Editor" (the screen you see when you modify a tech or unit from the right click menu) now has Confirm and Cancel buttons at the bottom.
    • Note, behavior change: Navigating away from the Row Editor using anything except the Confirm button will abandon your changes on the current page. If you make changes to one page and then dig down into another page (via the "->" button next to a field) then your changes will remain unconfirmed until you return and confirm them, or close the Row Editor (which will discard those changes).
    • This means that if you make some changes and realize you have made a mistake, you can cancel and not apply your changes, instead of having to manually reset the data on that screen.
    • These buttons are here:
  • Fixed a bug where changing the names of units/buildings/resources did not update the displayed names correctly.
  • Fixed a bug where mods that changed the names of units/buildings/resources didn't have those changes show up until the user dragged some icons around or updated another text entry.
  • The lists of orphaned units, buildings, resources, and builds are now alphabetized.
  • Fixed a crash when duplicating an orphaned unit/building/resource that the user had unassigned from a technology.
  • Fixed a bug where numerous builds had incorrect icons.
  • Fixed a bug that caused the SS Engine and SS Stasis Chamber to have empty icons.
  • The following unlocks now show up correctly (they were either missing or invalid before): German Hanse, Bison, Cocoa, Kasbah, Chateau, Feitoria, Brazilwood Camp, Moai, Terrace Farm, Holy Site, and Polder.
  • Fixed an issue where the user's changes to text keys that were defined in multiple places in CiV (for example, in both the Spain & Polynesia DLC and G&K) would be discarded when they reloaded their exported mod into the Editor.
  • Fixed an issue where some units and buildings could not be deleted.

If you encounter any issues, please do report them on here! Please provide detailed instructions to reproduce the issue so that I can track it down and make sure I fix it correctly.

Enjoy!
 

Attachments

  • Row Editor with Cancel and Confirm.PNG
    Row Editor with Cancel and Confirm.PNG
    23.6 KB · Views: 412
Another new version! Same download page as always!

This time I've added a fairly big new feature: generic functionalities. Things like Embassies, Trade Routes, and Defensive Pacts are now represented on the tree within the Editor (some examples shown below on Animal Husbandry, Sailing, and Writing):



But just having those icons by themselves doesn't really let you manage them quickly while in the Editor, you need to know what each generic does, like you do in-game by mousing over them on the tree. So, in the Editor, when you mouse over:



In the process of making that available, I've added tooltips to all of the unlocks on the tree, which should be particularly helpful for very crowded techs:



Those of you who are familiar with how CiV's database is laid out will know that, unlike Units and Buildings, which are their own set of tables that exist independently of techs, most generic functionalities are simply properties on the actual Technologies table. (So, the Animal Husbandry tech is marked up as giving the player 1 international trade route.) To address this difference, if you drag and drop any of the generic functionalities on the tree itself, then the relevant fields will be updated on the underlying technology in order for that change to be reflected in game.

The upshot of all of that is that if you drag Embassy trading off of writing onto Mining, and then load the Editor's exported data into your mod, then Embassy trading should be moved as expected onto Mining.

Another consequence of that is that if you modify a technology and change a relevant property this may "create" a generic functionality icon on that tech. (If you tick the "OpenBordersTradingAllowed" box on a tech, then a generic functionality icon with that tooltip will pop up on the tech.)


And then! There are those of us who are making mods that have new generic functionality and want a way to represent that within the Editor while designing tech tree changes. You can represent those by creating your own functionality within the Editor:

Right click a tech:


Fill in the fields:


Look at your new functionality:


The string in the tooltip of any generic functionality is the one from the text key in the "Effect" property on the created functionality. (For all units, buildings, etc. the Description property is used.)

Note that newly created generic functionality in the Editor does not affect the behavior of the game when loaded by a mod. It is solely there for organization of your mod's tech tree. You will need to implement the specifics of said functionality as a part of your mod, through Lua, C++, or otherwise.

Also, not all base game generics are supported yet. Yield bonuses for certain improvement types (and some in only certain conditions, such as access to fresh water) are more complex to evaluate and I haven't added support for them yet. Only the "simple" functionalities that are flags on the techs are included for now.

A full list of those functionalities:
  • International Trade route changes
  • Enhancements to embarked movement
  • Allowing embarkation
  • Allowing embarked units to cross oceans
  • Embassies
  • Open borders
  • Defensive pact
  • Research agreements
  • Bridges over water
  • Reveal the whole map
  • Tourism modifier
  • Unlocking the World Congress
  • Extra votes per diplomat

I've also made some other more minor changes to the Editor:

  • Added support for Projects (Manhattan Project, Apollo Program), so they can be modified from within the Editor in the same way as Units, Buildings, Resources, and Builds.
  • Fixed a bug introduced in the last version that sometimes caused new rows created within the Row Editor to not be created correctly. (They were left out whenever you did an Export.)

Advanced user's note:
You may notice that the Editor now creates a new table of exported data called GenericFunctionalities. It contains the data that the Editor uses to keep track of the generic functionalities' information on the tree, and can be safely discarded when you load the exported data into your mod. (All entries associated with it should be in the GenericFunctionalities xml file, along with any relevant text keys that may have been created in the GameText xml file.) This table does not serve any purpose within CiV itself.
 

Attachments

  • Techs with Generics.PNG
    Techs with Generics.PNG
    106.5 KB · Views: 375
  • Mouse over Generic.PNG
    Mouse over Generic.PNG
    24.3 KB · Views: 375
  • Mouse over Building.PNG
    Mouse over Building.PNG
    20 KB · Views: 432
  • Right Click Add Functionality.PNG
    Right Click Add Functionality.PNG
    21.9 KB · Views: 360
  • Row Editor Create Functionality.PNG
    Row Editor Create Functionality.PNG
    12.9 KB · Views: 466
  • Created Custom Generic Functionality.PNG
    Created Custom Generic Functionality.PNG
    19.4 KB · Views: 369
I've been trying to load .modinfo files for era mods, but they never work properly - the new techs are simply overlayed over the Ancient era techs. Is this a bug, or are era mods not supported?
 
New version (from the same place as always) with some quick bug fixes:

  • Fixed a bug where renaming a tech that had unlocks caused those unlocks to be stuck in limbo.
  • Fixed a bug where changing an unlock's type field in the row editor caused strange behavior.
  • Fixed a crash when adding and changing the type fields of multiple generic functionalities.
  • Fixed a bug where tooltip text did not update properly when the text key value was changed or which text key the description referenced was changed.

I've been trying to load .modinfo files for era mods, but they never work properly - the new techs are simply overlayed over the Ancient era techs. Is this a bug, or are era mods not supported?

That sounds like a bug! I haven't been working with any mods that change eras and I'm a bit suspicious of how the Editor does that at the moment. Can you attach the mod(s) that cause the issue? (Or if it's a published mod just point me at it here or on Steam.) Then I'll try to track it down.
 
New version (from the same place as always) with some quick bug fixes:

  • Fixed a bug where renaming a tech that had unlocks caused those unlocks to be stuck in limbo.
  • Fixed a bug where changing an unlock's type field in the row editor caused strange behavior.
  • Fixed a crash when adding and changing the type fields of multiple generic functionalities.
  • Fixed a bug where tooltip text did not update properly when the text key value was changed or which text key the description referenced was changed.



That sounds like a bug! I haven't been working with any mods that change eras and I'm a bit suspicious of how the Editor does that at the moment. Can you attach the mod(s) that cause the issue? (Or if it's a published mod just point me at it here or on Steam.) Then I'll try to track it down.

I tried with Enlightenment Era (on Steam and CivFanatics) and Age of Coal and Iron (on CivFanatics somewhere). I also noticed that all the techs were showing TXT_KEY errors, but this might happen when loading any tech.
 
Another new version (same place!) with a fix for a longstanding bug that I've just been able to track down:

  • Fixed a bug where renaming a tech didn't correctly reconnect its prereqs, deleting them from exported data unless the user compensated in the conflict dialog when exporting.

I tried with Enlightenment Era (on Steam and CivFanatics) and Age of Coal and Iron (on CivFanatics somewhere). I also noticed that all the techs were showing TXT_KEY errors, but this might happen when loading any tech.

Awesome, I'll take a look at loading those mods into the Editor and will try to fix any issues as soon as possible!
 
Hi this tool seems amazing and it would save a lot of time, but I have no clue how to even get it to work.

Extracted it all into a folder

Went into regedit and tried this(did full path just not showing it here)
ToolAssetPath in HKCU\Software\Firaxis\Tools
.....\steamapps\common\Sid Meier's Civilization V
AssetPath in HKCU\Software\Firaxis\Nexus\Viewer
.....\Steam\steamapps\common\Sid Meier's Civilization V\assets
.....\Steam\steamapps\common\Sid Meier's Civilization V SDK\Nexus\x86\nexus.exe

Also tried some variations of the last one, like viewer.exe and SDK.OLD
with sdk.old nexus prompted me to open a file and I tried the indiestone tech viewer, but then it just loads indefinitely.
Since other people are using it succesfully I'm obviously missing something.
 
Hi this tool seems amazing and it would save a lot of time, but I have no clue how to even get it to work.

Extracted it all into a folder

Went into regedit and tried this(did full path just not showing it here)
ToolAssetPath in HKCU\Software\Firaxis\Tools
.....\steamapps\common\Sid Meier's Civilization V
AssetPath in HKCU\Software\Firaxis\Nexus\Viewer
.....\Steam\steamapps\common\Sid Meier's Civilization V\assets
.....\Steam\steamapps\common\Sid Meier's Civilization V SDK\Nexus\x86\nexus.exe

Also tried some variations of the last one, like viewer.exe and SDK.OLD
with sdk.old nexus prompted me to open a file and I tried the indiestone tech viewer, but then it just loads indefinitely.
Since other people are using it succesfully I'm obviously missing something.

If it's loading, then that means it at least found your CiV install folder, so your registry path settings look to be correct. Depending on how fast your HDD and CPU are, it can take some time to load - how long have you left it running? (I wouldn't expect anything more than thirty seconds, unless you have a very old computer.) What part of the below process does it stop on?



You don't get any popup windows with any crash information?

The correct asset paths should be "...\steamapps\common\Sid Meier's Civilization V" (without the quotes), which you have tried in the ToolAssetPath.

Do you have any Windows Updates pending? This application uses the .NET framework, updates for which are delivered by Windows Update. And what OS are you on? Win7/8/8.1/10?

Do you have all of the DLC for CiV or only some? (Or none?)

If you have any mods that are installed as "fake DLC" (such as EUI) try removing those and running the Editor again.
 

Attachments

  • Loading Process.PNG
    Loading Process.PNG
    4 KB · Views: 357
Didn't even get as far as your pic shows.
I click the nexus.exe, it asks me to open an executable file, I choose indiestonetecheditor.exe, it loads until it stops responding.

OS: W7, 64bit
Tried with no dlc, and all dlc.
no fake dlc like EUI

have .NET 4 framework, but I did check windows update and found 2 relevant updates and updated them. Still didn't work though, I have some security updates tied to it that may be required, I guess I'll have to try them too.

I think I might try reinstalling.
Is the tool very patch sensitive?

"<Column name="PolicyType" type="text" reference="PolicyBranchTypes(Type)" default="NULL"/>"
Just realized that I haven't changed that thing mentioned on an earlier page. Not sure if it is tied to my problem though, but I'll look into that more tomorrow.

Thanks
 
Didn't even get as far as your pic shows.
I click the nexus.exe, it asks me to open an executable file, I choose indiestonetecheditor.exe, it loads until it stops responding.

OS: W7, 64bit
Tried with no dlc, and all dlc.
no fake dlc like EUI

have .NET 4 framework, but I did check windows update and found 2 relevant updates and updated them. Still didn't work though, I have some security updates tied to it that may be required, I guess I'll have to try them too.

I think I might try reinstalling.
Is the tool very patch sensitive?

"<Column name="PolicyType" type="text" reference="PolicyBranchTypes(Type)" default="NULL"/>"
Just realized that I haven't changed that thing mentioned on an earlier page. Not sure if it is tied to my problem though, but I'll look into that more tomorrow.

Thanks

Oh, you shouldn't need to open it from within Nexus. You just run IndieStoneTechTreeEditor.exe directly (double click in explorer) and it should pop up. It's its own freestanding application, it just loads data from your CiV install directory.

You shouldn't need to make the PolicyBranchTypes fix anymore.
 
"You just run IndieStoneTechTreeEditor.exe"
That's what I initially tried, but it didn't do anything other than giving me a 3 digit memory file in the task manager that I couldn't remove and an hourglass next to the cursor while browsing the explorer.
I saw someone else have the same problem earlier in the thread and he got it to work(with a crash) in safemode though, so I tried the same.
and it worked! With no crash even. So I can use the tool in safemode now, which is a little annoying, but maybe I can find out why it works there and not here.

Sidepoint, can you select more techs at once?
Classical Era has a width of 2 techs and I was thinking of adding another column to it, so do I have to pull every individual tech 1 step to the right or can I select all of them and move them 1 step?
Pulling each and every one of them in a visual editor is still a whole lot faster than rewriting the tech grid in xml.
 
Fixed my problem.
In case anyone else has a similar problem:
I made a selective startup in msconfig and chose not to load startup items since I read that others had the same problem with other applications and that was a fix.
That did not work, but I noticed that my AVAST was under startup items and it was running anyway, and I don't think it was running in safemode. I made an exception to the indiestonetecheditor folder and now it works for me.
 
New version time! Available at the same place as always.

Here are some tasty changes:

  • Fixed a crash when the user tried to set a prereq from a tech to itself.
  • Fixed a bug where renaming a tech that had generic functionality from the base game (like Open Borders or Defensive Pacts) would cause that tech to have duplicate starbursts when the exported mod was reloaded.
    • Note: This fix doesn't remove any duplicates that exist in mods you already have. You'll need to get rid of them yourself (right click -> Delete, on all instances of the functionality on that tech) and then reset the value that they change on the Tech table to the "on" value for that functionality. The duplicates should not return after you've removed them.
  • Fixed a bug where reassigning a project's prereq via the Row Editor didn't move the project's icon on the tree.
  • When you select a tech, you now see how many total prereqs that tech has in a little bubble on the left hand side of the tech.
    • As requested by BackseatTyrant!
    • Work to highlight all of those techs on the tree is still ongoing.
  • Added support for Processes! Converting Production into Gold or Science, and contributing Production to the Global Events (World's Fair, International Games, International Space Station) are the Processes from BNW.
  • If you try to add a circular prereq chain (for example, on the BNW tree, add a prereq from Agriculture onto The Wheel), you will be prompted to remove an existing prereq from the circular chain before creating the new one. (Or you can cancel, abandoning the prereq you tried to create).

Sidepoint, can you select more techs at once?
Classical Era has a width of 2 techs and I was thinking of adding another column to it, so do I have to pull every individual tech 1 step to the right or can I select all of them and move them 1 step?
Pulling each and every one of them in a visual editor is still a whole lot faster than rewriting the tech grid in xml.

Selecting and dragging multiple techs at once is something it's supposed to support, but has apparently been broken for a little while now. I'll try to track down what happened to that and bring that feature back!

Fixed my problem.
In case anyone else has a similar problem:
I made a selective startup in msconfig and chose not to load startup items since I read that others had the same problem with other applications and that was a fix.
That did not work, but I noticed that my AVAST was under startup items and it was running anyway, and I don't think it was running in safemode. I made an exception to the indiestonetecheditor folder and now it works for me.

Awesome, glad you're back up and running!
 

Attachments

  • Support for Processes2.PNG
    Support for Processes2.PNG
    5.6 KB · Views: 386
  • Support for Processes.PNG
    Support for Processes.PNG
    23.4 KB · Views: 330
  • PrereqCount.PNG
    PrereqCount.PNG
    21.8 KB · Views: 323
  • Circular Prereq Prompt.PNG
    Circular Prereq Prompt.PNG
    9.4 KB · Views: 367
Back again, with another new version! Same download page as always!

Another bunch of changes this time. The biggest thing is support for all remaining generic functionalities from BNW! To my knowledge, this now means that the Tech Tree Editor supports all unlocks that are present on the tree in BNW.

Blow by blow of the changes:

  • Support for all remaining generic functionality types!
    • Some screenshots:
    • The full list of functionality types added in this pass are:
      • Movement modifiers on specified routes (used for "Faster movement on Roads" in BNW)
      • Yield changes for specified improvements with access to fresh water
      • Yield changes for specified improvements without access to fresh water
      • Yield changes for specified improvements
      • Boosted range for trade routes from a specified domain
    • You may notice that the tooltips used by the Tech Tree Editor are not the same as the ones from the game. The reasons for this are twofold:
      • Firaxis's tooltips are often only accurate for the values they provided in the base game. ("Faster movement on roads" doesn't change if you modify the bonus from 10% to 20%, or even if you make it a penalty!)
      • The tooltip strings Firaxis use all use CiV's localization substitution system for adding in values (those of you who have authored text keys before will know the "{2_YieldType:textkey} from the {1_ImprovementName:textkey}" style format). Supporting that would require me re-implementing it in the Tech Tree Editor, so it was easier and more representative of modded changes to use separate text.
  • The "Add Functionality" context menu on techs now supports new stuff! It pops up a window that lets you select any of the BNW-supported bonuses to add to the currently selected tech, as well as the custom generic functionality that it used to create:
  • Modifying an existing row's type so that it was the same as another row's type used to cause strange things to happen. Types must remain unique (CiV enforces this as well). If you try to rename a type into a duplicate, you will be prompted to pick a new one instead:
  • Fixed a bug where modifying a row's type would cause the existing row to be updated and a new row created in the exported data from the Editor (which would cause errors when loaded by CiV).
  • Fixed a bug where non-language fields that referred to non-existent values in other tables were displayed as an empty string. (If you made a typo in the ObsoleteTech for a unit, for example, then that field would appear empty, but under the hood it would actually have an invalid value.)
  • Fixed a bug where changing the type of a row could result in orphaned references to the old type not being marked as invalid by the conflict detector.
    • This may result in new conflicts being detected in existing mods, where they were previously hidden and would have caused errors when loaded by CiV.
 

Attachments

  • Added Yield from Improvement.PNG
    Added Yield from Improvement.PNG
    14.5 KB · Views: 317
  • Trade Route Range Functionality.PNG
    Trade Route Range Functionality.PNG
    20.1 KB · Views: 372
  • Non-Unique Type Error.PNG
    Non-Unique Type Error.PNG
    23.1 KB · Views: 421
  • Choose Functionality Type Window.PNG
    Choose Functionality Type Window.PNG
    11.2 KB · Views: 387
Last new version for tonight, with two quick changes, available from the same download page as always:

  • Generics from other tables (the new ones that were all added today) now always come before other generics when shown on a tech.
  • Fixed a bug where these table generics' tooltip texts were overwriting each other (no database data was affected by this bug, only UI, so any mods authored in the interim are fine).
 
Top Bottom