Custom tech tree?

Heya folks!

 

I've started to build my own maps and creating my own race and now I'm fiddling around to optimize. My questions to that:

 

Can I create a custom tech tree that can be added to my custom race? (and if yes, how)

Can I trade unique technology with other races that have tech that is not in my tech tree?

 

The issue is: I want to build the best ships possible in the game and thus want to have access to all military like technologies that might boost my ship stats. I would be finde with some drawbacks, but in general I want to play a race that builds "the best of the best". So I've looked into several tech trees and found, that the Thalan and the Krynn have both technologies I'm interested in and might want to get them.

 

Another question is about the AI - it seems to research always the same tech and often it doesn't make much sense (I mean, who seriously takes cheaper weapons over more powerful ones? ALL the time?) Can I change that (somehow?)

 

Thanks!

61,934 views 15 replies
Reply #1 Top

Another question is about the AI - it seems to research always the same tech and often it doesn't make much sense (I mean, who seriously takes cheaper weapons over more powerful ones? ALL the time?) Can I change that (somehow?)

That is because of the AITechGovernors list. You can change this :)


The issue is: I want to build the best ships possible in the game and thus want to have access to all military like technologies that might boost my ship stats. I would be finde with some drawbacks, but in general I want to play a race that builds "the best of the best". So I've looked into several tech trees and found, that the Thalan and the Krynn have both technologies I'm interested in and might want to get them.

Yes to this. It requires you to do some xml modding though.


Can I trade unique technology with other races that have tech that is not in my tech tree?

I think only if they have the same GenericName set in your tech trees. (TBH Unsure)

Reply #2 Top

Nice! Thanks! 

 

I guess I have to create a new XML or do I have to mod an existing one? (for this "new" tech tree)

Reply #3 Top

I haven't done this in depth before, so what i suggest is mostly speculation, I hope I can help you get started with this.

Here is what I would try:

- Make a copy of "TechDefs.xml" (it essentially contains the terran tech tree)
- rename it to whatever suites you, e.g. "NignerdTechDefs.xml"
- open the tech tree you want tech from e.g. "ThalanTechDefs.xml"
- search the tech you want, e.g. Gaia Theory, you will see something like this (I added some comments to it);

<Tech>
    <InternalName>ThalanGaiaTheory</InternalName>   <!-- the game will complain on startup if you don't change these on all techs in your new techtree. Do e.g. NignerdGaiaTheory -->
    <GenericName>GaiaTheory</GenericName>   <!-- these are important! this is how you reference the tech in the "AITechGovernor.xml" for example -->
    <DisplayName>ThalanGaiaTheory_Name</DisplayName>   <!-- these are links to strings defined in another file: e.g. data/English/Text/"ThalanTechDefsText.xml" -->
    <TechTree>Thalan_Tree</TechTree>
    <ShortDescription>ThalanGaiaTheory_ShortDec</ShortDescription>   <!-- these are links to strings defined in another file: e.g. data/English/Text/"ThalanTechDefsText.xml" -->
    <Description>ThalanGaiaTheory_Dec</Description>   <!-- these are links to strings defined in another file: e.g. data/English/Text/"ThalanTechDefsText.xml" -->
    <ResearchCost>128</ResearchCost>
    <TechPoints>1</TechPoints>
    <AICannotTrade>1</AICannotTrade>   <!-- if you remove this line, the tech is tradable, I think -->
    <AICategoryWeight>
      <Military>16</Military>
      <Growth>22</Growth>
      <Tech>20</Tech>
      <Diplomacy>8</Diplomacy>
      <Expansion>14</Expansion>
      <Wealth>12</Wealth>
      <Influence>10</Influence>
      <Fortification>18</Fortification>
    </AICategoryWeight>
    <Prerequ>
      <Techs>
        <Option>HiveSpecialization1</Option>   <!-- this essentially defines were it is in your tech tree, if you want to have it in your missile weapon tech tree as a branch after harpoons for example, look for the harpoon techs "GenericName" and put it as an option here-->
        <Option>HiveSpecialization2</Option>
      </Techs>
      <TechAge>
        <Option>AgeOfWar</Option>   <!-- this lets you specify if you want it to be available at a certain tech age -->
      </TechAge>
    </Prerequ>
  </Tech>

