Skip to content

Add Randomizer & Archipelago functionality to Forge Adventure#11167

Draft
BramTeurlings wants to merge 216 commits into
Card-Forge:masterfrom
BramTeurlings:dev_archipelago
Draft

Add Randomizer & Archipelago functionality to Forge Adventure#11167
BramTeurlings wants to merge 216 commits into
Card-Forge:masterfrom
BramTeurlings:dev_archipelago

Conversation

@BramTeurlings

@BramTeurlings BramTeurlings commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Features:

Randomizer/Archipelago

NewGameScene.java

  • New randomizer option
  • Added descriptions for each mode
  • UI Also works in portrait mode/mobile
  • Made the options scrollable, they are dynamically built in code now instead of statically from the layout file

forge/adventure/archipelago

  • Contains all new files for Archipelago
  • ArchipelagoData.java > Responsible for managing & persisting game data & common logic relevant for either randomizer
  • LocalRandomizer.java > Responsible for managing game logic related to the local randomizer mode
  • ArchipelagoRandomizer.java > Responsible for managing game logic related to the archipelago randomizer mode
  • Archipelago.java > Manages the network connection to the Archipelago server

Generic tweaks in various forge-adventure files

  • Most changes will start with a check for the current Archipelago mode, if the mode is disabled, there will be no change in behaviour from the base-game
  • I have removed the Leather Boots as starting equipment in Archipelago mode since it auto-fills one of the user's slots with an item and that makes it less exciting for them to find an item for that slot later since they would be losing the benefits from the Leather Boots. Instead, I have simply increased the base movement of all entities in Archipelago mode to speed up the game and clear that boot slot.
  • A new Archipelago icon/sprite was added to the game files, the sprite was made in paint by one of our contributors and the image is free to use from Archipelago's GitHub.
  • An Archipelago connection screen was added, it can be seen in the Adventure mode's main menu but only if the currently loaded save file has Archipelago mode enabled.
  • World generation was altered so that important POI's for Archipelago checks always fall fully within the region they are supposed to spawn in, not on a island of the correct colour surrounded by a neighbouring colour as that could break randomizer logic. This change only applies in Archipelago mode.

Overhauled input system > #11168

  • The base-game's input system currently suffers from multiple input methods fighting for control. One particular issue that prompted me to overhaul it was the angle the player walks in when inputting a diagonal direction on keyboard. It's not 45 degrees like you would expect, it's actually close to 22.5 degrees because one of the input methods correctly reads 45 degrees but the logic is executed a second time on one of the pressed keys (not both) resulting in a combined angle of 22.5 degrees. Further issues include one of the pressed keys being ignored until re-pressed if pressed too quickly in conjunction with other movement keys.
  • The new input system defines a clear priority between keyboard/mouse (or touch)/controller inputs so they no longer fight for control.
  • The new input system stores each of its directions/vectors in a separate value so no unintentional overlapping of directions occur

Split between "bosses" and "minibosses" > #11169

  • For Archipelago, the "objective" or "goal" of the game is to defeat all of the main bosses in Forge, that being; Lorthos, Emrakul, Lathliss, Ghalta, Griselbrand & Akroma. We currently don't have a good way to distinguish between these bosses and all of the various mini-bosses so we have decided to put the aforementioned 6 inside of the decks/boss folder and all of the other bosses inside of the decks/miniboss folder.
  • Various bosses were wrongly labeled as not being a boss, Jace comes to mind. Each enemy that has a unique boss effect on the battlefield is now labeled properly as "boss" in enemies.json, their deck is also moved to the appropriate folder as mentioned in the previous point.
  • Some enemies had the "boss" label in enemies.json while not being a boss at all, the boss label has been removed from these enemies.

Improved hit detection for the player on roads

  • The player's position was checked to determine if they are walking on a road or not. However it wasn't taken into account that the player's origin is located in the bottom-left pixel of their sprite. That means the roads weren't always properly giving the speed boost when the player is visually on the road. The reference point for this check has been moved to the horizontal centre of the sprite at the sprite's feet, this fixes the issue.

New Archipelago documentation
I can imagine if people don't like the added .png files in docs/Adventure/Archopelago, please let me know where else I can put them if this is the case.

No AI agents were used to develop this project, all code was reviewed by humans before submitting this PR. AI services such as ChatGPT were sparingly used to assist with boilerplate code, some translations and some math.

BramTeurlings and others added 30 commits January 14, 2026 22:09
Todo: Save/Load tracked progress in player save file
Now persists all mutations in ArchipelagoData.java
Shows pop-ups when receiving rewards
Keeps track of victory over bosses
Todo: Persist (mini-)boss encounters
Also changed itemID to itemName in ArchipelagoData.java
Darkening the card in the shop seems to fail
Lots of cleanup and testing needed
Sets are now unlocked on every card reward (change this later)
Some sets don't have booster that can be generated from them so we want to think about what to do in that case.
BramTeurlings and others added 22 commits July 2, 2026 14:19
Merge the rebase of tag v2.0.13 back into the dev branch
Connecting on a new save synchronizes shop states as well
…-checked

Preserved location states for shop items
Disconnect the player when connecting with a mismatched seed.
Fixed town events using quest location cap
Removed irrelevant SlotData fields
@tool4ever

Copy link
Copy Markdown
Contributor

waaaaaaaaaay too large

I suggest starting with spinning off the unrelated QoL stuff into their own PR first

@BramTeurlings BramTeurlings marked this pull request as draft July 6, 2026 12:19
@BramTeurlings

Copy link
Copy Markdown
Contributor Author

That's fair, I'll split those up first and mark this as draft for now.

@BramTeurlings

Copy link
Copy Markdown
Contributor Author

I split off the improved input system and the one-line change for the road detection into this PR: #11168

I'm still working on splitting off some of the other stuff but I'll update this PR once that's done.

@BramTeurlings

Copy link
Copy Markdown
Contributor Author

I've split this PR up into three other PRs, I think it's probably best to review/merge those first before I make more.
I could potentially split this up further into a PR for the local randomizer and the Archipelago features. I'll do that once the other PRs are done 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants