Katiowa 10 Posted January 17 Hello Programmers, Comrades and Modders! For years, we have been creating scenarios and events restricted to static images. We add a picture of a war, and it just sits there. A picture of a nuclear explosion? Static. But not anymore. I have been digging into the source code and I realized something crucial: Age of History 2 runs on LibGDX. Why does this matter? Because LibGDX natively supports complex animations via TextureAtlas and Animation classes. The code was always there, sleeping inside the game engine, just waiting for someone to wake it up. I have successfully implemented fully animated, looping events without breaking the original game compatibility. 🚀 What I Achieved I modified the Menu_InGame_Event.java class. The logic is simple but powerful: When the game tries to load an event picture (e.g., war.png), my code first checks if a .atlas file exists with that name (e.g., war.atlas). If it exists: It ignores the static image and loads the SpriteSheet using the Atlas, creating a smooth loop animation. If it doesn't exist: It falls back to the default code, loading the static .png or .jpg just like the vanilla game. This means you can have animated events and static events in the same scenario without any bugs! // Logic inside Menu_InGame_Event Constructor String sEventRawName = CFG.eventsManager.getEvent(EVENT_ID).getEventPicture(); String sBaseName = sEventRawName; // remove extension logic... // Check if the .atlas exists if (Gdx.files.internal("UI/events/" + sBaseName + ".atlas").exists()) { // Load the Atlas and create the Animation this.modAtlas = new TextureAtlas(Gdx.files.internal("UI/events/" + sBaseName + ".atlas")); Array<AtlasRegion> regions = this.modAtlas.findRegions(sBaseName); this.modAnimation = new Animation(0.15f, regions, Animation.PlayMode.LOOP); this.isAnimatedEvent = true; } The Rendering (The Draw Method): We use stateTime (delta time) to calculate which frame to show: In the draw() method, instead of drawing the static Image object, you use the stateTime (delta time) to get the current frame from your Animation and draw it using the SpriteBatch. // Inside the draw() method if (this.isAnimatedEvent && this.modAnimation != null) { this.stateTime += Gdx.graphics.getDeltaTime(); TextureRegion currentFrame = this.modAnimation.getKeyFrame(this.stateTime, true); // Draw the current frame oSB.draw(currentFrame, x, y, width, height); // Force the game to keep rendering (otherwise it pauses on static screens) CFG.setRender_3(true); } 📂 How to make your own Animations You don't need to be a coder to use this once the code is in the game. You just need: A SpriteSheet: A PNG containing all frames of your animation. An .atlas file: This maps the frames. You can generate this using GDX Texture Packer (Use the Legacy settings/version, this is crucial!). Place both in UI/events/. I am attaching an example (SoldierRunning.atlas and SoldierRunning.png) so you can test it yourselves. 🌟 The Future Imagine the possibilities: Events with soldiers actually marching. Nuclear explosions that animate. Flags waving in the event wind. News tickers scrolling. The engine was always capable of this; we just had to write the lines to let it speak! Although I used it for events, it's more than that and can be used in any other contexts or images! I am not releasing my file, not because I wanna lock knowledge, it's because I think it's simple to people to do, and because my code is full of nonsense (like superevents, etc) I will send a .gif file showing the use of it (what I achieved!) Download the example files below! SoldierRunning.atlas (first and last line are blank.) file: SoldierRunning.png size: 2048, 2048 format: RGBA8888 filter: Nearest, Nearest repeat: none SoldierRunning rotate: false xy: 2, 1478 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 7 SoldierRunning rotate: false xy: 2, 1109 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 14 SoldierRunning rotate: false xy: 502, 1478 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 19 SoldierRunning rotate: false xy: 2, 740 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 4 SoldierRunning rotate: false xy: 502, 1109 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 11 SoldierRunning rotate: false xy: 1002, 1478 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 9 SoldierRunning rotate: false xy: 2, 371 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 16 SoldierRunning rotate: false xy: 502, 740 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 1 SoldierRunning rotate: false xy: 1002, 1109 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 6 SoldierRunning rotate: false xy: 1502, 1478 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 13 SoldierRunning rotate: false xy: 2, 2 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 18 SoldierRunning rotate: false xy: 502, 371 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 3 SoldierRunning rotate: false xy: 1002, 740 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 10 SoldierRunning rotate: false xy: 1502, 1109 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 8 SoldierRunning rotate: false xy: 502, 2 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 15 SoldierRunning rotate: false xy: 1002, 371 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 5 SoldierRunning rotate: false xy: 1502, 740 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 12 SoldierRunning rotate: false xy: 1002, 2 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 17 SoldierRunning rotate: false xy: 1502, 371 size: 498, 367 orig: 498, 367 offset: 0, 0 index: 2 Let's modernize Age of History 2! Das Moss Man, Apple, YouravaragebrazilianAoCfan and 3 others 6 Quote Share this post Link to post Share on other sites More sharing options...
Das Moss Man 486 Posted January 18 why arent ppl talking abt this more this is revolutionary Lim10 and Katiowa 2 Quote Share this post Link to post Share on other sites More sharing options...
Katiowa 10 Posted January 19 18 hours ago, Das Moss Man said: why arent ppl talking abt this more this is revolutionary For real. I am really disappointed, but I guess that's what happens. Lim10 1 Quote Share this post Link to post Share on other sites More sharing options...
Das Moss Man 486 Posted January 19 12 hours ago, Katiowa said: For real. I am really disappointed, but I guess that's what happens. post in offtopic it get more attention Quote Share this post Link to post Share on other sites More sharing options...
Das Moss Man 486 Posted January 19 bump BUUUMP Katiowa 1 Quote Share this post Link to post Share on other sites More sharing options...
Lim10 276 Posted January 19 Cool as f*ck brother, well done. If you had done this 2-3 years ago, you would have been considered a prophet. Is it okay to use it, with giving credit of course?. Quote Share this post Link to post Share on other sites More sharing options...
Katiowa 10 Posted January 20 18 hours ago, Lim10 said: Cool as f*ck brother, well done. If you had done this 2-3 years ago, you would have been considered a prophet. Is it okay to use it, with giving credit of course?. I believe in that! haha. About your question: Yes! Of course! 😃 21 hours ago, Das Moss Man said: post in offtopic it get more attention Is it even allowed considering I already did this post? xD. And it would be literally off-topic I guess? Better to be on the right spot, even if gets less recognization, maybe someone will notice some day and make use of it. Quote Share this post Link to post Share on other sites More sharing options...
Lim10 276 Posted January 21 On 1/20/2026 at 8:08 PM, Katiowa said: I believe in that! haha. About your question: Yes! Of course! 😃 Is it even allowed considering I already did this post? xD. And it would be literally off-topic I guess? Better to be on the right spot, even if gets less recognization, maybe someone will notice some day and make use of it. I didn't want to use it without asking you. Aoh2 modding is dead, but I still hope someone will see it 🙂 Katiowa 1 Quote Share this post Link to post Share on other sites More sharing options...
Katiowa 10 Posted January 24 I don't know how he did it, but as I can see it didn't used Atlas, so it's curious. When he release AOH2 DE we will know. He did post minutes ago, it was a shock for me, xD. Das Moss Man and Lim10 2 Quote Share this post Link to post Share on other sites More sharing options...
IsYugos5 4 Posted January 25 It looks GREAT Quote Share this post Link to post Share on other sites More sharing options...
AddPlck 86 Posted January 30 I had this idea back in July last year when I was using long images for loading just like in Hoi4. But after seeing your post today, I changed my mind. Thanks for the reminder! Katiowa 1 Quote Share this post Link to post Share on other sites More sharing options...