- copy it to your newly created tech tree.
- change values to your liking.
- the techtree will appear ingame when you simply copy the TechDefs.xml, so there is no additional effort required here.

edit: actually why not go all the? SD gave you the power:

If you look at these techs you intend to use, you will see something like this:

<Tech>
    <InternalName>TorianDefensiveDiscipline</InternalName>
    <GenericName>DefensiveDiscipline</GenericName>
    <DisplayName>TorianDefensiveDiscipline_Name</DisplayName>
    <TechTree>Torian_Tree</TechTree>
    [...]
    <Stats>   <!-- this block shows how you make hull capacity increases etc. You can also copy those into allready existing techs, or you could make up entirely new techs with this structure... (SD gave you the power) -->
      <EffectType>Jamming</EffectType>
      <Scope>Global</Scope>
      <Target>
        <TargetType>Ship</TargetType>
      </Target>
      <BonusType>Flat</BonusType>
      <Value>0.2</Value>
    </Stats>
   [...]

good luck and have fun modding :)

+1 Loading…
Reply #4 Top

Ha! Thanks! Will mod it and give you feedback on how it went. Thanks a lot! :)

 

Okay, I'm in.

 

My first babystep will be to include "Gravitonics" and the 3 specializations from the Thalan tree to my new tree. Also I'm try to put all of those specializations behind each other (so they become a full technology instead of a choice of 3)

 

Things that are time consuming:

- renaming every single internal name to my new tech (No, search&replace is working - brainfart - lol)
- checking every single tech-tree in the game for the appropriate tech and cherry-pick them and then find the appropriate place to... place them... flip-charts incoming! 

 

I'll edit it in if it worked. I hope, that later on, also the correct objects will be placed if they are part of the tech-tree, like buildings, starbase-upgrades/modules etc 

 

But hey, I'm having a lot of fun. New warlord-techtree incoming! :D
I guess, I'm putting in some drawbacks, like no upgrades for increasing population growth or increasing the costs for buildings and increasing research-times, but on the other hand, it has the best ship-upgrade options.

While editing the XML, another question popped up: Those galactical evens (you know, thos which give you permanent bonuses like 25% sensor range and similar stuff - are they the same for everyone or does every player get a different galactic event? The thing is - if you get every 30 rounds or so the option for a MASSIVE stat increase of your ships, the whole idea of an optimized tech tree can be thrown out of the window, because the AI could just get those stats just by events... which is kind of hilarious - so I guess, deactivating those galactic events would be... good, right?) 

Reply #5 Top

Quoting Horemvore, reply 1
I think only if they have the same GenericName set in your tech trees. (TBH Unsure)

This won't work, at least not in a way that actually gives you the other faction's unique technology. If your tech tree and the tech tree of your trade partner have techs with the same GenericNames, you can do tech trades, but the way it works is more along the lines of trading slot unlocks than actually trading techs.

Basically, if we have two tech trees which both include a tech with a GenericName of SuperSpecialTech1, and FlubberSuperSpecialTech1 unlocks a beam weapon that is rated at 200 damage while RubberSuperSpecialTech1 unlocks a +50 Morale +50 Food structure, then if Flubber develops FlubberSuperSpecialTech1 and Rubber has not yet developed RubberSuperSpecialTech1, Rubber can buy RubberSuperSpecialTech1 from Flubber and unlock its +50 Food +50 Morale structure but cannot acquire FlubberSuperSpecialTech1 and unlock the 200 damage beam weapon.

Reply #6 Top

Quoting joeball123, reply 5


Quoting Horemvore,
I think only if they have the same GenericName set in your tech trees. (TBH Unsure)



This won't work, at least not in a way that actually gives you the other faction's unique technology. If your tech tree and the tech tree of your trade partner have techs with the same GenericNames, you can do tech trades, but the way it works is more along the lines of trading slot unlocks than actually trading techs.

