MSC Skate
Multiplayer S.K.A.T.E. for ReSkate with expanded trick matching, custom MSC lobbies, world-image join markers and host rules.
CHANGELOG
0.3.29 — walk-up host Start and start-point gather (candidate)
- The waiting MSC flag offers the host E / controller X to Start once at least two participants have joined, using the existing server-authoritative
startrequest. - Every enrolled client teleports to the saved flag location once after receiving the authoritative playing state, regardless of the optional return-to-flag-on-turn setting; the first setter avoids a duplicate teleport.
- Flag artwork is loaded from
flag-logo.pngat the package root. This candidate includes a temporary copy of the existing MSC icon until the user supplies the dedicated artwork. - No changes to server authority, detection, rules, payouts, menu Quit behaviour or native vanilla Throwdowns.
0.3.28 — MSC Quit Throwdown menu (candidate)
- Start/Options during a playing MSC match opens the existing themed MSC screen with Resume, Leave Throwdown and host-only End for Everyone.
- Leave and End use existing control actions, each with a confirmation step.
- The native Details panel is omitted for playing matches to avoid competing with the custom menu. The native HUD and match restrictions remain unchanged.
- Start is hidden from the game only during a playing MSC match and released on exit. Escape remains native; the Insert exit path is retained.
- No changes to detection, authority, wallet, rules, placement or vanilla Throwdowns.
0.3.27 candidate - wait for native Throwdowns menu before flag placement
- When Place MSC S.K.A.T.E. flag is selected, keep placement pending until the documented
reskate.menu.game().openis false and gameplay focus returns. - Do not draw the placement preview, accept confirm or cancellation, or start the existing 350 ms input grace period while the native Throwdowns mode-selection page remains open.
- If the native menu is reopened during placement, suspend the preview and placement controls until it closes again.
- The user closes the native Throwdowns page normally; MSC does not simulate or inject Back/ToggleMenu navigation.
- Based directly on the user's 0.3.24 source. No detector, authority, lobby layout, native UI, payout, waiting-marker or server changes.
0.3.24 candidate - confirmed waiting-lobby markers
- Draw authoritative waiting markers independently of native throwdown lifetime, including after placement completes. The 0.3.23 exemption applied only to placement previews.
- Keep existing waiting-only status, position and distance checks in flag.luau. Cancelled/playing lobbies do not retain join markers.
- No changes to placement/join input, gameplay, authority or rules.
- Regression checks now draw the confirmed second lobby and several further create/cancel cycles with native activity still flagged. Official plugin VM verifies the second marker on both clients.
0.3.23 candidate - placement recovery after vanilla lobbies
- Keep MSC's explicit placement preview and confirmation available when the broad native activity flag remains set. Passive proximity joining still respects native activity.
- Reopening MSC's card or lobby exits placement instead of opening an empty screen that closes on the next tick.
- Back/controller B can cancel placement even if the native gameplay gate remains blocked. Confirm still requires gameplay focus.
- Refuse placement if the skater position is unavailable; return to setup if it disappears during placement.
- Log native activity, input focus, preview availability and cancellation only when placement state changes.
- Add the MSC cancel -> vanilla lobby cancel -> MSC placement regression, including native residual-state simulation and official plugin VM verification. Live in-game retest remains required.
0.3.22 candidate - lobby lifecycle
- Match Domination's accepted-card flag release, opening Enter/A handling, initial selection, closing input latch and start guards.
- Close on a queued Start; shut waiting screens when the authority starts the match.
- Recover Create/Join/Start once per second for ten seconds; accepted-control receipts prevent duplicate lobbies, enrollment and countdown restarts.
- Share setup cleanup between programmatic closes and native Escape: ui.close() does not emit screen_closed.
- Add lifecycle logs. Preserve marker placement, joining, host-only Start, gameplay, rules and artwork.
- Automated lifecycle and official plugin VM checks pass. Live native S.K.A.T.E.-to-MSC regression remains unverified. See CANDIDATE.md.
0.3.21 — Lobby input release (Domination parity)
- Ported Domination's proven button-release wait and card re-arm for the MSC lobby.
- Ignore duplicate Throwdowns card clicks while the lobby is open/closing or the closing input is still held.
- Keep the same native-card handoff and existing match gameplay unchanged.
0.3.20 — Placement flow and host marker prompt
- Selecting Place MSC S.K.A.T.E. flag returns directly to skating and the world-image placement preview; it does not show a full-screen placement instruction page.
- Successful placement leaves the host in gameplay instead of automatically opening the custom lobby. The host can manage the waiting match by selecting MSC S.K.A.T.E. in Throwdowns again.
- Approaching one's own waiting flag displays “Manage game from Throwdowns menu” rather than a join prompt. Other players retain the existing join interaction.
- No changes to server authority, native/vanilla throwdowns, match gameplay, rules, scoring, payouts, or match HUD.
0.3.19 — Throwdowns card and MSC lobby theme
- Registers MSC S.K.A.T.E. in the Throwdowns picker immediately during client startup, matching Domination's known-working plugin registration order and Spot-style card.
- Removes MSC's explicit
remove_modeon unload; ReSkate already owns plugin mode cleanup. - Removes incorrect casino branding from the lobby and replaces the blue palette with black/purple and minimal teal accents.
- No changes to match authority, trick detection, scoring, wallet payouts or gameplay HUD.
Changelog
0.3.18
- Restore the original MSC S.K.A.T.E. mode identity and card style in the Throwdowns picker, with explicit registration-failure logging.
- Replace the generic 0.3.17 plugin-panel lobby with a custom full-screen skate.-style menu based on Domination's documented
ui.screen(panel=false)+ overlay/input pattern. - Add keyboard, controller and mouse navigation for setup, host rules, roster, Start, Leave and Cancel without changing the server match protocol.
- Keep the image-based MSC world join marker, server-side match authority, native active-match HUD and Quit handling.
- No changes to trick detection, scoring, rewards, server code or vanilla S.K.A.T.E.
- Source-verified and offline tested; native card appearance and rendering still require live ReSkate 2.1.2 testing.
0.3.17
- Replace MSC-only native setup and waiting cards with a custom lobby opened from the existing Throwdowns entry.
- Add a floating MSC logo join marker using world-anchored PNG drawing; skate to place and press E / controller X to confirm, or Backspace / B to cancel.
- Allow nearby players to join the existing server-owned match through the marker, and hosts to Start/End in the MSC lobby.
- Keep the existing server authority, rules, trick detector, gameplay HUD, rewards, and in-game Quit handling unchanged.
- Release only the newly opened MSC native registration during the card handoff; vanilla throwdowns are not modified.
0.3.16
- Strengthen release-only obfuscation of detector, tracker, metadata and rules using scoped local-symbol renaming, cached runtime string decoding, branch inversion and a module initialization dispatcher.
- Preserve readable source modules and existing gameplay, settings, rewards and icon.
0.3.15
- Enable Return to starting flag on turn start by default. Explicitly saved Off preferences remain Off.
- Update the option description and player guide to reflect the default.
0.3.14
- Add a saved local Auto / Regular / Goofy base-stance selector under Detector, allowing players to correct reversed FS/BS labels when the reported stance is wrong.
- Show the stance reported by ReSkate alongside the selector. Auto preserves the existing API behaviour; each player controls their own override.
- Preserve the existing mirrored spin conversion and switch handling, Impossible foot identities, rules and payouts.
0.3.13
- Accept native front-foot/back-foot direction identifiers specifically for Impossible tricks in server validation.
- Show Front Foot and Back Foot in captured trick names while preserving distinct matching identities.
- Update clients and host/server together to receive the validation fix. Other rules and payouts are unchanged.
0.3.12
- Revert the custom throwdown art setting to the original default; retain the MSC package icon.
- Obfuscate detector, tracker, metadata and rules modules in the installable package by stripping comments/formatting and encoding string literals. Readable originals and the packaging script are supplied in the source archive.
- No gameplay, payout, menu or other settings changes.
0.3.11
- Replace the package icon with the supplied MSC logo and set the throwdown art reference to its supplied path. Native card display still requires the image to be registered as a game asset.
- Rewrite the player README and installation guide around installation, controls, rules, rewards and current limitations.
- Explicitly document unsupported underflips and API limits affecting trick modifiers.
- Preserve the card type, gameplay, payouts, menus and all other settings.
0.3.10
- Copy Belly Slide 0.1.5's populated native throwdown HUD and Quit panel publication into MSC S.K.A.T.E. for every active participant, with MSC turn/letter data.
- Stop publishing native setup alongside an active match, matching Belly Slide's waiting-to-playing transition.
- Revert the 0.3.9 forced
markers=truechange. Existing host match restrictions and Insert Leave/End controls remain unchanged. - No changes to server authority, trick detection, turn rules, rewards, networking or match actions.
0.3.9
- Keep native match-panel activity presence enabled for all active players, including joined clients, matching the working Belly Slide panel ownership. The official 2.1.2 UI presence gate depends on
match.markers; previously, allowed session markers disabled the native panel ownership on guests. - Preserve Insert Leave/End confirmations and the native Quit/Start/Leave event handlers, lobby list, server authority, turn logic, trick detection and rewards.
- Runtime limitation: to keep guest Quit accessible, normal session markers/Return are blocked while the match is active even if the host option allows them. The saved host rule is not modified; this needs a ReSkate runtime fix to decouple activity-menu presence from the marker restriction.
- Local tests are synthetic; live multi-client Quit rendering remains to be verified.
0.3.8
- Align native MSC match-panel publication with the working Belly Slide v0.1.2: use the stock
spottheme, render the populated match details panel only during play/results, include the exactQuitcaption, Steam portraits, ranks and player/timer settings, and accept Quit for the active match even when the native event omits its mode. - Restore Insert-menu Leave and host End with their original confirmation dialogs; keep the native waiting-card Start/Leave and native match-panel Quit, without reintroducing the keyboard/controller lobby shortcuts or duplicate Insert Start.
- No changes to server authority, payouts, trick detection, match restrictions or gameplay rules. In-game native UI remains to be verified.
0.3.7
- Use native throwdown waiting-card Start/Leave and match-panel Quit/End controls. Native host Quit routes through the existing server-authoritative
canceloperation; other participants keep the existingleavepath. - Remove duplicate Enter/Start and Escape/Back fallback shortcuts, Insert-menu match Start/End/Leave buttons and the duplicate D-pad panel command. Keep the Insert game preferences, lobby roster overlay and server match/turn logic unchanged.
- Wire protocol 5 and rules revision 21 unchanged. In-game native Quit/End behaviour still requires verification.
0.3.6
- Add host-frozen Enforce stock physics during game in Insert > Additional Rules, default On. All active participants retain the official stock-physics request through their turns; eliminated/leaving players restore their own tuning. Prepare stock tuning before play; do not arm the detector before stock_ready.
- Keep preparation holds scoped to the 3-second countdown; releasing the hold at GO no longer releases host-enforced physics.
- Use the high-resolution title_large font for large countdown and win/loss headlines instead of enlarging the small default font.
- Server diagnostics use reskate.log exclusively: no file reads, writes or rotation attempts on the server. Client diagnostic files remain unchanged.
- Freeze the real participant roster at Start. Eligible finished matches award 100 MSC per opponent through the optional trusted MSC server wallet bridge. Cancelled/unplayed games do not earn rewards. Only a confirmed durable wallet receipt is displayed as paid.
- Include a separate optional six-file MSC server source patch, ledger tests and application instructions. No existing server source or executable was changed; this bridge must be applied/rebuilt for real wallet credit.
- Protocol 5, capture/rules revision 21: update clients and authority together. Native ledger, bridge syntax and patch application checks pass; full patched-server/live payout integration remains unverified.
0.3.5
- Hold the local turn owner during the server-timed three-second preparation interval, block skating input, and draw a large centred 3-2-1/GO countdown. Official hold requires a plugin-scoped stock-physics request; restore the player's tuning before active skating and release all holds on exit, stale authority, epoch change and unload.
- Retire finished native activity/flag ownership immediately. Results live in an independent non-blocking overlay, and cannot hand off a fresh flag prematurely. Correlate placed/left events by game ID and ignore delayed cleanup from retired games.
- Keep the documented native open/setup/placement/waiting/Start flow without a duplicate flag.begin. Publish an interim waiting document while authority connects. Add a compact waiting overlay with player count and Enter/Start plus Escape/Back controls when the native waiting model fails to render. Insert Start/Leave remain available.
- Use a supported D-pad Left custom pause-panel Leave prompt instead of the unsupported face-button command binding.
- Add server-confirmed animated win/loss cards; winners receive a bounded cosmetic dollar-bill shower. No points or currency are awarded. Result snapshots do not replay animations; new setup clears the old result.
- Real official sandbox integration passes two clients plus authority through consecutive matches on both pinned runtimes. Pure Luau presentation and existing detector tests pass. Live game rendering/native-model recovery remain unverified.
- Protocol 5 and capture/rules revision 20 unchanged. Existing 0.3.4 authority is compatible; update clients for these fixes.
0.3.4
- Track per-attempt on-board origin and air/grind movement through physical completion. Landing on foot fails without requiring a native runout increment, during capture or pending settlement.
- Preserve ordinary on-foot jumps/walking and ignore their unrelated generic failure signals. A dismount first observed after the 350 ms settlement boundary cannot retroactively fail a landed trick.
- Intentional boneless/no-comply transitions retain the short launch grace but must return to on-board movement within the existing 700 ms allowance. Remaining on foot fails.
- Move the match overlay to the upper left at scaled (22, 75), remove all background rectangles and show result flashes on player text. Suppress duplicate native in-match text slots while retaining native activity ownership, setup, waiting, pause panel and results.
- Add foot-origin, plant-return, transparent HUD/document and idempotent authority failure regressions. Pure Luau tests pass; live acceptance remains required.
- Protocol 5 unchanged; capture/rules revision 20. Update all clients and authority together.
0.3.3
- Remove automatic spectating, its Insert toggle and stored-preference reads. The plugin no longer calls the spectate API during turns or cleanup.
- Simplify capture acceptance: fixed 350 ms settlement does not wait for ticker quiet; nameless partial rows do not veto named tricks. Unknown named tricks still reject.
- Remove blanket tumble-magnitude and heading-jump vetoes; preserve tracker rotation completeness, landing/bail checks and exact canonical comparison of order, stance, direction, spin and reported modifiers.
- Capture/rules revision 19, protocol 5. Update all clients and authority together; no active-match migration.
0.3.2 — 2026-10-26
- Audited all 190 source-derived native identities and all 351 native-name mappings with exhaustive Luau assertions; results are in TRICK_COVERAGE.md.
- Preserve native ground-grab category while treating two ground-grab identities as supported grounded captures, rather than discarding them as airborne-only grabs.
- Ignore known non-S.K.A.T.E. offboard, target, collectible and wipeout observations before identity validation. Unknown native names still reject explicitly; no speculative identity mapping.
- Limit: The official Luau API supplies trick ticker writes, not the MSC native trick-object history. Complete detection of every move, including complex modifiers and handplants, cannot be certified without live comparisons or additional official API evidence.
- Capture/rules revision 18, network protocol unchanged at 5. All participants and authority should update together; no active-match migration.
0.3.1 — 2026-10-26
- Explicitly close the Insert Leave/End confirmation on every button response, releasing dialog input ownership.
- Correlate late runouts with a pending landing, including a bounded extended watch when the skater goes off-board immediately after touchdown; actual mid-attempt foot landings fail independently of the free-roam rule.
- Recover the capture boundary from the official Boneless/No Comply launch event, even after a brief off-board state or without a preceding ride-state sample.
- Host-frozen Allow dark catches / dark flips rule (default Off); reject disallowed modifiers and merge native dark-catch ticker suffix revisions instead of appending duplicate tricks.
- Flash the letter-box background green/red for server-authoritative turn outcomes (success, mismatch, failure, timeout).
- Optional Insert Force spectate when not your turn (default Off), released on own turn/exit.
- Added synthetic Luau regressions for the above. Protocol 5, capture/rules revision 17; all clients and authority must update together.
Unverified: native input/dialog exercise, hosted/dedicated multiplayer and controlled live MSC comparison; no native binaries or upstream changes.
0.3.0 — 2026-10-26
- Decoupled physical touchdown and stable ground tracking from corroborating score events; stopped later movement invalidating finished captures.
- Added result identifiers, bounded authority receipts and idempotent attempt retransmission.
- Correlated runouts with the active landing interval and filtered verified irrelevant observations before evidence rejection.
- Added client-side plugin log files with rotation and detailed bounded capture history; dedicated server prints to standard log where its file API is unavailable.
- Added confirmable Insert Leave / End actions and extended Luau adapter regressions.
- Protocol 4, capture/rules revision 16; coordinated update required.
Known unverified: controlled game capture parity, two pinned official runtime integration tests, and dedicated file-output support.