Heroes of Might and Magic Community
visiting hero! Register | Today's Posts | Games | Search! | FAQ/Rules | AvatarList | MemberList | Profile


Age of Heroes Headlines:  
5 Oct 2016: Heroes VII development comes to an end.. - read more
6 Aug 2016: Troubled Heroes VII Expansion Release - read more
26 Apr 2016: Heroes VII XPack - Trial by Fire - Coming out in June! - read more
17 Apr 2016: Global Alternative Creatures MOD for H7 after 1.8 Patch! - read more
7 Mar 2016: Romero launches a Piano Sonata Album Kickstarter! - read more
19 Feb 2016: Heroes 5.5 RC6, Heroes VII patch 1.7 are out! - read more
13 Jan 2016: Horn of the Abyss 1.4 Available for Download! - read more
17 Dec 2015: Heroes 5.5 update, 1.6 out for H7 - read more
23 Nov 2015: H7 1.4 & 1.5 patches Released - read more
31 Oct 2015: First H7 patches are out, End of DoC development - read more
5 Oct 2016: Heroes VII development comes to an end.. - read more
[X] Remove Ads
LOGIN:     Username:     Password:         [ Register ]
HOMM1: info forum | HOMM2: info forum | HOMM3: info mods forum | HOMM4: info CTG forum | HOMM5: info mods forum | MMH6: wiki forum | MMH7: wiki forum
Heroes Community > Heroes 3.5 - WoG and Beyond > Thread: Project: Phoenix — embeddable per-map mods for Heroes III (SoD), zero player setup (started by Artyomcool in October 2025)
Project: Phoenix — embeddable per-map mods for Heroes III (SoD), zero player setup
Artyomcool
Artyomcool

Tavern Dweller
posted October 07, 2025 03:45 PM

Project: Phoenix — embeddable per-map mods for Heroes III (SoD), zero player setup

Project: Phoenix — map-embedded, zero-setup modding for Heroes III (SoD)

What it is
Project: Phoenix is a small runtime for data-driven tweaks that travel with the map. It ships per-map behavior and assets without extra setup.

Core idea
Mods are embedded into the map. Authors bundle logic + data inside the .h3m; players do nothing beyond launching the map. No installers, no separate mod manager.


Backstory (why I built this)

The community often splits maps into “clean SoD” vs “not clean SoD” by player setup (needs mods or not), not by authoring method. As a result, a map made with Unleashed Editor, DEF swaps, hex edits, and lifted engine limits may still be called “clean,” while a map for WoG/Era/HotA is treated as “lesser.” I don’t see anything wrong with vanilla or modded maps; what irritates me is the category mistake.

I’ve always wanted to patch Heroes with Java. I don’t enjoy C++ for mod development. So I took the old JVM CLDC HI from the J2ME era, modernized it, opened up its internals, and adapted it for writing mods.

Philosophically, I believe real creativity grows out of constraints, not unlimited options. Some of the best maps come out on HotA, and sometimes on SoD. At the same time, WoG and Era are great spaces for free-form expression; use them if that’s your goal.

This project is an exploratory experiment — but it’s already practical enough to use today.

Core idea

Mods are embedded into the map. Authors bundle logic + data right into the .h3m, so players do nothing beyond launching the map as usual. No external installers, no separate mod manager required for the end user. Currently it is probably not working without HD Mod, but not because of core limitations, but because lack of testing.

How (and why) it works

I'm using exploits in Heroes 3 code that loads maps to intercept the execution. After that you have all the power as if you had a pre-installed mod. With that power I'm patching code for savings and using another exploit to pass the patch into it. So when you load that save, you'll also patch the game (as always, just in memory, no files touched ever).

Levels of modmaker interactions

The Phoenix supports several levels of interactions, so if you want to enjoy of results of previous authors, you don't need to deep dive into it.

1. Vanilla editor + markers (no coding).
Build your map in the stock editor and place special markers in object texts. Example for Seer’s Hut:

<CUSTOM>
GIVE:ARTIFACT:RingOfPhoenix


This lets you award an artifact that doesn’t exist in the editor but is provided by the mod. Then run the console conversion (via ./gradlew phoenixRun and follow prompts) to embed the config and use the artifact in-game. I'll probably improve that further someday to get rid of console commands that requires JDK to be installed.