Basically, if we have two tech trees which both include a tech with a GenericName of SuperSpecialTech1, and FlubberSuperSpecialTech1 unlocks a beam weapon that is rated at 200 damage while RubberSuperSpecialTech1 unlocks a +50 Morale +50 Food structure, then if Flubber develops FlubberSuperSpecialTech1 and Rubber has not yet developed RubberSuperSpecialTech1, Rubber can buy RubberSuperSpecialTech1 from Flubber and unlock its +50 Food +50 Morale structure but cannot acquire FlubberSuperSpecialTech1 and unlock the 200 damage beam weapon.

 

In game, you can get multiple special techs by researching the option your trading partner has NOT chosen and then you just trade it in later on. So if you want to have both mass reduction and range increase on your ballistic weapon, you just search for a trading partner that has ONE of those two and you research the other one - then you trade in the missing tech and you have both. It gets a little ugly, if everyone has researched the "cheaper production" and nobody in the universe has gone for either mass or range increase. Of course, this only works if all the techs are from the same GenericName.

 

Okay, I've imported my new slightly modified tech tree into the game, but it always say "Terran tech tree" - how can I rename it, to make it recognizable? Already re-named the internal name on the "first tech", but it seems, that is not enough.

Reply #7 Top

Quoting zuPloed, reply 3

    <DisplayName>ThalanGaiaTheory_Name</DisplayName>   <!-- these are links to strings defined in another file: e.g. data/English/Text/"ThalanTechDefsText.xml" -->
    <TechTree>Thalan_Tree</TechTree>
    <ShortDescription>ThalanGaiaTheory_ShortDec</ShortDescription>   <!-- these are links to strings defined in another file: e.g. data/English/Text/"ThalanTechDefsText.xml" -->
    <Description>ThalanGaiaTheory_Dec</Description>   <!-- these are links to strings defined in another file: e.g. data/English/Text/"ThalanTechDefsText.xml" -->

essentially this, look for data/english/text/TechDefsText.xml. Make a copy of this, too. You will find:

<StringTable>
    <Label>GenericTechTree_Name</Label>
    <String>Terran Tech Tree</String>
  </StringTable>
  <StringTable>
    <Label>GenericTechTree_ShortDec</Label>
    <String>A balanced tech tree.</String>
  </StringTable>
  <StringTable>
    <Label>GenericTechTree_Dec</Label>
    <String>A balanced tech tree.</String>
  </StringTable>

The display names in the techdefs.xml are essentially links to what is written in the in the TechDefsText.xml. For example do:
- change in TechDefs.xml:

<DisplayName>GenericTechTree_Name</DisplayName>
to
<DisplayName>TheadRatsTechTree_Name</DisplayName>

- then change in TechDefsText.xml:

<StringTable>
  <Label>GenericTechTree_Name</Label>
  <String>Terran Tech Tree</String>
</StringTable>

to

<StringTable>
  <Label>TheadRatsTechTree_Name</Label>
  <String>Tech Tree of the Thead Rats</String>
</StringTable>

Reply #8 Top

Ah, I see. I've just renamed everything in my custom tech tree from generic to my new name and also created a new TechDefsText.xml where I replaced everything Terran/Generic to the new name and the game crashed. I'll try it out. Thanks!

 

So many tiny things to take care of... :D

 

phew... okay, here is what I've got:

 

Tech-tree data file:

named: ShevaTechDefs.xml

begins with:

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

<Tech>
<InternalName>ShevaTechTree</InternalName>
<GenericName>TechTree</GenericName>
<DisplayName>ShevaTechTree_Name</DisplayName>
<TechTree>Sheva_Tree</TechTree>
<ShortDescription>ShevaTechTree_ShortDec</ShortDescription>
<Description>ShevaTechTree_Dec</Description>
<ColorDef>TechBlue</ColorDef>
<Icon>GC3_Engineering_Tech_Icon.png</Icon>
<RootNode>true</RootNode>
<ResearchCost>0</ResearchCost>
<AICategoryWeight>
<Military>1</Military>
<Growth>1</Growth>
<Tech>1</Tech>
<Diplomacy>1</Diplomacy>
<Expansion>1</Expansion>
<Wealth>1</Wealth>
<Influence>1</Influence>
<Fortification>1</Fortification>
</AICategoryWeight>
</Tech>

