WARPATH: NEON FRONTIER — Roblox Feasibility Study
Question: could the remake be built on Roblox instead of the web/PixiJS stack? Short answer: yes — and it would be more faithful to 1997's multiplayer chat-room soul — but it is a different product with different economics, a different audience, and zero code shared with the web plan. This doc specifies that product so both paths are on paper.
1. What changes at product level
| Dimension | Web/PixiJS plan (docs 02/04) | Roblox version |
|---|---|---|
| Core mode at launch | Solo vs/with bots; MP post-1.0 | Multiplayer-first: 8-captain galaxy servers, bots fill empty slots |
| Monetization | Premium ~€9.99, no IAP economy | Free-to-play, cosmetics-only (game passes for skins/trails/voice packs); optionally desktop real-currency Paid Access for a "supporter" tier |
| Audience | Nostalgic 30–50 y/o + indie crowd | Roblox-native (skews young) + whoever we pull in |
| Ownership | Full: web, stores, Steam, PWA | Rented reach; no Steam/App Store identity, platform policy risk |
| Servers/accounts/chat | Ours to build (deferred) | Free, built-in, moderated |
| Session length | 15–40 min | Trim toward 10–25 min (Small default) for platform norms |
| Codebase | TypeScript, ours | Luau (or roblox-ts), Roblox APIs — no code shared; design docs port 1:1 |
Design pillars survive unchanged. The one that gets stronger is the original's social identity: humans + bots on both sides, radio chatter, betrayal — that's native Roblox culture.
2. Architecture on Roblox
2.1 Topology
- One Roblox server = one galaxy = one match. 8 captain slots (humans join/leave; bots hold or take over abandoned slots — the 1997 "join = spectate" flaw becomes drop-in bot-takeover for free).
- Server-authoritative everything: galaxy sim, economy, combat resolution. Clients send intents (thrust vector, fire, dock, invest), receive replicated state. Never trust the client with credits or allegiance.
- Matchmaking: default public servers via Roblox discovery; private servers for friends-only galaxies (free or Robux-priced — our call); reserved servers (
TeleportService:ReserveServer) for future ranked/daily modes.
2.2 Server sim (Luau)
- Port of the deterministic sim design from doc 04, relaxed: determinism matters less because the server is the single authority — no lockstep needed. Keep seeded galaxy-gen (daily seed = same layout across servers) but let combat run on ordinary server time.
- Galaxy tick at 10 Hz (planets, empires, AI captains, events) on
Heartbeataccumulator; combat/projectiles at frame rate server-side with client-side visual smoothing. - Modules:
GalaxyGen(seeded sector graph + biome templates),EconomySim(population, tek, allegiance, dividends),EmpireAI+CaptainAI(bots use the same intent API as players — one code path),CombatResolver,EventDirector,RecapBuilder. - Physics: do not use Roblox physics for ships. Kinematic movement integrated in scripts (CFrame updates), simple sphere/ray hit tests. Roblox physics adds jitter, exploitable mass-pushing, and network ownership headaches; a top-down arcade game needs none of it.
- Set projectile/ship network ownership to server; client renders predicted local ship movement for feel, server reconciles (standard Roblox action-game pattern).
2.3 Client
- Camera: scriptable camera locked top-down (
CameraType.Scriptable, CFrame above ship, slight zoom/lead juice per doc 03). World is 3D low-poly ships/planets on a flat plane — reads as 2D, lights beautifully. - HUD in Roblox UI (ScreenGuis): the doc 03 design system ports well — chamfered frames via 9-slice images, mono text via Roblox's monospace-ish fonts (or custom font upload), tabular layout by hand. The Radio = custom scrolling frame fed by server events plus native TextChatService channels for actual player chat (moderation compliance for free).
- VFX: Beams/Trails/ParticleEmitters + Bloom/ColorCorrection post-effects cover the neon grammar (trails, shield ripples, explosion flash-ring-debris). Neon material on emissives is literally called Neon — the art direction was made for this.
- Input: Roblox handles KB+M, touch (ContextActionService + custom floating stick per doc 02 §controls), and gamepad natively — the one-thumb auto-fire mode ports as designed.
2.4 Persistence & services
| Need | Roblox service |
|---|---|
| Meta-progression (Insight, research tree, cosmetics, stats) | DataStoreService (+ SessionLocking pattern), MemoryStore for cross-server daily leaderboard staging |
| Daily seed | Deterministic date-derived seed; OrderedDataStore for the leaderboard |
| Achievements | Badges |
| Cosmetics monetization | Game Passes (permanent) + Developer Products only if ever needed (avoid — pillar: no consumables) |
| Analytics/balance | AnalyticsService funnels + recap event logging |
| Cross-server events ("galactic war weekend") | MessagingService |
2.5 Tooling
- Rojo + Git for real source control (the docs repo pattern continues; Roblox Studio alone is not acceptable for a project this size).
- roblox-ts is optional: it lets us keep TypeScript habits, but adds a toolchain layer and community friction. Recommendation: plain Luau with strict typing (
--!strict) + Rojo; the sim design transfers as architecture, not code, either way. - Testing: TestEZ (or Jest-Lua) unit tests on the sim modules headless in CI via Lune/run-in-Roblox.
3. GDD deltas (what to edit in doc 02 if we go this way)
- §Core loop: macro loop unchanged; add "server lifecycle": galaxy ends → recap for all → 60 s hangar lobby → same server reseeds. Mid-match joiners take over a bot captain.
- §Monetization: replace entirely — F2P, cosmetics-only game passes, optional desktop Paid Access supporter tier; keep the no-pay-for-power / no-consumables / no-FOMO clauses verbatim.
- §Progression: Insight economy unchanged, but rebalance recap payouts for shorter sessions; add first-session onboarding inside a live match (spectate-free: you spawn as a protected Pathfinder in the safe pocket with radio-guided objectives).
- §Controls: unchanged (Roblox covers all three input classes).
- §Campaign: demote to post-launch; multiplayer skirmish + daily seed are the launch product. Solo = private server with bots (works day one).
- §Roadmap: Phase 0 (4 wk) one-sector combat+dock feel with 2 players; Phase 1 (8 wk) full Small galaxy, 8 slots, bots, recap; Phase 2 (6 wk) meta-progression, daily seed, cosmetics; Phase 3+ events, campaign, console polish.
- §Risks: add platform risks below.
4. Roblox-specific risks
| Risk | Mitigation |
|---|---|
| Economics: in-experience Robux spending nets roughly a quarter of player spend after platform cuts and exchange; cosmetics-only caps revenue further | Treat as reach-first project; desktop real-currency Paid Access tier for margin; keep scope lean enough that modest revenue sustains it |
| Discovery feast-or-famine: algorithm decides reach | Design for session metrics the algorithm rewards (fast first fun, retention hooks like daily seed); build a community outside the platform |
| Audience mismatch: young players vs reading-heavy strategy | Onboard through the Radio, iconify the store (tek notches, icons per doc 03), keep investment UX to two taps; playtest with actual Roblox-age players early |
| Policy/platform dependence: rules, revenue splits, and moderation can change under us | Keep the design docs engine-agnostic (they are); the web/PixiJS plan remains the escape hatch — nothing here forecloses it |
| Chat compliance: custom Radio must not carry free-text player messages | Player chat goes through TextChatService only; the Radio ticker carries system/bot lines |
| Exploiters: F2P multiplayer attracts them | Server authority everywhere, sanity-check all intents, never replicate hidden info (fog of war filtered server-side per player) |
| IP: same "Warpath" name issue as doc 02, plus Roblox's own IP takedown surface | Same mitigation: contact Synthetic Reality early; rename-ready identity |
5. Recommendation
Both paths are honest products:
- Choose Roblox if the primary goal is people playing multiplayer Warpath soon, free, with zero infrastructure — accept F2P cosmetics economics and platform dependence. Launch order flips to multiplayer-first, which is arguably truer to 1997.
- Choose the web/PixiJS plan (docs 02/04) if the primary goal is owning a premium indie game with Steam/App Store identity and the no-IAP promise intact.
- Hybrid sequencing is viable because the design layer is engine-agnostic: prototype the conquest loop on Roblox as a live playtest (fast feedback, real multiplayer), then build the owned premium version on the web stack once the loop is proven — at the cost of two implementations.
Decision owner: you. The docs are written so no path is foreclosed.