Commit Graph
16 Commits
Author SHA1 Message Date
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 e333c738ef Merge pull request 'Local games' (#5) from local-games into main
Reviewed-on: branderson/flashpoint-ultimate-server#5
2026-10-11 17:27:59 -07:00
branderson 41cc2bc76d Merge pull request 'Stream Windows games under Wine, starting with Australia Wildlife Rescue' (#4) from wine-games into local-games
Reviewed-on: branderson/flashpoint-ultimate-server#4
Reviewed-by: branderson <brad@branderson.io>
2026-10-11 17:26:12 -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 762a8aede1 Merge pull request 'Per-player stream sessions with browser saves' (#2) from stream-sessions into java-streamer
Reviewed-on: branderson/flashpoint-ultimate-server#2
Reviewed-by: branderson <brad@branderson.io>
2026-10-11 02:42:25 -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