/draftmancer

Multiplayer MTG Limited Simulator

Primary LanguageTypeScriptMIT LicenseMIT

Draftmancer

Contact

Join the discord for development related discussions: https://discord.gg/XscXXNw

How to run the project locally

  • Clone repository (git clone https://github.com/Senryoku/Draftmancer.git)
  • Open repository (cd Draftmancer)
  • Execute npm install to install dependencies.
  • Execute npm run build to build the server using typescript and the client using webpack (for production).
  • Execute npm start to start the server (which also serves the webapp).
  • Navigate to http://localhost:3000/

Development tips

  • Running npm run start-dev instead of npm start will restart the node server on any changes. (Install nodemon globally with npm install nodemon -g)

  • Use npm run build-client-dev to watch for changes in the client js code and automatically re-build it.

  • Use npm run build-server-dev to watch for changes in the server typescript code and automatically re-build it.

  • Setting the environment variable DISABLE_PERSISTENCE to TRUE (one can use a .env file for development) will disable retrieving/saving the states of Connections/Sessions between server execution from disk (see src/Persistence.ts).

Tests

  • npm test runs all tests in the test folder (non recursive). This is the command run by GitHub actions on each commit.
  • npm run manualtest runs tests from the test/manual folder, it contains additional (and long) statistical tests. These are not included in the automatic test suite.
  • npm run fronttest runs tests from the test/frontend folder, it contains additional end-to-end tests, including the client. These are not included in the automatic test suite.

Add -bail (e.g. npm run test-bail) to stop on the first error.

Notes on Arena Importer

  • Splits Cards (Ravnica) needs both card names, e.g. Discovery // Dispersal
  • Adventures (ELD) and Dual Faces (IXL) need only one.
  • AKR Splits Cards uses triple forward slashes (///) instead of double.

Custom Set format

See cubeformat.html

Acknowledgement