New Ingame Tech Tree View
(Updated on 12/29/17
Please post your comments, questions and feedback into the corresponding forum thread :)
This is a new implementation of the ingame tech tree view (F2) completely replacing the old one. It is much easier moddable, as there are absolutely no hardcoded elements. Basically each element only requires its ID, type, age and rendering mode. The positioning is done by the rendering algorithm completely.
The current renderer uses the vanilla tree node positioning, but the whole remaining design is completely customizable, including the change of background graphics, control positions and sizes, age count and much more.
A little warning at this place: The tech tree replacement seems to be pretty stable by now, but anyway there may still be random bugs difficult to spot. If you encounter a crash that was caused by the new tech tree, let me know. It will help if you can give a short description of the steps leading to the crash, as this will make it easier to fix it.
I tested the new tech tree with the UserPatch installed; as far as I know there shouldn't be any incompatibilities.
You can follow development on GitHub: tech tree view and editor.
Note: As some of you may know, a few months ago I released the TechTreeEditor. This software is compatible with the new tech tree format (as of version 1.1.0), but also capable of doing much more than just modifiying the ingame tree view. If you want to do your modding in a more graphical way, feel free to test it out.
The ZIP archive consists of three folders: "NewTechTree" is the tech tree implementation itself, providing two installation variants: "Install" is the recommended and easiest one (this one changes the EXE file to load the TechTree.dll automatically). The other one, "Inject", is useful when you don't want to change your EXE file and rather apply the tech tree DLL changes at runtime (use it when you know what you are doing).
A modded sample empires2_x1_p1.dat is in the "DATA" folder. "Editor" contains a simple application to edit the new tech tree format. Read the respective README.md files for more detailed information.
"NewTechTree\Install": Unpack the EXE and DLL files into an arbitrary folder and run the EXE file. It will ask you for the age2_x1.exe, after that click "Install". This will patch your EXE and copy the TechTree.dll into the age2_x1 folder. If you haven't already created a custom empires2_x1_p1.dat with the new tech tree, you can unpack the empires2_x1_p1.dat from the archive into your DATA folder, replacing the old one (do not forget a backup!). Now you can start your age2_x1.exe as usual. It will automatically load the new tech tree and display it ingame.
"NewTechTree\Inject": Unpack the EXE and DLL files to the age2_x1 folder of Age of Empires II. If you haven't already created a custom empires2_x1_p1.dat with the new tech tree, you can unpack the empires2_x1_p1.dat from the archive into your DATA folder, replacing the old one (do not forget a backup!). Start the game by clicking on the AoETechTree.exe that you've put into the age2_x1 folder.
"Editor": Unpack all files into an arbitrary folder and run the EXE file. You're prompted to specify a DAT file to edit (use the one from the "NewTechTree" folder for testing), and some language DLL files for proper name display. After that you can add, edit and delete tree nodes, import/export the tech tree data, modify the design, and save your changes into a new DAT file.
The tech tree view itself was built with Microsoft Visual Studio 2017, so you'll need the appropiate Visual C++ redistributable.
The editor depends on the .NET Framework 4.5. It should already be installed on current windows systems; if not, you can find it here.
To find out if all requirements are installed just start the programs, they will tell you when some dependencies are not found.
Legal Info & Credits
This software is published under the MIT/X11 license. Please read the LICENSE for further information.
- The DLL-IDs of the labels below the age emblems are no longer hardcoded (useful for mods that change age names to something that doesn't end with "Age", like "Renaissance")
Note: This update breaks compatibility with files that were created with a version prior to 1.2.2; use one of the versions 1.2.2-1.2.4 to convert those files first!
- Fixed crash when opening the tech tree during a game (thanks to danielpereira for reporting it and providing test data)
- Updated to Visual Studio 2017 -> the required redistributable changed, see above for a link
- Fixed a crash when opening DAT files with modified terrain data
- Added configurable legend labels for the recently introduced custom node background types (thanks to Bala Arizalu for the idea!)
- Fixed a crash when opening old design files
- Updated the included tree data und design files
- Added support for custom tree element backgrounds (thanks to danielpereira for the idea and for providing a rough implementation!)
- Upgraded editor to .NET 4.5
- Fixed crash when switching civs in the tech tree view
- Removed leftover vertical line below elements with hidden children
- Fixed a few crashes when copying, pasting, moving and deleting nodes
- Implemented customizable designs and tree compression
|Pages:  2 3 » Last » |
|Author||Comments & Reviews ( All | Comments Only | Reviews Only )|
I have a really big hope this is the tool what I'm looking for :)
Edit1: I tried to change my .dat file for the new structure but failed. I see the file is changed, but still not shows in editor. Also when I tried to check it in (F2) the game crashed. When used your .dat from NewTechTree folder it only worked if started the game with AoETechTree.exe, else crashed too.
Edit2: I figured out I can't simple "convert" tech tree view from old to new structure. After some tries I made it work and it showed my new changes, but still need the AoETechTree.exe. One more thing: it crashed with userpatch but worked with 1.0c.
- make the language.dll load is optional
- perhaps a language.ini support
- able to run the new .dat file's (F2) without the AoETechTree.exe
- a a way to skip rewrite the whole tech tree when loading an old .dat
(perhaps I made mistakes in my tests)
Overall: This is a really good begin. I see lot of potential in this, also suggest you to open a forum topic here: http://aok.heavengames.com/cgi-bin/forums/display.cgi?action=t&fn=9 for your tool, so you can get more feedback from community.
I hope once it will be as easy to make a whole tech tree as creating a new unit :)
[Edited on 04/16/16 @ 04:04 AM]
Hi Gallas, thank you for the quick feedback! :)
First a short step-by-step guide of how to patch an existing DAT file:
1. Load your DAT in the Editor (and specify some language DLLs).
2. Click "Import" and select the "age2_x1.ntt" from the "Editor" folder. This will put the tech tree data into the loaded DAT file.
3. Edit the tech tree data...
4. Save the edited DAT file.
To your tips:
- You are right, language DLLs shouldn't be required when editing the tech tree. That's an easy adjustment :)
- language.ini: That will also be no problem; do you have any reference for the specific file format? I can't find a tool supporting this in the blacksmith, but probably I used the wrong search keywords.
- No AoETechTree.exe: Hm, this one is a bit trickier, as I have to get the age2_x1.exe to load my TechTree.dll file. Would you like an installer similar to the UserPatch? That should be possible. EDIT: Done ;)
- Skip rewrite: Sorry, I don't get this. Do you mean the necessity of importing an NTT file for unpatched DAT files, or the incompatibility to editors like AGE?
Crash in UserPatch: Oh, I'm sorry to hear that :(
It worked for me at last, but I will try to find out if there are still configurations causing conflicts with the patches. The screenshot above in the description was taken using the windowed mode of the UserPatch (800x600), so at least it isn't fundamentally incompatible.
EDIT: Can you describe your UserPatch problems? I just installed the UserPatch with all available features, but still no crash. Can you post your configuration, i.e. a list of the enabled features leading to a crash?
Automatic conversion from old tech tree structure to new tech tree structure: No, this is not possible at the moment. I don't really understand the ES implementation as it is very complicated and contains lots of redundant information; maybe I can parse it anyway and derive some information for the new structure. Have to see what can be done :)
Thank you again for your feedback and tips - I'll try to realize all of them in the next update, probably coming very soon.
I'll create a forum topic now, I just had to wait until the blacksmith submission got approved ;)
[Edited on 04/16/16 @ 09:18 AM]
Hi Janworks, and thanks for quick reply.
Your step-by-step helped, thanks :)
About non .dll language file aoeHD language structure (is it supported?) example:
\Program Files (x86)\Steam\steamapps\common\Age2HD\resources\en\strings\key-value\key-value-strings-utf8.txt
and Voobly's mod system:
So you says there is no way to use this new tech tree structure without starting the game with your .exe?
My UP game crashed when clicked tech tree button and it was not windowed.
GL with your project!
Thanks for the INI links! This shouldn't be too hard to implement.
This mod is not compatible to AoK HD; its machine code is completely different to TC and as such would require another few months of research to discover all related code sections.
You can now patch the age2_x1.exe so it loads the TechTree.dll automatically (like the UserPatch does with wndmode.dll) - I implemented that feature just yesterday. The download archive now contains a folder "NewTechTree\Install\", where you can find a simple installer.
Here is how to use it:
Unpack the AoETechTreeInstaller.exe and the DLL files into an arbitrary folder and run the EXE file. It will ask you for the age2_x1.exe, after that click "Install". This will patch your age2_x1.exe and copy the TechTree.dll into the age2_x1 folder. Now you can start your age2_x1.exe as usual. It will automatically load the new tech tree and display it ingame.
To your UP crash: Hmm, that's strange :/
Can you send me your crashing age2_x1.exe? Maybe I'll find the reason then.
[Edited on 04/17/16 @ 05:54 AM]
Thanks for update, I'll check it.
Edit1: Seems like all ok now, but sadly this still won't work in multiplayer for me. Since I can only the .dat file and .dll is not supported + makes things much more complicated with mods.
[Edited on 04/17/16 @ 06:06 PM]
|John the Late
I figured I'd let you know that I posted in your thread at the forums. Given the fact that you posted it quite a while ago and got only little response, I thought you might not check it otherwise. :P
Great work so far!
Good tool. It can create high-quality tech trees. But, there is a problem, some of the menu items like copy and paste would cause class casting exceptions. Is this the fault of running environment?
[Edited on 12/31/16 @ 11:03 PM]
Hi WAIFor, thank you for your review!
The class casting exceptions resulted from a simple copy+paste error, no idea why I didn't run into it earlier when testing the new features :D
I've updated the file, it should work by now - if not, please let me know :)
It worked well now. Thank you for your improvement!
Hi Jan, congratulations this utility is incredible, very easy to use and functional at the same time.
However I have a crashing data that I can't figure how to fix, as well as a couple of suggestions. I've sent you an email about that :)
Keep up the great work !
|Pages:  2 3 » Last » |