Repository navigation
AoE2:DE: minimal 1v1 Automatch2 implementation - #669
Closed
Chichimokers wants to merge 1 commit into
Closed
Chichimokers wants to merge 1 commit into
Chichimokers wants to merge 1 commit into
Conversation
Chichimokers
force-pushed
the
feat/automatch2-matchmaking
branch
from
October 23, 2026 18:33
0405402 to
687614e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
AoE2:DE 1v1 Automatch2 (simple implementation)
Summary
This adds a minimal, self-contained 1v1 Automatch2 implementation for Age of Empires II: Definitive Edition. It lets two clients queue through the game's ranked/scored matchmaking UI and get matched against a local ageLANServer instance, with the relay/BattleServer doing the actual game connection.
The implementation is intentionally small: it is a first working pass that proves the protocol path end-to-end and leaves rating, map pools, team games, and policy refinements as follow-up work.
What is implemented
GET /game/automatch2/getAutomatchMapsupport for the AoE2:DE 1v1 queue.POST /game/automatch2/pollingqueueing/pairing for AoE2:DE.POST /game/automatch2/stoppollingcancellation.POST /game/automatch2/updateStatusmatch status updates.internal/models/automatch2.gowith queue, pending match, host reservation, notifications, expiry and cleanup.20,6,1) and exposed as canonical queue/leaderboard6, 2 players, team size 1, mapArabia.rms.POST /game/advertisement/update(AoE2:DE does not call/advertisement/hostfor this flow).Automatch2GameMessage.Automatch2GameMessageuses the object form with named fields and object members, matching what the client expects./10.0.11.x.Protocol findings worth highlighting
WorldwideUpdateAdvertisementAsync - response was not formatted correctlyandAdvertisementByIDCache - response was not formatted correctlyfor both automatch and ordinary advertisements. The 27-field layout was accepted.1is elapsed wait seconds, not a state enum.4is the host profile ID.SESSION_MATCH_KEY+matchtype=1+maxplayers=4+ empty map is an ordinary session/party host; onlymatchtype=19(or a positiveautomatchPoll_id) identifies an automatch advertisement.getProfileName?profile_ids=[-1]can appear during joins and is not by itself evidence of a wrong host ID.Testing
battle-server-managerstarted manually.Automatch2GameMessage, platform session ID propagation, and per-client relay IPs in the server/client logs.server.exe) for testing; no build artifacts are included in this PR.Current limitations / follow-up work
These are explicit follow-ups rather than blockers for this first functional implementation.
Related documentation
I also documented the empirical findings for the community in a Libre:Match wiki PR:
librematch/wiki#1