Commit Graph
18 Commits
Author SHA1 Message Date
branderson dd60c49dda docs: state hosting requirements and the legal position up front
The README opens with storage, CPU and HTTPS requirements, including the
per-player cost of streaming, and explains Flashpoint's legal standing.
Setup now uses the torrent and Infinity archive from Flashpoint's site,
and the streaming docs reflect the app proxying /stream/.
2026-10-13 21:12:03 -07:00
branderson 4130adfe58 docs: document Dotcom Arcade, streaming, proxy sign-in and saves
A new README for the combined project with setup from the Flashpoint
Ultimate torrent. New feature docs for streaming, proxy sign-in and
game saves; deployment, upgrade and streaming READMEs updated for the
single compose file; the project renamed throughout.
2026-10-13 19:31:06 -07:00
branderson 70f3421418 build: run the app and streaming from one compose file
The app, session manager and streamer are built from source by a single
docker-compose.yml. Streaming is the opt-in "streaming" profile, enabled
by setting STREAMING_API_TOKEN. Replaces the separate production, dev and
streaming compose files.
2026-10-13 19:22:31 -07:00
branderson 05db4313ae chore: rename the project to Dotcom Arcade 2026-10-13 19:19:15 -07:00
branderson a7659d7fb8 Size Flash streams to the exact SWF stage
Scaling the display up relied on full screen scaling the movie, but games
that set StageScaleMode.NO_SCALE stay at their native size in full screen,
leaving a small game against black. At the exact stage size, full screen
fits every scale mode and the browser scales the stream.
2026-10-13 11:10:34 -07:00
branderson b996609832 Rewrap streamer README 2026-10-13 11:10:34 -07:00
branderson f6cb5555b6 Stream Shockwave and Flash games, sized from their content
A game is streamable when its platform is allowed (STREAM_PLATFORMS,
default Java, Shockwave and Flash) and its launcher resolves under the same
rules fp-command applies. The display is sized from what it launches:
Director movies including Afterburner .dcr and pre-7 VWCF configs, SWF
headers scaled up to fit 1280x960, a page's largest embed, or a projector's
stage. Dimensions are rounded up to even for H.264.
2026-10-13 11:10:34 -07:00
branderson 046495f3c3 Launch games the way Flashpoint's Linux launcher does
fp-command applies the launcher's rules to any application path: execs.json
mappings, .bat to .sh, and .exe under Wine, resolving paths case-insensitively
and splitting launch commands as the launcher's shell command would. Windows
programs run from a writable per-session mirror of the install, with Director
Prefs and Flash saves linked into the synced saves. OldCPUSimulator, which
hangs under Wine, becomes cpulimit; Flash projectors go full screen; and
Flashpoint Navigator's toolbars are hidden. This replaces the LocalGames case.
2026-10-13 11:10:34 -07:00
branderson 4c8a23378c Stream LocalGames Windows games at their projector's stage size
The session manager treats a LocalGames .exe as streamable when the file
exists, sizing the display from the Director projector's config chunk.
2026-10-11 16:18:07 -07:00
branderson e0e3b5d4bb Run Windows games from LocalGames under Wine
fp-launch runs a LocalGames .exe with Flashpoint's bundled Wine from a
writable copy, linking its Prefs directory, where Director projectors save,
into the synced saves directory. Players without a save start from the Prefs
the game ships with. The image adds the X, font and PulseAudio libraries the
bundled Wine loads.
2026-10-11 16:18:07 -07:00
branderson 52e90ba164 Read the Flashpoint database with node:sqlite
better-sqlite3 has no prebuilt binary for the image's Node version and
node:24-slim can't compile it. The built-in module needs no native build.
2026-10-11 02:07:00 -07:00
branderson aadd6fe776 Let flashpoint-web ask whether a game can be streamed 2026-10-11 00:39:05 -07:00
branderson f5e9452191 Add session manager for per-player streams
Creates a streamer container per player on flashpoint-web's request, sized
to the game's applet, proxies its Selkies stream under /stream/<id>/, and
removes it when the player disconnects. Saves under /config/saves are
seeded from the browser at start and pushed back over server-sent events.
2026-10-11 00:37:44 -07:00
branderson 59d9ec5b4a Persist applet cookies to /config/saves
The JSObject stand-in kept cookies in memory, so saves were lost when the
game restarted. Write them to a file the session manager can sync, with the
policy granting only the agent jar access to that directory.
2026-10-11 00:33:10 -07:00
branderson 46ff37e7fb Strip appletviewer's menu bar and status line
A Java agent removes them when the viewer window opens, so the stream
shows only the applet. JSObject moves into the agent jar, which puts it on
the class path applets load from.
2026-10-11 00:22:16 -07:00
branderson ffd24cb667 Lock the stream to the game window's size
Following the browser's resolution left a small applet in the corner of a
large display and made the CPU encoder fall seconds behind.
2026-10-11 00:14:34 -07:00
branderson dca48bce51 Run applets that use LiveConnect or load images through the proxy
appletviewer has no netscape.javascript.JSObject, so applets that touch
JavaScript fail to load, and Java 8 denies applets the URLPermission they
need to fetch through an HTTP proxy. Add a JSObject stand-in with a working
document.cookie and a policy granting HTTP URL access.
2026-10-11 00:07:06 -07:00
branderson b0751fdbb1 Add Selkies streamer prototype for Java games
Runs a Flashpoint game natively in a container and streams it to the
browser. fp-launch follows the Linux launcher's sequence: start the game
server, mount the game's zip, and run startJava.sh through the proxy.
2026-10-10 23:36:13 -07:00