<Tech>
<InternalName>ShevaColonizationTech</InternalName>
<GenericName>ColonizationTech</GenericName>
<DisplayName>GenericColonizationTech_Name</DisplayName>
<TechTree>Generic_Tree</TechTree>
<ShortDescription>GenericColonizationTech_ShortDec</ShortDescription>
<Description>GenericColonizationTech_Dec</Description>
<ColorDef>TechGreen</ColorDef>
<Icon>GC3_Colonization_Icon.png</Icon>
<Bink>GC3_Colonization_Temp.bk2</Bink>
<ResearchCost>0</ResearchCost>
<Tags>NonMilitary</Tags>
<AICategoryWeight>
<Military>12</Military>
<Growth>20</Growth>
<Tech>18</Tech>
<Diplomacy>6</Diplomacy>
<Expansion>16</Expansion>
<Wealth>8</Wealth>
<Influence>10</Influence>
<Fortification>14</Fortification>
</AICategoryWeight>
<Prerequ>
<Techs>
<Option>TechTree</Option>
</Techs>
</Prerequ>
</Tech>

 

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

 

The text file under English --> Text

ShevaTechDefsText.xml

<Label>ShevaTechTree_Name</Label>
<String>Shevas Technologiebaum</String>
</StringTable>

<StringTable>
<Label>ShevaTechTree_ShortDec</Label>
<String>Schiffsbaumeister Technologiebaum.</String>
</StringTable>

<StringTable>
<Label>ShevaTechTree_Dec</Label>
<String>Schiffsbaumeister Technologiebaum.</String>
</StringTable>

<StringTable>
<Label>ShevaColonizationTech_Name</Label>
<String>Kolonisierung</String>
</StringTable>

 

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

 

I GUESS, I also have to rename:

<DisplayName>GenericColonizationTech_Name</DisplayName>
<TechTree>Generic_Tree</TechTree>
<ShortDescription>GenericColonizationTech_ShortDec</ShortDescription>
<Description>GenericColonizationTech_Dec</Description>

... to from "Generic" to "Sheva", right?

Anything else?

 

