siegeengineers / aoe2techtree Goto Github PK
View Code? Open in Web Editor NEWAge of Empires II Tech Tree
Home Page: https://aoe2techtree.net/
License: MIT License
Age of Empires II Tech Tree
Home Page: https://aoe2techtree.net/
License: MIT License
Hi, I'm trying to use the data.json to make a simulator.
That works great, so thanks!
But it could be even better when I had a few extra details.
I don't know which data is available exactly through the .dat file but could it be possible to add some of the below details to data.json?
Things I encountered so far:
And probably more complicated (?):
Thanks!
The wonder doesn't seem to get it's metadata right
If it helps with anything, i've made this awfulness, that althogh works, looks horrible:
if (meta !== undefined) {
text = text.replace(/‹cost›/, "Cost: " + cost(meta.Cost));
let stats = []
if (text.match(/‹hp›/)) {
stats.push("HP: " + meta.HP);
text = text.replace(/‹hp›/, "HP: " + meta.HP);
}
if (text.match(/‹attack›/)) {
stats.push("Attack: " + meta.Attack);
text = text.replace(/‹attack›/, "Attack: " + meta.Attack);
}
if (text.match(/‹(A|a)rmor›/)) {
stats.push("Armor: " + meta.MeleeArmor);
text = text.replace(/‹(A|a)rmor›/, "Armor: " + meta.MeleeArmor);
}
if (text.match(/‹(P|p)iercearmor›/)) {
stats.push("Pierce armor: " + meta.PierceArmor);
text = text.replace(/‹(P|p)iercearmor›/, "Pierce armor: " + meta.PierceArmor);
}
if (text.match(/‹garrison›/)) {
stats.push("Garrison: " + meta.GarrisonCapacity);
text = text.replace(/‹garrison›/, "Garrison: " + meta.GarrisonCapacity);
}
if (text.match(/‹range›/)) {
stats.push("Range: " + meta.Range);
text = text.replace(/‹range›/, "Range: " + meta.Range);
}
Good luck and I hope you don't get annoyed at that many bug reports haha
The in-game tech tree will display unit costs with civ bonus applied, when ur in a game playing as the civ.
For example, goths champions @39f+13g, portuguese crossbow-line @25W+36g.
That would be neat to have when players want to check the cost like they do in game, instead of calculating themselves.
It would be nice to see the cost of the Elite upgrades for units. Right now unique units, eagles, skirms, etc. have the stats of the Elite unit listed. There's no way I could see to get the cost of the upgrade.
Maybe like the in-game tech tree, it lists the upgrade cost at the end of the Elite unit description.
mobile view is still an issue, #24
right sidebar and font size is pretty large compared to a mobile display res. better make it as an "hamburger menu" to completely hide it.
tech tree doesn't fit the screen in horizontal way, also cannot select or change the civilizations from the top down menu since it doesn't fit the screen.
Unit names can't fit in their box
Unable to deselect an already selected unit / unable to close the description box
page generally does not fit horizontally.
For example, the Spanish bonus "Blacksmith upgrades don't cost gold" isn't reflected in the tech tree when the Spanish civ is selected.
I understand how conditional bonuses would be hard to implement (for example, having Supplies or not would affect the price of the Militia line), but is this possible for general bonuses for civs like the Spanish or Chinese?
I have two monitors setup in a vertical orientation and the scaling makes it some what hard to use and leaves a lot of dead space, It would be nice if the information on the left was moved to the top so that move of the technologies fit on the screen. Also it seems like the icons could be a little smaller in vertical orientation like this.
The problem is you can view the specified civ info if you type first letter in UPPER CASE like "Chinese".
If you type in full lower case like "chinese" after "#" the website show "Aztecs".
If you can change letter to lowercase it'd very useful for common using.
Thanks.
Hi,
as the title says the TC build time in the techtree is stated as 100s.
Other sources like:
https://ageofempires.fandom.com/wiki/Town_Center_(Age_of_Empires_II) or
https://aoe2stats.net/#
say that it should be 150s or 2:30 minutes.
Further suggestions
You could also add the Town Center field in Feudal Age for cumans. Maybe with a note that only one can be build, and the build time is 270s. (I was searching for the cuman TC build time when I stumbled over this).
Siege Tower is absent from the tech tree.
You already have the unit image:
https://aoe2techtree.net/img/Units/siege_tower.png
and the description:
https://github.com/HSZemi/aoe2techtree/blob/master/data/data.json#L200
I guess you just need to add it there:
https://github.com/HSZemi/aoe2techtree/blob/master/js/techtree.js#L504
and something like here:
https://github.com/HSZemi/aoe2techtree/blob/master/js/techtree.js#L686
Hello, nice endeavour thank you :)
You extract data/data.json from dat files.
But reverse-engineered js/civs.js right? What about putting the civ/tech-tree-disable map in a json file too ? js folder was the last directory I was expecting finding such data.
I am considering flattening into a multi-civ tech chart like those ancient ones did (is there really no such one for DE? Dayum they just milking the cow...):
https://www.redbubble.com/people/mammothtank/works/29656608-age-of-empires-2-civilization-tech-tree?p=poster
I got a question from a user of my app:
"What’s the hd stand for in hd camels. +3 damage only against camels with high definition, low graphics camels will not be effected? 😂"
https://github.com/SiegeEngineers/aoe2techtree/blob/master/index.html#L140
Is the HD referring to the AoE HD version? It can probably renamed to just "camel", right?
https://ageofempires.fandom.com/wiki/Armor_class:_Camel
My understanding is that it comes form aoe2dat.
Could whatever script exports aoe2dat into the aoe2techtree repo be added in here?
I ask because https://github.com/Treee/aoe-tech-tree-widget is now using the techtree data and I wanted to investigate improving the import flow.
There's some really exciting things that could happen if we redesign the content of the helptext popup card when selecting a unit. That said, this would take the design farther away from the in-game tree.
For example, here's a possible before and after:
I have this online here: https://paulirish.github.io/aoe2techtree/ (from a branch back in April)
@exterkamp and I explored a few more ideas in this doc: https://docs.google.com/document/d/1jgDrIsBGoJZfTVcapuh9E-3yZAk5OyBFfuqTA8cJ1fI/edit
eg, more use of icons:
and linking to buildings where the upgrades are available (though ideally, do #61)
I'm curious if folks are interested in exploring these kinds of ideas. If so, I figure we can debate the UX a bit before I put up a PR for review?
Currently frame delay is displayed in frames. But different unit animation are done at done at different frame rates. This makes the number quite meaning less. Further most animation were in about 20 fps in the original game and at 60 fps in DE. This also leads to a big disparity between the numbers for both versions. It would be much better if this attack delay is displayed in seconds instead.
How I find frame delay in seconds?
I will demonstrate this with crossbowman in AGE.
So crossbowman shoot after 0.35 seconds. In comparison Arbalester has Frame Delay = 20, Frames per angle = 45 and Animation duration = 0.77. This gives animation duration of 0.77*20/45 = 0.342.
This shows that even though crossbowman and arbalester have different frame delay in frames, they are almost same in seconds.
Hi, I want to display more detailed stats about some buildings (e.g. attack bonuses for tower, castle) in my app. This information is already in the data file for units but incomplete for buildings. Is it possible to add this to your data file?
For the watch tower the following data exists:
"79": {
"Attack": 5,
"Cost": {
"Stone": 125,
"Wood": 50
},
"GarrisonCapacity": 5,
"HP": 700,
"ID": 79,
"LanguageHelpId": 26178,
"LanguageNameId": 5178,
"LineOfSight": 10,
"MeleeArmor": 1,
"PierceArmor": 7,
"Range": 8,
"TrainTime": 80,
"internal_name": "WCTW"
},
But in the aoe wiki there is also data about attack classes:
https://ageofempires.fandom.com/wiki/Watch_Tower_(Age_of_Empires_II)
that is a huge let down. the main reason i used this tech tree was because it was a nice concise view that i could quickly reference for armor classes and bonuses. why would you remove that???
Hi, I want to display the upgrade cost and research time in my app. Is it possible to add this to your data file?
I know I can use the description text e.g.
Upgrades: range, attack (University); to Heavy Scorpion 1000F, 1100W (Siege Workshop); more resistant to Monks (Monastery).
But there the research time is missing and I am displaying the range/attack upgrades etc. in another way already.
Hi there, I noticed a few discrepancies in ordering between the Definitive Edition in-game tech tree and the site, most of which are due to differences between the DE and HD tech trees.
Blacksmith/Siege Workshop have moved to between the Stable and Dock, from between Town Center and University in HD. Internal to this, Mangonels and Rams are reversed under Siege Workshop -- in both HD and DE they are consistent with their position in the building menus where Rams are on the left.
The University is now between the Dock and Towers, instead of Blacksmith and Mining Camp in HD.
The Wonder (and Feitoria on the Portuguese tree) are now between Town Center and Mining Camp instead of between Stable and Dock in HD.
Krepost is found between Castle and Monastery on the Bulgarian tech tree, rather than between Stable and Dock, and it shows the Konnik as a buildable unit.
These are rather minor issues I know, but the Blacksmith/University ordering in particular really throw me off whenever I switch between the website and game trees. I'd totally understand if you're keeping it this way to match HD Edition, however since the dataset is based on the latest version of DE, I figured consistency in alignment would make the most sense. Anyway, love the site - keep up the good work!
The AoE2 wiki shows both CA and HCA has the same Frame Delay of 10: https://ageofempires.fandom.com/wiki/Cavalry_Archer_(Age_of_Empires_II)
https://ageofempires.fandom.com/wiki/Heavy_Cavalry_Archer
But here, the Frame Delay increases by quite a margin from CA to HCA (35 to 46), how?
See title.
Greetings from FE! We love your techtree. 👍
Hi, I was trying to view this on a mobile while killing some time today.
I was unable to select other Civ's aside from the default Aztec as i couldnt see the drop down.
Thanks for this website tho its awesome!
The newly added civTechTrees.json
contains easily readable structural information about the tech tree for each civ. This finally enables us to somewhat accurately reproduce the in-game tech tree for each civ in the definitive edition.
Having a dedicated tree layout for each civ means that it is possible to sensibly display the effects of Cuman and Burgundian civ bonuses, namely having certain items available in earlier ages.
However, this would then be inconsistent with the general approach to applying civ bonuses in the tech tree – which is to not apply them. Mainly because it would be a lot of work to implement a framework to figure out the correct numbers for cost rebates etc., and nobody has invested the time to create that yet.
The approach of having a common tree layout for all civs that includes all extra unique units has the advantage that you have immediate access to their stats at any time, and do not have to remember and switch to their respective civ first. It inflates the tree a bit though.
data/locales/ru/strings.json id=120177 - part about Farmers don't require Mills/Town Centers to drop off food
is lost.
Literary translation for this part: Фермерам не нужно относить добытую еду в мельницу/городской совет
.
With AoE2DE it would be nice to also switch between different balancing datasets, I think. TriRem had posted a paste somewhere collecting all the changes. don't really find it now, though.
Update: Also here from FE a basic changelog.
SyntaxError: invalid regexp group civs.js:1:1
ReferenceError: civ is not defined aoe2techtree.net:311:9
ReferenceError: civ is not defined aoe2techtree.net:311:9
ReferenceError: civ is not defined 33 aoe2techtree.net:311:9
ReferenceError: civ is not defined 2 aoe2techtree.net:311:9
ReferenceError: civsConfig is not defined 3 aoe2techtree.net:592:27
Everything is always marked with an X, changing civs doesn't do anything
Sometimes when reading the description of a tech I wonder what exactly will be affected by it.
I am creating this issue after trying to figure out if 'Farimba' affects camel riders or not (in the description we see that it affects 'Cavalry'). Another popular confusion is the blacksmith armor lines and ranged mounted units.
I would suggest to add a list of tech ids for every unit and building in the data.json since the other direction of the relation is far less important.
The Xolotl Warrior is missing in the tech tree:
https://ageofempires.fandom.com/wiki/Xolotl_Warrior
It is not a much used unit but it may be worth to include it for completeness.
Town Center Cost is incorrectly displayed as costing only 275W. The correct cost should be 275W 100S.
In data.json there are two buildings that use the LanguageNameId 5164 corresponding to the Town Center. Buliding ID 71 (line 186) and Building ID 109 (line 357). Building ID 71 shows the cost of the TC to be only 275W while building ID 109 shows the correct 275W 100S value.
This value is used as a constant in techtree.js to define the TOWN CENTER (line 31).
Currently, the website is the 1st Google result of "aoe 2 tech tree" and the 3rd result in "age of empires 2 tech tree". However, searching in Simplified Chinese (keyword: "帝国时代2 科技树") does not include this website at all. This may also happen to the other languages.
Adding hreflang
in html may help: Google docs https://developers.google.com/search/docs/advanced/crawling/localized-versions.
I'm not too familiar with the pull request process, so I'd like to submit a suggestion.
Add the below javascript into the "index.html" script section to allow users to navigate between Civs they have looked at. This will allow users to more conveniently compare tech trees of multiple Civs via the Back and Forward buttons. Also, users will not have to solely rely on the Civ Selection Dropdown to navigate the site.
//Update the Civ based on the url hash to support browsing history navigation changes
window.onhashchange = function(){
let hash = window.location.hash;
let civselect = document.getElementById("civselect");
if(hash.split('#')[1] != civselect.value && hash != "")
{
civselect.value = hash.split('#')[1];
loadCiv();
}
};
I have found some differing stats for the Konnik mounted vs. dismounted in the AoE II wiki:
https://ageofempires.fandom.com/wiki/Konnik
E.g. pierce armor:
1, 2 (Elite)
0, 1 (Elite) (Dismounted)
In the tech tree the pierce armor of the mounted Konnik seems to be used.
Are there maybe two units in the AoE II Dataset? One for the mounted and one for the dismounted Konnik?
This would also be interesting for implementation of counter units of the different Konnik versions here:
denniske/aoe2companion#10
As a regular user, I'd hit it!
I would really like to have the collapsable cross reference UI!
Currently, the panel is so tall that it overflows my screen:
The other option is just fixing the code that positions the help panel. Either options would result in a great outcome imho. Cheers~
Originally posted by @pardoman in #15 (comment)
Put it in the position where the civ name is at the moment,
I would provide pull request if needed.
Both are showing Sultans in tooltip.
When clicking on eg. these no info is shown.
Kipchack
Steppe Husbandry
Cuman Mercenaries
Goto and click some of these above.
https://aoe2techtree.net/#Cumans
Maybe you are already working on it but here is an issue for tracking purposes. The Lords of the West expansion introduced the coustillier which has the charge mechanic. This can be displayed in the stats.
This number can be seen in AGE as Max Charge and Recharge Rate. If I get some time over the weekend I shall write a PR to add it.
to build an analytic dashboard it would be great if the json could contain reference id's. ie. what unit belongs to what civ and what building can create what unit. It is somewhere in the scripts, of the html page, for me a little difficult to rebuild
Currently the tech tree is only available in English. We could take the strings files of all available languages and make the tech tree available in those languages as well.
This would mean:
en
as the default language)It would be nice to have an all-available Civilization to be able to show the techtree without any techs and units crossed out. This would be helpfull to show beginners all the units and techs at once. This might be even better with an option to (not) show unique units and techs.
Hey guys, i got an issue as i tried to watch the AOE 2 Tech tree on internet, both on my computer and on my mobile phone. I can't see the top of the page and so i can't change the civs and can't see all the feodal age possibilities.
I tried to use an other research engine, didn't changed anything.
Love the work you do btw !
New on GitHub so don't be mean ;)
The new scrolling feature creates a bizarre and trippy experience on my devices. For research and web browsing I use devices that have excellent omni-directional scrolling built-in, such as the standalone Apple Touchpad, or a Mac Laptop. So naturally, overriding that leads to not only a degraded experience, but unexpected and strange behavior.
Here is an idea for a fix:
If scrolling is a 2D vector, if at any time the x component is observed to be nonzero, set a flag to indicate "This user wishes to control their own horizontal scroll" and skip any custom scrolling behavior entirely for that user, from that point forward. That way, only users using a simpler input device, which only scrolls on the Y axis, would have their scrolling overridden.
Personally however, my vote (for what it's worth) would be for removing the new behavior entirely. Here's why:
The reason I believe it should be completely removed is, users have legitimate reasons for wanting to scroll vertically, and this feature not only takes that away from them, but replaces it with a strange unexpected behavior -- even with a conventional mouse and scroll wheel. For instance, maybe they need to view the site in a smaller window. That may seem like a sub-optimal way to browse the site, but why should the site dictate preconditions for how users must use it? It doesn't seem right to include behaviors that punish some users for browsing the site like they would any other website.
If it's really essential to make the scroll behavior work exactly like in game, realize that the game itself comes with a lot of assumptions. The game is designed for a mouse-PC combination. Honestly, anytime I'm at my PC and thinking about this game, I'm playing it. For me personally, the tech tree site is for occasions when I need to consult the tech tree from a secondary device, like a laptop.
I also feel like any developer who has experienced just how smooth built-in omnidirectional scrolling can be on some devices would never want to take that away, just to provide a small convenience to other users who already have equivalent means at their disposal (including scrolling with the keyboard arrows). There is no alternative equivalent to smooth built-in omnidirectional scrolling -- once you take it away, it's gone :(
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.