Files
ReSkate/STRUCTURE.md
T
AyeZeeBB 89fca92f19 Launcher: official mods removed; their packs are mods like any other
Now that features are Luau plugins, nothing needs mods of ReSkate's own:
- The OFFICIAL tab and its rail tile are gone, with Launcher/official_mods (the backend's list, the
  install, update and sync, and Play's wait for them).
- GET MODS lists and updates Board Break, Road Rash and the rest like any other package, and MY
  MODS no longer marks them Official or keeps them out of UPDATE ALL.
- The merge may leave one out over a conflict like any other mod; the version stamp, the on/off
  helpers and the move out of the old .reskate-official folder are gone from builtin_packs.
- Installed copies stay in Mods as ordinary mods. The retired first Board Break is still left out.
2026-10-21 19:00:55 -05:00

14 KiB

ReSkate structure

How the repository is laid out, what each part builds into, and where a feature's code lives. For building and using ReSkate, see README.md.

What gets built

Binary Source What it is
ReSkateLauncher.exe Launcher/ the launcher: updates, Steam sign-in and game download, mods and profiles, starts the game, crash reporting
ReSkate.dll Runtime/ + Extension/ + Engine/ (+ SpotifyHelper/) the runtime the launcher loads into Skate.exe
ReSkateServer.exe / ReSkateServer Server/ the headless dedicated server (Windows and native Linux)
ReSkateEmotePacker.exe EmotePacker/ packs assets/emotes into the chat emote pack
dingosdk_builtin_packer BuiltinPacker/ packs assets/builtin into the built-in packs
dingosdk_*_tests each module's Test/ regression tests, run with CTest

Internally the project is still called DingoSDK (CMake options, target names).

Layering

 Launcher/ ──launches──▶ Skate.exe ◀──injected── ReSkate.dll
                                                   │
                                     Runtime/      entry point, startup, per-frame tick, exports
                                       │
                                     Extension/    ReSkate's features and UI
                                       │
                                     Engine/Game/  native ABI, data models, per-build addresses
                                     Engine/Vfs/   mods, merging, content cache
                                     Engine/Resource/  Frostbite formats
                                     Engine/Core/  logging, console, hooks, crash reports
                                       │
                                     External/     third-party libraries

 Server/ (ReSkateServer) reuses Engine/Core and the multiplayer protocol, not the game.

Feature code never holds game addresses: everything tied to one Skate.exe build lives in Engine/Game/Build/<build>/ (see Engine/Game).

Top level

ReSkate/
├── CMakeLists.txt, CMakePresets.json   build entry; presets vs2022-x64, linux-x64, release, linux-release
├── cmake/                 the build, split by area
├── Engine/                engine-level code shared by the DLL, launcher and server
├── Extension/             ReSkate's features (in ReSkate.dll)
├── Runtime/               ReSkate.dll entry point and lifecycle
├── Launcher/              ReSkateLauncher.exe
├── Server/                ReSkateServer (dedicated server)
├── SpotifyHelper/         Rust static library: the game as a Spotify Connect device
├── EmotePacker/           emote pack tool
├── BuiltinPacker/         built-in pack tool
├── External/              vendored third-party code, pinned and hashed
├── assets/                files embedded into the binaries
├── config/defaults/       default profile/settings JSON embedded into ReSkate.dll
├── contrib/               plugin mods, server hosting files, design notes, release script
├── README.md, MACOS-SETUP.md, MUSIC-SETUP.md, LICENSE
└── .clangd, .gitattributes, .gitignore

cmake/

File Covers
ProjectOptions.cmake DINGOSDK_* options, version stamping (reskate_version.h, version.rc)
Dependencies.cmake the External/ libraries as static targets
Core.cmake Engine/ libraries: hooks, console core, launcher support, supported build
Features.cmake Extension/ feature libraries
UI.cmake the ImGui overlay and PlayStation controller input
Runtime.cmake ReSkate.dll (dingosdk_runtime), including the cargo build of SpotifyHelper/
Apps.cmake launcher, server, packer tools, and most test executables
CrashReport.cmake Sentry crash report client/upload, wired into the DLL, launcher and server
ProfileData.cmake, CustomScriptData.cmake embed config/defaults/ and the custom Lua entry
templates/ generated headers: version, version.rc, crash/update config, profile defaults

Engine/

Loosely follows Frostbite's own layout.

Engine/Core/

Folder Contents
Console/ command registry and console core
Debug/ crash reports: minidumps, report envelope, trace, upload
Hooks/ Detours hook helpers
Json/ JSON helpers over RapidJSON
Log/ spdlog-based logger, log paths, crash/event logging
Platform/ process injection, PE helpers, memory and path utilities
Profiling/ profiler and sampler
Storage/ SQLite save database
Text/ chat word filter

Engine/Resource/

Frostbite data formats: binary bundles, TOC, CAS codec (Oodle/zstd/LZ4), EBX documents (read, write, merge, fixup repair), mesh sets, skeletons, textures, material grids, shader lookup.

Engine/Vfs/

The virtual file system and modding pipeline:

  • initfs, game_archives, game_bundles, game_textures, native_db — reading the game's data.
  • mod_list, mod_catalog, mod_item_sources, mod_conflicts, mod_scoring — the Mods/ folder and mods.json.
  • mod_merge* — merging mods into the game's data (overrides, combine, grid, textures, loading screens, CAS store, scan cache, build stamp).
  • content_cache*, content_catalogs — the merged-content cache and its install.
  • thunderstore_package, https_download — Thunderstore packages.
  • mod_music, item_thumbnails, world_layer_scan, builtin_packs.

Engine/Scripting/

Custom Lua script support (currently switched off for users).

Engine/Game/

The game's native ABI and plain data models, no hooks:

Folder Contents
Abi/ native strings, data layouts, transforms, callback queue
Build/ supported_build.h (hashes, Steam depot/manifest pins), fingerprint.h, image_identity, addresses.h
Build/20260929/ one header per area with every address, fingerprint and patch for this Skate.exe build, as addr::<area>::<name>
Input/ controller bindings, PlayStation reports, voice input
Multiplayer/ session model and limits, tick/voice/distance settings, role commands, chat rate
Profile/ progression, player card, object persistence models
Rendering/ draw packets, graphics controls
Settings/ named settings, simulation time, multiplayer settings lock
Skater/ first person, velocity boost, skater body
UI/ game view, menu entries and scale, loading screen selection
World/ world model, layers, parks (rotation, randomization, editor), travel, custom level manifest

Extension/

ReSkate's features. Each folder is one area; most have a console_commands.cpp for its console commands and a Test/ folder.

Folder Feature
Boot/ offline boot, offline Steam, blocking EA app/services, user-data redirect, startup interventions, Discord presence, fatal dumps
Assets/ live mods (apply without restart), loose files, mod layers, multiplayer map download, map icons
Console/ built-in console commands, perf commands, memory ledger
Customization/ cosmetics catalog, item browser, local customization, player card
Multiplayer/ Steam lobbies, sessions, parties, voice and text chat (see below)
Music/ local music, playlists and artwork, external players: Spotify, YouTube Music, Plex
News/ launcher/game news feed
Objects/ object placement and the Park Editor (ParkEditor/), park object sets, park mods
Plugins/ the Luau plugin host and its reskate.* API (see below)
Profile/ offline profile storage: skater, progress, missions, objects, preferences
Progression/ challenges, entitlements, neighborhood unlocks, fast travel unlock, rip score, board wear
Rendering/ graphics controls and labels, display startup, replay export
ReplayKeyframes/ replay keyframe curves and settings
Scripting/ Lua startup, custom script loader, native blocking
Settings/ gameplay/native/user settings, input bindings, engine tweaks, replay drafts
Skater/ first person, noclip, free flight, physics tuning, no-bail, AI skaters, x-ray, breakable deck, grind exits, trick watch
Throwdowns/ native throwdowns, custom (plugin) modes, relay and wire format
Trainer/ trick trainer: waypoints, jumps, landings, presets
Travel/ location travel
UI/ the in-game UI (see below)
World/ level loading, loading screens, time/atmosphere, population, park rotation, world layers, engine guards
AnimationStudio/ animation core

Extension/Multiplayer/

Folder Contents
Net/ protocol, wire/delta/pose/sound codecs
Steam/ lobbies, server browser, transport and lanes, friend join, social
Session/ session state, send/receive, parties, commands, rooms, passwords
Remote/ remote skaters: native skater spawn, cosmetics, poses, audio, VFX, collision
Hud/ nametags, indicators, player UI
Voice/ voice capture and playback

Extension/UI/

Folder Contents
Overlay/ the ImGui overlay: the ReSkate menu (Insert) and its pages, console, chat and emotes, Park Editor panels, plugin pages, perf overlay, theme
NativeMenu/ pages built into the game's own menu (hub, multiplayer, throwdowns)
Startup/ startup window/splash

Extension/Plugins/

The Luau plugin host. A plugin is a folder in Mods/ with a reskate-plugin.json.

  • plugin_discovery, plugin_manifest — find and read plugins.
  • plugin_vm, plugin_runtime, plugin_host — the sandboxed Luau VM and plugin lifecycle.
  • plugin_api*.cpp — the reskate.* API (game, world, UI, more); plugin_game*, plugin_camera, plugin_joystick.
  • plugin_ui, plugin_sound, plugin_wave, plugin_http, plugin_session_feed, plugin_wire — pages, audio, HTTP, multiplayer messages.
  • plugin_commands — the plugin console command.

Runtime/

ReSkate.dll's lifecycle: exports.cpp (DLL exports), bootstrap, runtime_init, runtime_state, client_context, client_tick (per-frame), frame_timing, level_requests, request_scheduler, menu_entry_hook, overlay_callbacks, console_bridge.

Launcher/

Files Contents
main.cpp, launch entry point and starting/injecting the game
updater ReSkate self-update from GitHub releases
depot_output, game_settings supported game build download/verification and game settings
mod_manager, mod_profiles, thunderstore mods, profiles (r2modman-compatible codes and .r2z), Thunderstore
gui*.cpp the window: home, mods (browse, profiles), settings, sign-in, changelog, legal, gamepad
crash_reporter crash reporting host
Test/ launcher tests

Server/

Files Contents
main.cpp, server_engine, server_host, steam_server the server loop and Steam game server
server_config ReSkateServer.json
server_commands, server_votes, server_party, server_parks, server_map_update admin commands, votes, parties, parks, map updates
roles.h, global_bans, server_words roles/permissions, bans, word filter
board_check.h, speed_check.h anti-cheat checks
server_plugins server-side plugins
server_update, server_release self-update
GUI/ optional server window
README.txt, README-linux.md, README-roles.txt, ROLES.md server docs
Test/ server tests and fixtures

SpotifyHelper/

Rust crate (reskate-spotify, librespot-based) built by cargo from cmake/Runtime.cmake as a static library linked into ReSkate.dll. It makes the game a Spotify Connect device. Not built in Debug.

External/

Vendored libraries, versions and hashes in External/manifest.json and External/README.md: Dear ImGui, Microsoft Detours, Luau, RapidJSON, spdlog, SQLite, LZ4, Zstandard, miniz, bcdec, Valve's Steam networking headers, and fonts (Montserrat, Permanent Marker).

assets/ and config/

  • assets/launcher/ — launcher background and icons.
  • assets/emotes/ — chat emotes (emotes.json, emotes.png).
  • assets/builtin/ — built-in packs (throwdown_menu.zip).
  • assets/models/fpv/ — FPV drone model.
  • assets/*.jpg|png — splash, music artwork.
  • config/defaults/ — default profile.json, progress.json, settings.json, options.json, challenges.json, location-travel.json, object-dropper.json, news.json, manifest.json.

contrib/

Path Contents
plugins/ plugin mods: ports of former built-in features (hall-of-meat, grind-exits, road-rash, board-break, fpv-drone), test plugins (reskate-test, reskate-hostile, throwdown-modes-test), server-starter, and tools/. See contrib/plugins/README.md
pterodactyl/ Pterodactyl egg for hosting the server
reskate-server.service, setup-linux-server-libs.sh Linux server setup
package_release_zip.py packs release zips
*.md design notes for individual features
Test/ tests for contrib scripts

Each plugin folder looks like:

<plugin>/
├── reskate-plugin.json   plugin manifest
├── manifest.json         Thunderstore manifest
├── plugin/main.lua       entry point (+ other modules, tests.lua)
└── images/, sounds/, data/   optional assets

Tests

Tests live in a Test/ folder beside the code they cover (about 115 files) and build as dingosdk_*_tests executables. Turn groups on with DINGOSDK_BUILD_MULTIPLAYER_TESTS, DINGOSDK_BUILD_LAUNCHER_TESTS, DINGOSDK_BUILD_PARK_EDITOR_TESTS, DINGOSDK_BUILD_CRASH_REPORT_TESTS and DINGOSDK_BUILD_PLUGIN_TESTS, then run ctest --test-dir build/vs2022-x64 -C Release.