(Up to now, the game crashes - something is still wrong... I also wonder, how the game knows about the correct buildings inside the tech - I guess its included in the specific tech trees of the other species, like the Thalan tech tree, so I guess I should stick with for example:

<Tech>
<InternalName>ShevaGravitonicSpecialization2</InternalName> <!-- START GRAVITON  -->
<GenericName>GravitonicSpecialization2</GenericName>
<DisplayName>ThalanGravitonicSpecialization2_Name</DisplayName>
<TechTree>Thalan_Tree</TechTree>
<ShortDescription>ThalanGravitonicSpecialization2_ShortDec</ShortDescription>
<Description>ThalanGravitonicSpecialization2_Dec</Description>
<ResearchCost>60</ResearchCost>
<TechPoints>1</TechPoints>
<Specialization>ThalanGravitonicSpecialization</Specialization>
<AICategoryWeight>
<Military>18</Military>
<Growth>16</Growth>
<Tech>10</Tech>
<Diplomacy>8</Diplomacy>
<Expansion>20</Expansion>
<Wealth>8</Wealth>
<Influence>14</Influence>
<Fortification>12</Fortification>
</AICategoryWeight>
<Stats>
<EffectType>ShieldMass</EffectType>
<Scope>Global</Scope>
<Target>
<TargetType>Ship</TargetType>
</Target>
<BonusType>Multiplier</BonusType>
<Value>-0.05</Value>
</Stats>
<Stats>
<EffectType>PointMass</EffectType>
<Scope>Global</Scope>
<Target>
<TargetType>Ship</TargetType>
</Target>
<BonusType>Multiplier</BonusType>
<Value>-0.05</Value>
</Stats>
<Stats>
<EffectType>ArmorMass</EffectType>
<Scope>Global</Scope>
<Target>
<TargetType>Ship</TargetType>
</Target>
<BonusType>Multiplier</BonusType>
<Value>-0.05</Value>
</Stats>
<Prerequ>
<Techs>
<Option>GravitonicSpecialization1</Option>
</Techs>
<TechAge>
<Option>AgeOfExpansion</Option>
</TechAge>
</Prerequ>
</Tech>
<Tech>
<InternalName>ShevaGravitonicSpecialization3</InternalName>
<GenericName>GravitonicSpecialization3</GenericName>
<DisplayName>ThalanGravitonicSpecialization3_Name</DisplayName>
<TechTree>Thalan_Tree</TechTree>
<ShortDescription>ThalanGravitonicSpecialization3_ShortDec</ShortDescription>
<Description>ThalanGravitonicSpecialization3_Dec</Description>
<ResearchCost>60</ResearchCost>
<TechPoints>1</TechPoints>
<Specialization>ThalanGravitonicSpecialization</Specialization>
<AICategoryWeight>
<Military>18</Military>
<Growth>16</Growth>
<Tech>10</Tech>
<Diplomacy>8</Diplomacy>
<Expansion>20</Expansion>
<Wealth>8</Wealth>
<Influence>14</Influence>
<Fortification>12</Fortification>
</AICategoryWeight>
<Stats>
<EffectType>MovesCapMass</EffectType>
<Scope>Global</Scope>
<Target>
<TargetType>Ship</TargetType>
</Target>
<BonusType>Multiplier</BonusType>
<Value>-0.05</Value>
</Stats>
<Stats>
<EffectType>ShipRangeMass</EffectType>
<Scope>Global</Scope>
<Target>
<TargetType>Ship</TargetType>
</Target>
<BonusType>Multiplier</BonusType>
<Value>-0.05</Value>
</Stats>
<Stats>
<EffectType>SensorRangeMass</EffectType>
<Scope>Global</Scope>
<Target>
<TargetType>Ship</TargetType>
</Target>
<BonusType>Multiplier</BonusType>
<Value>-0.05</Value>
</Stats>
<Prerequ>
<Techs>
<Option>GravitonicSpecialization2</Option>
</Techs>
<TechAge>
<Option>AgeOfExpansion</Option>
</TechAge>
</Prerequ>
</Tech> <!-- END GRAVITON  -->

 

Is that correct? *begins to have a sad panda face*

Reply #9 Top

TechDefs, TechSpecilizationDefs and the TechText are what you need to change.

I would not use the Generic tree, simply because there are code blocks with the name Generic, so doing a quick rename will break this and cause the game to crash, you would  have to change each one the slow way if you do. Use the tree you want to use the most, Thalan from the sounds of it, do a quick replace of Thalan to Sheva in all 3 files, rename them to suit your new faction. Boot the game, see it it loads (It should), then you can see about editing in new tech, or changing tech ect.

EDIT:

Meh, I did a quick replace on the Thalan Tree for you, cant test it atm off to walk the dog!

Download it here.

Reply #10 Top

what are program are you using for editing .xml's?

If you are not using notepad++ allready, I would suggest you do (it's free). Among other things you have a replace function, which you can use to do the following: replace "Generic" everywhere in the file with "Sheva". Small quality of life improvement ;) doing this by hand wouldn't be fun.

edit: horemvore explained it better, my suggestion of replacing generic was stupid, replacing thalan or terran in the respective trees is better.

I don't see anything else which is wrong so far, but as I said before, I guess that's part of modding: to try things until they work und figure out things on the fly.

buildings are linked to techs in the "ImprovementDefs.xml", there you have these blocks:

    <Prerequ>
      <Techs>
        <Option>HiveTech</Option>
      </Techs>
    </Prerequ>

The HiveTech is a GenericName from the TechDefs.xml.

Reply #11 Top

Wow, nice input! Yes, I'm using notepad++. Time to test and edit. Thanks a lot guys! :) Its really helpful!

Reply #12 Top

Quoting shevanoquam, reply 6

In game, you can get multiple special techs by researching the option your trading partner has NOT chosen and then you just trade it in later on. So if you want to have both mass reduction and range increase on your ballistic weapon, you just search for a trading partner that has ONE of those two and you research the other one - then you trade in the missing tech and you have both. It gets a little ugly, if everyone has researched the "cheaper production" and nobody in the universe has gone for either mass or range increase. Of course, this only works if all the techs are from the same GenericName.

Take a closer look at the GenericNames of the specialization techs. They do not all share the same name - the three techs in IndustrialSpecialization have the GenericNames IndustrialSpecialization1, IndustrialSpecialization2, and IndustrialSpecialization3. If you and your potential tech-trading partner have both researched the specialization which has the GenericName IndustrialSpecialization1, you cannot trade for that tech with your potential partner, whether or not your IndustrialSpecialization1 and your partner's IndustrialSpecialization1 do the same thing.

This, incidentally, is also why the techs that the player has available to offer to a potential trade partner use the names of the techs in the trade partner's tech tree, and why the techs that the trade partner has available for you to purchase use the names of the techs in your tech tree. You are purchasing a slot unlock, you are not purchasing a tech.

Reply #13 Top

Quoting joeball123, reply 12


Quoting shevanoquam,

In game, you can get multiple special techs by researching the option your trading partner has NOT chosen and then you just trade it in later on. So if you want to have both mass reduction and range increase on your ballistic weapon, you just search for a trading partner that has ONE of those two and you research the other one - then you trade in the missing tech and you have both. It gets a little ugly, if everyone has researched the "cheaper production" and nobody in the universe has gone for either mass or range increase. Of course, this only works if all the techs are from the same GenericName.



Take a closer look at the GenericNames of the specialization techs. They do not all share the same name - the three techs in IndustrialSpecialization have the GenericNames IndustrialSpecialization1, IndustrialSpecialization2, and IndustrialSpecialization3. If you and your potential tech-trading partner have both researched the specialization which has the GenericName IndustrialSpecialization1, you cannot trade for that tech with your potential partner, whether or not your IndustrialSpecialization1 and your partner's IndustrialSpecialization1 do the same thing.

This, incidentally, is also why the techs that the player has available to offer to a potential trade partner use the names of the techs in the trade partner's tech tree, and why the techs that the trade partner has available for you to purchase use the names of the techs in your tech tree. You are purchasing a slot unlock, you are not purchasing a tech.

 

Oh... you are right. Wow, that changes quite a lot - I now have to search not only the tech tree for special paths, but also check the normal ones, if they are slightly different. Thanks for pointing it out, nearly missed that. :)

Reply #14 Top

Okay guys. First of all: It works! Huge thanks to all your input, I've got the modified tech tree up and running and it also includes the correct descriptions, the buildings/upgrades/modules/etc and everything is fine.

 

I've got a little issue of mixed german and english translation, but hey, its okay. 

Thing I learned:

- I cannot put together 2 lose ends of tech trees of two different species into 1. I have to decide for one and end  the other in a void. Its not possible for a tech to have two prerequesites, so I just let one under-tree finish while the "normal" tree follows on another part. This looks sometimes a little odd, like for example with the Arcean tech tree, who have different levels of modules available compared to the normal tech tree, so I ended up having one modules two times (structural integrity enhancement or something like that)

- Another thing I learned, is that I can deactivate the specialization decision by just outcommenting the specialization line and just adding them like normal technologies behind each other, while still maintaining its generic name (so, they are still trade-able) Good stuff if you have a custom tech tree and want to be a little more self-reliant when it comes to tech-trade. You just got it all.

- Yes, my tech-tree is a little big and maybe even a little OP now. When I'm finished building it, I will release it with a note that this is not really a balanced one... but if you play against multiple enemies with multiple frontlines, it can still be fun :)

- Iconians have the most OP ability, reducing the maintenance of their ships to ZERO. Mother of god, you could just spam the entire galaxy full of ships without having an economy to back it up. Thats a big one... of course, other species also have some pretty hefty abilities, but when I saw THAT... well, lets just say, it felt a little "odd" - esp. if you have a military optimized tech tree with ships that might end up with 1k maintenance/ship end game.

I still have 4 species to screen, adapt and include, but I'm getting ~1 species in ~2.5 hours, so when I'm lazy, you guys can have my OP-tech tree on friday or so. :)

Reply #15 Top

Quoting shevanoquam, reply 14

so I ended up having one modules two times (structural integrity enhancement or something like that)

Copy the Module, give it a unique Internal name(like add _101 to the end). Give your tech a new generic name, Point Module to this tech. No Duplicate :)