2. Add content / change behavior (Java).
Add your own artifacts, spells, and logic. Depending on scope, this may be as simple as dropping a new icon + basic properties, or as advanced as writing Java hooks. Deep RE skills optional: nice to have for complex patches, not required for simple ones.

3. Go native if you must (C++/ASM).
If Java hooks aren’t enough (but it should be enough even for advanced scenarios!), write native code. Nothing prevents low-level patches where appropriate.

4. Extend the JVM itself (experts only).
If CLDC HI’s capabilities are too tight and you have the appropriate skills, modify it. For example, I added partial support for annotations, generics, try-with-resources, and other niceties that don’t require invasive changes.

5. Skip the JVM entirely (advanced).
You can opt out of the JVM and bring your own runtime. This requires minimal assembler competence for integration points.

Current example

In the current state you can see 3 new artifacts, that modifies work of Fear, AI priorities and Phoenix Resurrect skill. It also contains new creature bank - Phoenix Forge - with configurable guards, new look and special reward - it drops all your secondary skills, except first two of them. Anyway, it is just a demo.

Future plans

I'm not really expecting it to be widely used. We already have great platforms for map makers, like HotA, or mods platforms, like WoG/Era. That's was done purely for fun, in sake of the Art, and maybe for shifting community's opinion about "purity" of maps.
Anyway, despite I have extremely limited amount of time, as all of us, if the community finds it interesting and useful, I'll continue my support of the Phoenix. I'll focus on technical stuff: tooling, java language features support, etc.

I'm in!

Great! Here is the github link with all the details:
https://github.com/Artyomcool/phoenixH3

BE AWARE

Project: Phoenix (end-user component) is GPL-2.0. It means, in short, that all your derivative works required to be accompanied with source code by anyone's request.

 View Profile
LordCameron
LordCameron


Famous Hero
Veteran of the Succession Wars
posted October 07, 2025 06:30 PM

Really cool idea. Maps like the LOTR which require an entire new game install could really benefit from this.

I'm curious if this has now introduce a security risk in downloading maps from maps4heroes if any generic map can now rewrite the executable.
____________
What are Homm Songs based on?

 View Profile
TrueMefista
TrueMefista


Adventuring Hero
posted October 07, 2025 06:56 PM

I remember asking HOTA why cannot maps come with custom objects embedded (issue was with HOTA changing map decor between version), got told it is impractical due to, uh, bigger map file size? Maybe your take would be practical.

 View Profile
Artyomcool
Artyomcool

Tavern Dweller
posted October 07, 2025 07:06 PM

LordCameron said:
if this has now introduce a security risk in downloading maps from maps4heroes if any generic map can now rewrite the executable.


You are absolutely right! Except:
1. Not now. Similar security hole is well-known from, I guess, 2012. It was researched and published by potmdehex.
2. It doesn't rewrite the executable. All changes intentionally kept in memory. Well, except, saves also contains those changes of course. It doesn't mean that evil person can't modify your files, though. Maybe I should add something to the license, like: "evil actions are strictly prohibited!"?))

Anyway, yes, you should always trust to the author and to the host if you download anything from the internet to your PC, in the real world it is the only way, unfortunately.

 View Profile
Artyomcool
Artyomcool

Tavern Dweller
posted October 07, 2025 07:11 PM
Edited by Artyomcool at 19:12, 07 Oct 2025.

TrueMefista said:
I remember asking HOTA why cannot maps come with custom objects embedded (issue was with HOTA changing map decor between version), got told it is impractical due to, uh, bigger map file size? Maybe your take would be practical.


Indeed, packing custom graphics is not for free. Sometimes, it is reasonable, sometimes it is not.
HOTA may have a lot of reasons to keep their maps clean from custom graphics, size might be only one of them. I think, their philosophy is more about being strict, and I respect that. As for me it gives better quality overall, with cost of freedom, yes. But we have another projects for freedom, right?

 View Profile
Jump To: « Prev Thread . . . Next Thread »
Post New Poll   Post New Topic   Post New Reply

Page compiled in 0.0326 seconds