Xetanth87's Campaign Splitter - Turn Custom Campaigns into separate Maps (now with Archon Mode)

233570-89f35bdcf5b2463c24caafec585dc8d5.png

Turn Custom Campaigns into separate Maps (now with ARCHON MODE)



Description:
It can split campaign files (w3n) into separate map files (w3m/w3x) and add all the campaign data inside the map files. It can be used to make Custom Campaigns playable in CO-OP. You could even create your own Custom Campaigns in the Reforged World Editor, and the players can split them on their own computer. Everything from the campaign is merged correctly into the map files: custom data (units, items, abilities, upgrades, etc.), gameplay variables, custom interface, imports and strings!

Features:
Maps have their titles changed to campaign button titles and have an added index at the start, so they may appear in order in the Custom Games interface.
223206-212b4258cd23e625144101f7d86310a4.png

There is an option to add a difficulty selector to the extracted maps, since you can't select the difficulty in the Custom Games menu. Selecting the "Smart" option is recommended, because it will only add it if the campaign author chose the "Variable Difficulty" setting when making the campaign. The text inside the difficulty selector is localized to the language of the player.
228935-657e72ef5dca5929223d13f668d472c4.png
228936-ea52be572af0e147b5e2e1d26e6f7065.png
There is an option to replace the map preview with the campaign preview, hiding the minimap.
223521-f8c0d13f572f19639564c8a432d0d20f.png
223524-b575e4361572fb129af015070e0eafa0.png

There is an option to show the name of the next map upon victory. This is very useful for campaigns with branching paths, because map transitions are not possible in Reforged. The text inside the message is localized to the language of the player.
224109-9408daa15a66036afbe38db24fdf10ff.png
228934-f6024ac6b1b1bca23dcf3696ee19f0a8.png
There is an option to add Legacy Assets (Reign of Chaos models that were removed in Reforged).

Reign of Chaos and The Frozen Throne models and icons in 1.31.1 (Classic)
223850-5a3551d0c5bfdebaf8130c7f1efed852.png

Reign of Chaos and The Frozen Throne models and icons in 1.32 (SD Reforged)
223851-a02e54e69e096004fcea30d4aa87e644.png

Reign of Chaos and The Frozen Throne models and icons in 1.32 (SD Reforged) with Legacy Assets enabled
223852-f44a049a56145f1d66e12dae1bb81754.png

Reign of Chaos and The Frozen Throne models and icons in 1.32 (HD Reforged) with Legacy Assets enabled
240168-97af786d34360396a525458a0f5bec34.png
There is an option to remove Upkeep from all extracted maps.
223849-df9291de6e34a6cbabd1ee4ec39b8f36.png
ARCHON MODE

Archon Mode is an option in my Campaign Splitter that allows maps to be played in 2+ player CO-OP with full shared unit control. This enables almost any Custom Campaign to be played in CO-OP.

You can support this feature by becoming my Patron on Patreon!

266242-8b48cfff7627bc5b4bfc7cc22854eb5a.png


Features:
Every selected unit has player-colored arrows above it, which show which players are selecting it. The arrows are transparent and become more opaque when multiple players select the same unit.
268349-b1ed239b982e935608a5e33d36c4d047.png
Any player can select an option from dialogs. The game is paused while the dialog is displayed, like in Singleplayer. A message is printed on the screen to show what option was selected.
268350-b9356140ed125fc357b25142230263d9.png

Notice:
One thing to note is that splitting the campaign will copy all imported assets, making each map file quite large, so you will need to be careful to delete the map files whenever you don't want to play them, and re-split the campaign when you do. If you have a directory named "temp" inside the folder where the extracted maps are placed, it will be deleted along with all its contents.

Requirements:
Requires Java SE 17 (minimum) - https://www.oracle.com/java/technologies/downloads/
Download Java Runtime Environment installer for your Operating System (most likely Windows x64) and install it. Now you can run the jar file.

How to use:
You can use "CampaignSplitterGUI.jar" to open the GUI that lets you select a campaign.

unknown.png

unknown.png

WC3ScrnShot_070922_135001_001.png

WC3ScrnShot_070922_134831_001.png


