tech tree (modding/adding techs)
tech tree (modding/adding techs)
adding new techs is quite easy, and they show in regular view no problem
tech tree view is quite a different matter, I have a few end game techs added and tech tree not showing them didn't bother me much ... but now I am thinking to add some more techs in the middle of tech pool and I was looking into the code for tech tree to see how difficult it is to add them there ... it seems that tech tree is quite hardcoded at the moment and not modding friendly
are you guys planning to rewamp tech tree for easier modding ? and meanwhile, can you, please, provide a quick crash course on tech tree modding (in its current form) ? I may try to figure out the code if I have enough time, but any help that speeds it up is much appreciated
tech tree view is quite a different matter, I have a few end game techs added and tech tree not showing them didn't bother me much ... but now I am thinking to add some more techs in the middle of tech pool and I was looking into the code for tech tree to see how difficult it is to add them there ... it seems that tech tree is quite hardcoded at the moment and not modding friendly
are you guys planning to rewamp tech tree for easier modding ? and meanwhile, can you, please, provide a quick crash course on tech tree modding (in its current form) ? I may try to figure out the code if I have enough time, but any help that speeds it up is much appreciated
How did YOU get a key? All right, go in.
- sven
- Site Admin
- Posts: 1621
- Joined: Sat Jan 31, 2015 10:24 pm
- Location: British Columbia, Canada
- Contact:
Re: tech tree (modding/adding techs)
It should actually be pretty easy to mod as is. The core thing you need to know is that the big "master_columns" list in tech_tree_settings.lua determines where in the columns of the tree any tech shows up. Techs that don't appear in that list are just not shown in the tree. But, if you add the name of your newly created techs to master_columns -- they should show up.siyoa wrote:adding new techs is quite easy, and they show in regular view no problem
tech tree view is quite a different matter,
are you guys planning to rewamp tech tree for easier modding ? and meanwhile, can you, please, provide a quick crash course on tech tree modding (in its current form) ?
(There's a lot of other fanciness involved with the way the tech tree is laid out, and tricky things that one can do to try an make the lines going in and out of a particular tech look better -- I'd recommend ignoring that stuff as a modder. But, skimming the code at the top of tech_tree_settings.lua will give you a glimpse into that rabbit hole.)
Re: tech tree (modding/adding techs)
hmm, apparently I was doing something wrong then, as I added new tech to "master_columns" and it didn't want to show up ... I was able to remove existing tech from there though ... will try tonight again
it seems that tech tree doesn't change on the fly as you edit tech_tree_settings.lua, new game is needed everytime, maybe I just didn't save files properly ... at the end I had to validate my steam files as I couldn't remember anymore what I changed
it seems that tech tree doesn't change on the fly as you edit tech_tree_settings.lua, new game is needed everytime, maybe I just didn't save files properly ... at the end I had to validate my steam files as I couldn't remember anymore what I changed
How did YOU get a key? All right, go in.
- sven
- Site Admin
- Posts: 1621
- Joined: Sat Jan 31, 2015 10:24 pm
- Location: British Columbia, Canada
- Contact:
Re: tech tree (modding/adding techs)
Yeah -- tech_tree_settings.lua doesn't support live-coding as well as it could. That's something that's actually been bothering me as well. I've just taken a few minutes to see about improving things here -- as of r22104 (currently on the in_development steam branch), edits made to tech_tree_settings.lua should be reflected immediately in the tech tree screen.siyoa wrote:it seems that tech tree doesn't change on the fly as you edit tech_tree_settings.lua, new game is needed everytime, maybe I just didn't save files properly ... at the end I had to validate my steam files as I couldn't remember anymore what I changed
Re: tech tree (modding/adding techs)
fantastic, thankssven wrote:I've just taken a few minutes to see about improving things here -- as of r22104 (currently on the in_development steam branch), edits made to tech_tree_settings.lua should be reflected immediately in the tech tree screen.
How did YOU get a key? All right, go in.
Re: tech tree (modding/adding techs)
so, indeed it works (Beam Mods and Force Beams 2 in the picture), not sure what I was doing before definitely something incorrect
now, there seems to be some memory leak in latest dev version, anytime I edit tech_tree_settings.lua when live-coding
now, there seems to be some memory leak in latest dev version, anytime I edit tech_tree_settings.lua when live-coding
- Attachments
-
- tech_tree.jpg (377.21 KiB) Viewed 15156 times
How did YOU get a key? All right, go in.
- sven
- Site Admin
- Posts: 1621
- Joined: Sat Jan 31, 2015 10:24 pm
- Location: British Columbia, Canada
- Contact:
Re: tech tree (modding/adding techs)
hrm. have you been experimenting with any of the other stuff in tech_tree_settings.lua (besides the master_columns entries)?siyoa wrote:now, there seems to be some memory leak in latest dev version, anytime I edit tech_tree_settings.lua when live-coding
under the hood -- the tech tree layout involves an optimization step -- and if that optimization is in some way impossible, it may lead to strange behaviors (including, i think, out of memory errors). creating impossible optimization problems can be pretty easy to do accidentally, if you're playing with, say, the iq_constraints table.
Re: tech tree (modding/adding techs)
nope, master_columns only ... for nowsven wrote:hrm. have you been experimenting with any of the other stuff in tech_tree_settings.lua (besides the master_columns entries)?
is it GPU or system memory ? I only have 2GB of GPU memory
EDIT: interesting, I tried to repeat it, but I don't get error anymore, it still takes a second or 2 to switch to SiS application from text editor anytime I add/remove entry in master_columns (it still tries to process a lot of data) ... normally it switches between applications immediately
How did YOU get a key? All right, go in.
Re: tech tree (modding/adding techs)
hmmm, this is what I meant by tech tree being hardcoded 2 days ago ... I run into similar thing then
I get an error as per the picture if I put my new tech to this section of master_columns (Beam Mods after Primary Beams)
I get an error as per the picture if I put my new tech to this section of master_columns (Beam Mods after Primary Beams)
Code: Select all
{
"Antimatter Torpedoes",
"Warp Node Dynamics",
"Hadron Cohesion",
"Warp Lane Stabilizers",
"Plasma Projectiles",
"Primary Beams",
"Beam Mods",
"Zero-Point Energy",
"Adaptive Energy Grid",
"Adamantium Construction",
"Dreadnoughts",
"Quantum Decryption",
"Starfighters",
"Civil Fortifications",
"Hidden Bases",
"Weather Control",
"Atmospheric Condensation",
},
- Attachments
-
- tech_tree_3.jpg (92.2 KiB) Viewed 15145 times
Last edited by siyoa on Fri Mar 30, 2018 6:35 am, edited 3 times in total.
How did YOU get a key? All right, go in.
Re: tech tree (modding/adding techs)
if I put it here, all is fine
Beam Mods after Advanced Turbolasers
Beam Mods after Advanced Turbolasers
Code: Select all
{
"Antimatter Warheads",
"Railguns",
"Pulse Generators",
"Warp Node Attunement",
"Graviton Physics",
"Neutron Beams",
"Stupendous Energy Physics",
"Plasma Focusing",
"Disruptors",
"Advanced Turbolasers",
"Beam Mods",
"Subspace Networking",
"Improved Solar Panels",
"Arda Fabrication Techniques",
"Battlecruiser",
"Carriers",
"Multirole Fighters",
"Battle Mechs",
"Hardened Bunkers",
"Interspecies Law",
"Cloning",
"Synthetic Foodstuffs",
"Habitat Domes",
},
- Attachments
-
- tech_tree_2.jpg (132.87 KiB) Viewed 15145 times
How did YOU get a key? All right, go in.
- sven
- Site Admin
- Posts: 1621
- Joined: Sat Jan 31, 2015 10:24 pm
- Location: British Columbia, Canada
- Contact:
Re: tech tree (modding/adding techs)
Hmm... Yes, the OR node rendering logic is a bit brittle. I don't recall exactly /why/ that particular error would show up, but, I do vaguely remember deciding that some cases in the tech tree layout code were rare enough that I figured I could get away with just not handling them properly. (Meanwhile, the handful of cases in the tech tree that do involve visualizing relatively complex <OR> joins do have custom, special case handling code in tech_tree_edges.lua.)siyoa wrote:hmmm, this is what I meant by tech tree being hardcoded 2 days ago ... I run into similar thing then
I get an error as per the picture if I put my new tech to this section of master_columns (Beam Mods after Primary Beams)
My own experience with adding new techs has been that as long as I pick a column position that sortof looks like the tech ought to fit there -- it usually does fit without issues. Clearly though, your mileage hasn't been quite as good.
How many new techs are you trying to add to the tree?
- sven
- Site Admin
- Posts: 1621
- Joined: Sat Jan 31, 2015 10:24 pm
- Location: British Columbia, Canada
- Contact:
Re: tech tree (modding/adding techs)
Hrm, it looks like, in this rendering, there are no visible edges between Beam Mods and anything else. If the edges going into Beam Mods are, for some reason, triggering a case I haven't handled in the rendering code, you could try adding custom code to info.hide_edge to just hide all lines going into Beam Mods, i.e.:siyoa wrote:if I put it here, all is fine
Code: Select all
if tech=='Beam Mods' return true end
- sven
- Site Admin
- Posts: 1621
- Joined: Sat Jan 31, 2015 10:24 pm
- Location: British Columbia, Canada
- Contact:
Re: tech tree (modding/adding techs)
Should be system. So, it should take a *serious* memory leak to trigger that warning. (Probably some kind of infinite loop in my edge-placement code.)siyoa wrote:is it GPU or system memory ? I only have 2GB of GPU memory
This doesn't surprise me. The optimization and edge layout steps that go into tech tree rendering are slow -- 2 seconds doesn't sound that far off what I'd expect.siyoa wrote: EDIT: interesting, I tried to repeat it, but I don't get error anymore, it still takes a second or 2 to switch to SiS application from text editor anytime I add/remove entry in master_columns (it still tries to process a lot of data) ... normally it switches between applications immediately
Re: tech tree (modding/adding techs)
must be, that laptop has 12GB of RAMsven wrote:Should be system. So, it should take a *serious* memory leak to trigger that warning. (Probably some kind of infinite loop in my edge-placement code.)
not that many at the moment, but eventually I can end up with 20+sven wrote:How many new techs are you trying to add to the tree?
will try this one for sure ... now, I understand that tech tree should really be visual representation of dependencies between technology advancements ... I personally don't care about the lines as much, but than why to have tech tree, right ?sven wrote:Then, in theory, you ought to be able to put the tech in any column without issues. (Though no lines would show up.)
I just think that the current model is hampering modding to a bigger extend than, maybe, it should ? you assign techs into fields, so main dependencies should be within this field and only very occasionally other field affects it ... so maybe, what if you show only dependencies within the field by lines and anything coming from other field would be represented by that little icon in top left corner ? all that fancy OR stuff would be lost, but this may enable you to code tech tree really flexible, so much less would be hardcoded and much more would be automatically generated, so adding a tech would be really just a simple entry ?
EDIT: please, don't take this as a criticism, more like positive feedback (although I am not sure how much it is worth it, from someone who is not fluent in lua code that much ), for a small team of two, you guys are doing amazing work already
How did YOU get a key? All right, go in.
- sven
- Site Admin
- Posts: 1621
- Joined: Sat Jan 31, 2015 10:24 pm
- Location: British Columbia, Canada
- Contact:
Re: tech tree (modding/adding techs)
This is actually already being done -- by default, only lines between techs in the same field will be rendered.siyoa wrote: I just think that the current model is hampering modding to a bigger extend than, maybe, it should ? you assign techs into fields, so main dependencies should be within this field and only very occasionally other field affects it ... so maybe, what if you show only dependencies within the field by lines and anything coming from other field would be represented by that little icon in top left corner?
The core problem, I think, is that if a modder creates a tech with an OR prereq, as you did, adding it to the tree is currently hard -- because OR prereqs are buggy without special purpose edge-handling code. Tweaking the tech_tree_edges.lua code a bit so that new OR prereqs just aren't rendered at all (rather than trying, and often failing, to render them in some fancy way) is probably the solution here that would be most useful for modders. But... I make no promises on when I might get around to writing that up. For now, I'd suggest you just try hiding OR preq lines by adding special cases to info.hide_edge, and then let me know if you run into any other problems.siyoa wrote: all that fancy OR stuff would be lost, but this may enable you to code tech tree really flexible, so much less would be hardcoded and much more would be automatically generated, so adding a tech would be really just a simple entry ?