You must be logged in to post messages.
Please login or register

AI, RMS Scripting, and Modding
Moderated by Yeebaagooon, TAG

Hop to:    
Welcome! You are not logged in. Please Login or Register.48 replies
Age of Mythology Heaven » Forums » AI, RMS Scripting, and Modding » Age of Mythology: Reverse Engineered
Bottom
Topic Subject:Age of Mythology: Reverse Engineered
« Previous Page  1 2  Next Page »
WarriorMario
Mortal
posted 08 April 2018 03:53 PM EDT (US)         




Age of Mythology: Reverse Engineered




This is a school project which I started last December to learn more about assembly programming and reverse engineering.
I thought it would be a good idea to look at Age of Mythology and see what I could learn from it while also trying to break the hardcoded limits of AoM modding.
My initial focus was on the limitation of not being able to add new cultures and civilizations which many modders (including me) have tried to overcome with several workarounds but have never really managed.

Now this is still a work in progress but it already has the features required to add cultures and civilizations!



  • Custom Cultures & Civilizations
    It is now possible to add new cultures and civilizations through editing the new cultures.xml! This will add new tags to the proto, techtree, anim, sounds and adds new keywords to xs.
  • Progression Techs
    Age up progession bar can now be linked to any technology added to the progressiontechs.xml
  • Godpicker Page System
    Clicking on the random button will switch out the old options with the new custom gods which can be selected:


  • ImGui
    Hooked into the graphics of the game which made drawing ImGui development UI possible! Here is an example of development UI displaying a list of all world objects:




    Download Here



    My time is somewhat limited (~8 hours per week) but I want to continue working on adding new features and improve modding support so make sure to drop some suggestions in the comments below!
  • Bug Fixing & Cleanup
    Culture support is a bit hacked together atm and probably some other features have bugs as well.
  • Text Language File
    Currently I just quickly hacked this for some of the culture and civilization names but it should be possible to trick the game into using a text file instead of the DLL which makes things a lot easier to modify.
  • Recorded Game Observer Bug
    Recorded games with more than one observer are currently broken.
  • Increasing Pop limits
  • Adding new ages
  • Adding new cheats



    Lecio
    For helping me learn assembly, some awesome ideas on how to approach certain issues and being a great rubber duck.

    People that helped testing:
  • Venlesh
  • Callistonian
  • XLightningStormL
  • WollieWoltaz

    We cannot rely on luck to be successful.

    [This message has been edited by WarriorMario (edited 05-16-2018 @ 04:29 PM).]

  • AuthorReplies:
    King DiNido
    Mortal
    posted 21 May 2018 02:03 PM EDT (US)     26 / 48       
    Hell no? Is it in any of your triggerpacks. I bet my sh*t (somewhat, haha) I used some of your packs and remember no such option. May you explain in private how did you achieve this - which files you mod (proto i suppose..)
    nottud
    Mortal
    posted 22 May 2018 07:27 AM EDT (US)     27 / 48       
    Try this trigger:

    <Effect name="Decrease current population count player range">
    <Param name="p1" dispName="lowest player" varType="player">1</Param>
    <Param name="p2" dispName="highest player" varType="player">4</Param>
    <Param name="q" dispName="amount" varType="string">200</Param>
    <Param name="inv" dispName="invisible unused unit" varType="protounit">Blood Gore</Param>
    <Param name="Location" dispName="" varType="area">0,0,0</Param>
    <Param name="b" dispName="NOTE" varType="string">Amount to modify by must be an even number and this trigger can only be used once for each player!</Param>
    <Param name="a" dispName="NOTE" varType="string">Use oar footprint if map is water instead.</Param>
    <Command>trQuestVarSet("PlayerID", %p1%);</Command>
    <Command>while(%p2%>=trQuestVarGet("PlayerID")) {</Command>
    <Command>trArmyDispatch(""+1*trQuestVarGet("PlayerID")+",0","%inv%",2,%Location%,0,true);</Command>
    <Command>trModifyProtounit("%inv%", trQuestVarGet("PlayerID"), 6, 2147483500.0);</Command>
    <Command>trModifyProtounit("%inv%", trQuestVarGet("PlayerID"), 6, 127.0);</Command>
    <Command>trModifyProtounit("%inv%", trQuestVarGet("PlayerID"), 6, (-0.5) * %q% + 1);</Command>
    <Command>if(trQuestVarGet("zzzzlifespans"+1*trQuestVarGet("PlayerID")) != 1){</Command>
    <Command>if("%inv%" == "blood gore")trModifyProtounit("%inv%", trQuestVarGet("PlayerID"), 8, -3.999);</Command>
    <Command>if("%inv%" == "oar footprint")trModifyProtounit("%inv%", trQuestVarGet("PlayerID"), 8, -4.999);</Command>
    <Command>trQuestVarSet("zzzzlifespans"+1*trQuestVarGet("PlayerID"), 1);}</Command>
    <Command>trQuestVarSet("PlayerID", trQuestVarGet("PlayerID")+1);}</Command>
    </Effect>

    [This message has been edited by nottud (edited 05-22-2018 @ 07:28 AM).]

    King DiNido
    Mortal
    posted 22 May 2018 09:34 AM EDT (US)     28 / 48       
    As the forum not allowing for private messages, I'll put it here instead. I've never in my life done triggers, nor used that beyond downloading them to have (I think). Funnily too, I never used the map editor at all, despite the considerable age the game is. Last thing I had modded in my game was Ekanta's modified interface, nothing else except scenarios lol

    Beyond that I have been knowing AoM for the past 15 years pretty well, playing versus AI most times now and then, wherever I feel sick of the new-age rts'.

    Appreciate any effort into explaining how does that work to have in the game for both random maps and LAN games with my neighbours... sorry for my real ignorance. Thanks man!
    TAG
    AoMH Seraph
    (id: aom expert)
    posted 22 May 2018 10:27 AM EDT (US)     29 / 48       
    to this day I never understood why people just throw trigger code at everybody and say try this trigger, when there's more practical and structurally sound ways to go about it.

    Check out my YouTube
    For live help with me, enter this chatroom. If I'm not on you can leave a message.
    nottud
    Mortal
    posted 22 May 2018 12:08 PM EDT (US)     30 / 48       
    Ok if you wanting to affect normal random maps fair - if you got EE you can use this:

    https://steamcommunity.com/sharedfiles/filedetails/?id=257486956&searchtext=infinite+population

    Note that due to bugs with the RM transfer system you may find it only will work if both of you have the mod.

    [This message has been edited by nottud (edited 05-22-2018 @ 12:09 PM).]

    King DiNido
    Mortal
    posted 22 May 2018 12:25 PM EDT (US)     31 / 48       
    Woopsies, did I not mention I am using my original CD's to run the game... Both my friends too. I hate EE for 2 reasons: 1, poor post-release support, 2, poor post--release support.

    My last post, I meant if we can get around the pop limit in some easy way for players to use - like a patch or something more convenient. Triggers are cool, but anything better is welcomed.
    Yiome
    Mortal
    posted 31 May 2018 01:56 PM EDT (US)     32 / 48       
    @WariorMario

    -researchByID(int techID, int researchingUnitID, int playerID)
    Start the research of techID from ResearchingUnitID;

    *researchByName(string techName)
    Deprecated. Start the research of the named technology from the first valid selected unit.

    This is useful to make keyboard shortcuts to technologies, It was probably canceled in the 1.03 update;

    -researchCancelByID(int techID, int unitID, int playerID)
    Cancel the research techID from UnitID.
    Nanodude
    Mortal
    (id: geodude)
    posted 02 June 2018 04:20 AM EDT (US)     33 / 48       
    I thought adding new Civs was already possible? Last time I fired up Xin Dynasty it was a new civ iirc. Obviously not EE.

    http://aom.heavengames.com/cgi-bin/forums/display.cgi?action=ct&f=19,24519,,all

    <3
    Yiome
    Mortal
    posted 09 June 2018 00:05 AM EDT (US)     34 / 48       
    Ui stretches and that's not cool.

    http://aom.heavengames.com/cgi-bin/forums/display.cgi?action=ct&f=12,29833,,all

    I do not know what rule specifies that this does not happen in aom tod. It would be nice to have it in your patch.
    Leto II
    Mortal
    posted 22 June 2018 04:45 AM EDT (US)     35 / 48       
    XLightningStormL
    Mortal
    (id: TheBronyKing11)
    posted 22 June 2018 06:47 AM EDT (US)     36 / 48       
    Leto II? the big lad himself?

    Quick question, back in 2014 you mentioned something of the lines of having a bunch of unused AoM modding stuff, any dice of releasing any of that, just at least as modder's resources so they don't go entirely to waste?

    Lead Designer and Producer of Age of Mythology's biggest mod compilation: http://aom.heavengames.com/downloads/showfile.php?fileid=11038
    ThaneWulfgharn
    Mortal
    posted 24 July 2018 11:25 AM EDT (US)     37 / 48       
    Hmm... How exactly did you do it?

    I'd like to learn - for an old project of mine I'm resuming. It practically requires to add a new Anim Logic similar(but different though) to the AmphibianLogic of the War Salamander in Tale of the Dragon It's supposed to be called TerrainLogic and get as values all possible terrain types (Grass, Sand, Snow etc.) + Water. This way an unit can change textures in basis of the terrain. Or at least a function to assign the unit model the texture of the terrain it stands upon.

    I tried to decompile the rockalldll.dll with IDA Decompiler but with everything in Assembly it's impossible to understand anything.
    MagnumPi
    Mortal
    posted 31 July 2018 10:00 PM EDT (US)     38 / 48       
    This is an amazing development, indeed! You plan on porting this to EE+TOTD too, right? Any way to implement GathererLimit and InfiniteTech (from aoe3)? Powerful stuff!
    matrix4767
    Mortal
    posted 08 September 2018 12:01 PM EDT (US)     39 / 48       
    Can this be used to add the Chinese civilization from Tale of the Dragon to the non-extended version of AoM: The Titans?
    WollieWoltaz
    Mortal
    posted 08 September 2018 03:58 PM EDT (US)     40 / 48       
    Yes that should be possible.

    All of my Modpacks:
    Download here at AomHeaven.
    Subscribe in the workshop for the Extended Edition version.
    TAG
    AoMH Seraph
    (id: aom expert)
    posted 08 September 2018 04:57 PM EDT (US)     41 / 48       
    but of course you wouldn't wanna do that, right?...

    Check out my YouTube
    For live help with me, enter this chatroom. If I'm not on you can leave a message.
    nottud
    Mortal
    posted 09 September 2018 02:39 AM EDT (US)     42 / 48       
    You can disable the prompt for Chinese Units Detected fairly easily by messing with the UI dialog gadget so that when it displays it showns nothing os shown.

    You can even hide it with triggers but it comes back if you do as it detects it is not being shown.
    matrix4767
    Mortal
    posted 11 September 2018 01:31 AM EDT (US)     43 / 48       
    @TAG Why not? And I would think that could be the first things to try to do with this mod.
    Also, the person who made "The Natives" mod should see this
    WollieWoltaz
    Mortal
    posted 11 September 2018 11:37 AM EDT (US)     44 / 48       
    Well the guy who made "The Natives" mod is WarriorMario and as you can see at the OP it's the same guy who developed Age of Mythology: Reverse Engineered.

    All of my Modpacks:
    Download here at AomHeaven.
    Subscribe in the workshop for the Extended Edition version.
    matrix4767
    Mortal
    posted 11 September 2018 11:55 AM EDT (US)     45 / 48       
    Heh, how silly of me.
    So, WarriorMario, do you plan to continue with the alpha of that mod on this one?

    Also, the reason why I asked about the Chinese to non-extended is because Tale of the Dragon's upped system requirements means an old laptop that could play the original fine cannot even get past the title screen thanks to a puny fps.
    Unless there's a way to make extended version work like the original that I'm not aware of, I'm stuck with the non-extended version that doesn't have the Chinese in. And I think that this mod has the potential to implement them.

    [This message has been edited by matrix4767 (edited 09-11-2018 @ 12:34 PM).]

    TAG
    AoMH Seraph
    (id: aom expert)
    posted 11 September 2018 04:13 PM EDT (US)     46 / 48       
    Why not? Maybe because it's illegal? Why don't you just buy the extended edition?

    Check out my YouTube
    For live help with me, enter this chatroom. If I'm not on you can leave a message.

    [This message has been edited by TAG (edited 09-11-2018 @ 04:32 PM).]

    matrix4767
    Mortal
    posted 12 September 2018 01:44 AM EDT (US)     47 / 48       
    I understand now. You should have mentioned that in the first place.
    If someone makes their own rendition of the Chinese that's completely different from the official version, would that be okay?
    I'm not a modder, so I wouldn't know. Good luck to anyone that does make a new civilization though, whatever it is.
    nottud
    Mortal
    posted 12 September 2018 06:56 AM EDT (US)     48 / 48       
    That's an interesting one - if you bought extended with the Chinese (i.e. gave them your money) and then ported stuff over for your own personal use to non extended that is probably ok.
    « Previous Page  1 2  Next Page »
    You must be logged in to post messages.
    Please login or register

    Hop to:    

    Age of Mythology Heaven | HeavenGames