- Does not work on all versions.
- Some classic maps can break if you are playing them in HD.
- Maps played in HD in 1.32 will have mute units if they are using SD models. This was fixed in 1.33.
- Localization is not treated yet.
- Lua maps can't get script modifications to allow some features.
- Can't split campaigns with readonly/protected maps.
- Split maps can only be played in Reforged.

2024-02-29 - Version 2.3
- Fixed an issue that made maps unplayable in Singleplayer.
- Fixed an issue with some import paths.
2023-12-13 - Version 2.2
- Fixed an issue with arrays and constants.
- Fixed an issue with maps that don't have titles.
2023-09-25 - Version 2.1
- No longer changes game speed during pauses.
2023-09-23 - Version 2.0
- Added Archon Mode!
- Fixed a lot of bugs.
- Improved interface.
- Optimized modified map script.
- Submaps are no longer ignored.
- Added multiple localizations to the tool: English, Spanish, German, Romanian, Russian, Simplified Chinese.
2022-11-11
- Corrected error message when the selected file isn't a campaign.
- Added HD legacy assets.
- Added "legacyHD.zip" archive.
2022-11-01
- Improved error messages.
- Added new icon.
2022-09-18
- Fixed multiple import issues.
- Fixed out-of-bounds exception that happened to users with specific localizations (Chinese and Taiwanese).
- Difficulty selector and next level messages are now localized.
- "Default" difficulty selector option renamed to "Smart".
- Periodic and elapsed time events now start after one of the difficulty selector buttons has been clicked.
- Uses "Documents/Warcraft III/Maps" as the default browse path if it exists.
- No longer prints a new line at the bottom of the display area.
2022-08-02
- Added next level message option.
2022-07-30
- Added legacy assets.
- Added "legacy.zip" archive.
2022-07-29
- Added the exception stacktrace to the UI.
- Added an error message that appears when readonly/protected maps are encountered.
2022-07-24
- Added an option that removes Upkeep from each map.
2022-07-23
- Game is now paused and pitch black during difficulty selection.
- Added an option that allows the campaign preview to replace the minimap preview of each map.
2022-07-21
- No longer shows warnings about files not found as error messages.
- Added map counter messages.
- Difficulty Selector option is now a radio group with 3 options: No (Don't add), Default (Only add if the campaign has the "Variable Difficulty" setting), Yes (Add).
- Added tooltips to explain the radio choices.
2022-07-17
- Campaign skin/interface strings are now offset as well.
- Fixed skin offset method to use any non-numerical delimiter.
- Improved error messages.
- Temporary files are now removed when the splitter is stopped or when an error is encountered.
- Fixed loading screen being changed to melee.
- Script files that appear in the "scripts" folder will now have the difficulty selector added to them as well.
2022-07-16
- Fixed imports with backspace character.
- Campaign files are only extracted once.
- Added progress bar, output display area and time of conversion.
- Fixed a problem when a map imports an asset with the same path as an imported asset from the campaign.
2022-07-14
- Removed CampaignSplitterCLI.jar.
- Added a checkbox that can be used to enable a difficulty selection dialog in each of the extracted maps.
- The splitting process can now be stopped.
- It is now more clear when the splitting process is running. You can tell by the button colors.
- When the splitting process stops, all temporary files are removed.
- Browsing when the path is set to a folder leads to that folder instead of its parent.
2022-07-13
- The title of each map is now changed to match its respective button. An index is also included at the start of the title, so they are shown in order. Zeroes are added at the start of numbers to enforce this order. ("9" would go after "10", but "09" goes before "10").
2022-07-12
- Backspace character in Import files now correctly treated as "\rwar3campImported\\" instead of "\r".
2022-07-09
- Fixed parsing "\u001D" in Import files.
- Fixed some map unit data not being added to the exported map.
2022-07-03
- First Release

JMPQ3 Library - https://github.com/inwc3/JMPQ3
Wc3libs MPQ Parser - https://github.com/inwc3/wc3libs
Retera - Inspired me to code a Wc3 tool in Java.
StormKnight - Campaign Splitter logo, Archon Mode logo, tool icon
Tamplier - HD Ballista, Catapult and Gyrocopter models, HD Ballista and Catapult icons
TriggerHappy - Codeless Save and Load (Multiplayer)
Xetanth87 - HD Steam Tank icon, Archon Mode Transparent Arrow

Helpers
Campaign Splitter feedbackOutsiderXE, Awell, tulee, Zakcrust, mayuko
Archon Mode testingSalendious, StormKnight, OutsiderXE, Adiniz, BogdanW3, Godspeed, blazemarshall
Scripting helpBogdanW3, Water, Rayman.90, StormKnight, MayDay, insanity_ai
LocalizationSaelendious (Russian), SynergySC2 (Spanish), tulee (Simplified Chinese), Xetanth87 (Romanian)

YouTube Channel: https://www.youtube.com/channel/UC8flW32H3ocaTlU3bf14BEw
Discord Server: https://discord.gg/J5guv3BHVc
If you want to support this tool, you can help me by becoming my patron on Patreon.
Alternatively, you can donate through BuyMeACoffee: https://www.buymeacoffee.com/xetanth87
Contents

XT87CampaignSplitterGUI.jar (Binary)

Reviews
eejin
It's very nice to be able to play custom campaigns in Reforged. The tool worked for most maps but did give me some issues on a couple, namely: Thievery Campaign and The Chosen Ones Also, a nicer folder browser dialog would be very nice to have, the...
Level 16
Joined
May 25, 2004
Messages
1,207
I just wanted to say, I love this Archon-Mode idea you came up with for your Splitter. It reminds me of when I played Warcraft III: Classic Archon-mode way back when.

I am curious to see if I can make my own Co-Op Archon-Mode (for me and my kids) with your splitter using the old 1.27 campaign files, but I would need to back them in a Campaign editor first correct?

I tried to use the "demo campaign" as a test model, but unfortunately I doubt it was a good test since it wouldn't work on 1.27 but it does work on a up-to-date reforged 2.0 model.
 
I just wanted to say, I love this Archon-Mode idea you came up with for your Splitter. It reminds me of when I played Warcraft III: Classic Archon-mode way back when.

I am curious to see if I can make my own Co-Op Archon-Mode (for me and my kids) with your splitter using the old 1.27 campaign files, but I would need to back them in a Campaign editor first correct?

I tried to use the "demo campaign" as a test model, but unfortunately I doubt it was a good test since it wouldn't work on 1.27 but it does work on a up-to-date reforged 2.0 model.
Because some of the features needed for Archon Mode required functions that only exist in Reforged, the split maps only work in Reforged versions.
This is meant primarily for existing Custom Campaigns. For the official campaigns you have to create a custom campaign that uses the same maps and has the correct button names, or you could look for a different COOP version of them instead of using this tool. Another idea is to look for an edit of the base campaigns (there are multiple ones on Hive), and split one of those.
 
Level 1
Joined
Sep 18, 2022
Messages
1
Hey there i put up warhazard's campaign dark horizon (i arranged maps and made it a campaign instead of a pack of maps because roc didn't have custom campaign feature) and i get this error:
java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "java.util.Map.get(Object)" is null
at net.xetanth87.campaignsplitter.rewriters.VictoryRewriter.onReadLine(VictoryRewriter.java:65)
at net.xetanth87.campaignsplitter.rewriters.ScriptRewriter.handleScript(ScriptRewriter.java:153)
at net.xetanth87.campaignsplitter.rewriters.ScriptRewriter.modifyScript(ScriptRewriter.java:171)
at net.xetanth87.campaignsplitter.MapInjector.addCampaignData(MapInjector.java:598)
at net.xetanth87.campaignsplitter.CampaignSplitter.splitCampaign(CampaignSplitter.java:322)
at net.xetanth87.campaignsplitter.SplitterFrame$CampaignSplitterThread.run(SplitterFrame.java:523)
update: needed to disable preview of the next map now it works.
update 2: maps can't be launched because they can't be seen ingame
maps work pre conversion maybe its the issue of w3m format?
update 3: the maps that do appear are damaged so they can't be hosted legend of cronos allows that only outro works btw, return to darkness doesnt work even with all options off
 
Last edited:
Top