siegeengineers / auto-mods Goto Github PK
View Code? Open in Web Editor NEWsome data mods, generated programmatically, so they can be recreated automagically for every new patch
License: MIT License
some data mods, generated programmatically, so they can be recreated automagically for every new patch
License: MIT License
I just thought that we could give the possibilities to (automagically) create DAT
file patches from a customized DAT
in a mod and an original version
. These patches we could store in a human-readable form (yaml, toml) and parse them in auto-mods to then reapply them after game patches. ๐ค We could get around some boilerplate with this for each mod-patch
I guess?
Hmm, what do you people think? Is it just a brainfart and I'm overlooking something?
As the DAT-file patch in human-readable form is describing somehow the whole process, we can also use it to verify
and therefore test
what we did when applying our patch to a new DAT.
Byzantine castle HP overflow occurs with 4 byzantine players or with 3 byzantine players and a fourth with hoardings and architecture. Easy fix would be to add hoardings to the banned shared tech list as that'll prevent the overflow from ever happening while still leaving Byzantines with the highest castle HP.
Trade carts keep getting stuck at the periphery of the market. Happens in every game once caravan is researched by 4 players. This needs some kind of collision avoidance. Haven't tested trade cogs or interactions with caravanserais. Easiest fix would be to make the market walkable. Well, I don't actually know how difficult that would be to script in TBH. Perhaps make only the center solid and leave the peripheries walkable? Either way, this would fix the problem without changing gameplay too much like making making trade carts themselves phase through each other. Docks and trade cogs probably need the same treatment but I haven't tested this...
Thanks!
Both castle techs "Paiks" and "Mahayana" are only researchable 1 time.
Economic mods can not be repeated from mule carts, tested with both Georgians and Armenians.
@HSZemi thanks for the feedback! I have a couple of questions and notes.
My friends and I discovered the random mod a few weeks ago and have been avid fans. For the first few games, it was fun every time, but after a couple days we quickly noticed that most of random mod games had devolved into one or both of these two fairly predictable metas:
Castles are cheap. Castles are normally 650 stone, so in the random mod if they are significantly cheaper (they almost always are) the game devolves to castle spam around your base with a race to a wonder.
Discover spam unit with a very low cost as quickly as possible. In many scenarios, the random cost mod devolves into an aging up race to see who can discover a cheap spammy unit the fastest. If someone discovers a spam unit just slightly before someone else, the game is over, as they will overrun others without time to respond. Furthermore, the spam unit negates the need to maintain an economy, and so a major element of gameplay.
I believe random mod has a replay value problem. Those above metas are hilarious and a joy the first few times. After that, they become tedious and repetitive. I think a random mod, ultimately, should give a variety of random experiences and fresh strategies to players so they always need to think on their feet, but if the random mod usually falls into two metas this is no longer the case. I think one of the beauties of the random mod itself is that it DESTROYS the traditional AOE2 metas. Every day, there's a new meta. It feels fresh and new and it forces you to think out of the box, after you've been playing AOE for so long and dust has settled on your brain and you can basically play the game without thinking.
But I agree that the random mod is so fun at first that it should probably remain as it is. I propose a new mod, something like "Random Mod Balanced" targeted with some sane defaults, like preventing castle spam and units costing 1 wood, that players can transitions into if they become fans of the default random mod and want to transition into something more nuanced. Is this something you would considering publishing through Siege Engineers if I make the code mods for it? A lot of my friends have stopped playing Random Mod because of the metas and they said they'd be interested to come back if we there was a more balanced version that prevented those two metas I mentioned.
If not, do you mind giving me some information on how to set up a build system? Is it a lot of work to set up? Do ya'll have a server somewhere that publishes the new random mod every day? Is that script in the repo here? I don't see any devops scripts. And how do you detect when new AOE patches go out, and thus when a new fresh dat is available for moding? Does AOE provide an api or something for getting the fresh dat file?
Thanks for your time!
Originally posted by @FilmCoder in #12 (comment)
@FranciscoDA Sorry, please excuse me if this question seems stupid. I can't seem to get create-data-mod
running with the gdb
debugger. Are there steps you all have taken to get that working? I tried building with debug flags:
cmake -DSTATIC_COMPILE=TRUE -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .
And I also tried adding set(CMAKE_BUILD_TYPE Debug)
to CMakeLists.txt
Is there something I'm missing? Shouldn't that add the -g
flag to the g++
compiler under the hood so we can run gdb
with symbol tables?
But when I do gdb create-data-mod
I get: (No debugging symbols found in create-data-mod)
Once again I apologize if this question seems stupid, I'm pretty rusty with my c++ and makefiles
repro:
compile and make a x256 mod, (mine was with random costs) launch a game with the mod, spam click on supplies or another tech
and your game might crash (after a few tries with different techs)
Do we want to activate Github Actions in this repository and have some basic CI? For the beginning just to check if it still builds when people PR? In the future maybe even autoupdating mods and uploading them to the Mod workshop after a new update or so?
Usage:
error as described
F in the chat.
Burgundians have a civ bonus that makes economic techs cost 33% less food. Chinese have a similar bonus that reduces costs on techs. For chinese all of 9x techs are reduced. Burgundian's cost reduction however only applies to the first tech.
Whatever means of implementing the chinese tech cost reduction bonus to work for all 9x techs should be used for burgundians as well for consistency.
Also, thank you for the quick fix on the last bug report I submitted
genieutils/CMakeLists.txt
requires libiconv-dev, however this library doesn't exist on modern Ubuntu versions, as libiconv-dev has since been merged with libc6-dev. CMake doesn't recognize the libiconv-dev section of libc6-dev, causing compile to fail with error
CMake Error at genieutils/CMakeLists.txt:19 (find_library):
Could not find iconv using the following names:
-- Configuring incomplete, errors occurred!
See also "/media/imperatorstorm/Storage/auto-mods/build/CMakeFiles/CMakeOutput.log".
256x crashes way too many times. The reason as to why this behaviour occurs is unbeknownst to me. Oddly enough, 9x seems to function quite fine. Perhaps a middle ground of around 50x could guarantee enough chaos whilst minimizing the quantity of bugs brought to the game when using 256x?
I'm not able to confirm this myself because I haven't bought the DLCs yet. But I have a bug report on my mod (which uses your 9x tech mod as a base), where the guy is saying Roman's castle techs are not 9x researchable. Just passing this message along, I would fix it myself but I only really know how to tweak tech values, I do not know how to make techs repeatedly researchable.
Hello, I've been trying to run this script in order to create my own automated mod.
I followed the instructions on how to run this on Ubuntu, they worked great for installing the dependencies and compiling. However when I run it, I either encounter an error, or the code executes fine but then the output data file can't be opened with Advanced Genie Editor, whereas the original 'empires2_x2_p1.dat' can without problem.
Examples of what I tried:
./create-data-mod x3 ../../empires2_x2_p1.dat ../../test.dat
Result:
Loading ../../empires2_x2_p1.dat...
Terrains: 200
Applying the following modifications in order:
x3
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 3) >= this->size() (which is 0)
Aborted (core dumped)
./create-data-mod random-costs ../../empires2_x2_p1.dat ../../test.dat
Result:
Loading ../../empires2_x2_p1.dat...
Terrains: 200
Applying the following modifications in order:
random-costs
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 18446744073709538561) >= this->size() (which is 1701)
Aborted (core dumped)
./create-data-mod + ../../empires2_x2_p1.dat ../../test.dat
(I was trying to make it not apply any mod, just load and save)Result:
Loading ../../empires2_x2_p1.dat...
Terrains: 200
Applying the following modifications in order:
Unknown mod identifier: ''
Unknown mod identifier: ''
Saving as ../../test.dat...
Terrains: 200
Done.
The execution seemed successful, but then I noticed that the saved 'test.dat' is different from the original 'empires2_x2_p1.dat'. The first one being at 3731Ko and the second one at 4065Ko, so clearly they're different. On top of that, when I try to open test.dat with the Advanced Genie Editor, this is what I get:
I'm wondering if you also encounter the same issue in your environment with the latest AOE2DE patch. I've tried running your code on both Windows and Ubuntu and some behaviors were different but the simple loading/saving gave the same result as shown above on both OS.
Do you have any idea of what I can try to make it work?
I appreciate your help.
Researching supplies a second time crashes the game with Armenians, Georgians, and Persians.
Also tested with Bulgarians and it did not crash with them, so it seems like its just the new/reworked civs.
EDIT: Also crashed with Celts so not just new civs.
Researching guilds resets the market bonus to 15% and overrides the Saracen market bonus. Worse still, this happens for all the players including the Saracens. Probably should make both guilds not override the saracen market bonus or prevent sharing for both
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.