Station 02 · Two-player strategy game

Duel for Middle-earth

I'm building a fan-made web adaptation of The Lord of the Rings: Duel for Middle-earth. The same persisted game supports live two-browser play or asynchronous turns, with the base game and Allies expansion.

Station record

Status
Active · In development
Rules
Server-authoritative
Player views
Private, per seat
Runs on
Mobile and desktop
Stack
TypeScript engine · Express · ws · SQLite

Where to find it

Links coming soon There is no public play link yet.

Server-authoritative rules · Private player views · Mobile and desktop

How it works

Diagram: two browsers send proposed moves to the server; only the server calls the engine's apply(); each seat receives its own redacted view().Browserseat ABrowserseat BserverExpress · wsSQLiteenginesetup()apply()legalActions()view(seat)proposed moveredacted view per seatapplyview
Fig. 1 A browser only proposes a move. The server is the only caller ofapply(), which rejects anything legalActions() does not allow, and each seat receives its own redacted view(). Drawn fromBuilding Duel for Middle-earth.

From the notes

This is a private-entertainment project and is not affiliated with the game's publishers or rights holders.

From Building Duel for Middle-earth

I still need to settle the access model and the rights-safe treatment of the game's artwork and trademarks before I expose a public play link.

From Building Duel for Middle-earth
  1. Building Duel for Middle-earth

    How my fan-made web adaptation supports live and asynchronous two-player games without trusting either browser with the rules or hidden state.

    productsgameslearning-at-home