Peninsula

Peninsula is an alternative server implementation for the popular Multi World Randomizer Archipelago. It's aim is to be performant, scalable, and easily distributable so it can behind load balancers. All in the name of reducing the hosting cost of large async or sync rooms.

Design Considerations

  • Store everything in databases or files accessible from all servers hosting peninsula.
  • Require no interconnectivity beyond the database (or a cache like Redis) between servers.
  • PHP based which is available on a wide range of web hosting offers.
  • Provide a passive Poll-style API which requires clients to regularly request information.

Pros

  • Significantly bigger lobbies (sync and async) through distributed processing.
  • Much cheaper to host as we can take advantage of web hosting deals.

Cons

  • All realtime information (notifications, chat, deathlink, ...) will require a polling client, causing delays.
  • WebSocket clients require a bridge to convert between the two protocols.
  • Higher traffic due to repeated information being required.

Sub-projects

This project is split into three projects:

  • The backend, which is PHP based and handles all interaction with the database.
  • The frontend, which is JavaScript based and handles user-facing information.
  • The bridge, which converts WebSocket clients to the Peninsula protocol.

License

Licensed under 3-Clause BSD License. For more information see COPYING.md.

S
Description
An alternative PHP+HTML+JS only implementation for the popular multi-game randomizer Archipelago.
Readme 79 KiB
Languages
CMake 47.7%
PHP 28.1%
C++ 16.9%
JavaScript 3.3%
Python 2.3%
Other 1.7%