Skip to content
This repository has been archived by the owner on Oct 20, 2023. It is now read-only.
/ keyforge-arena Public archive

Import Keyforge decks, play against your friends, and track your deck statistics

License

Notifications You must be signed in to change notification settings

mpigsley/keyforge-arena

Repository files navigation

Keyforge Arena

Play Keyforge online, track chain as you play with particular decks, and challenge your friends.

This is very much so a work in progress.

Example Game Board

Example Game Board

V1 Roadmap

  • Authentication
  • Build script to pull cards for every expansion and chosen language
  • Deck upload & manager
  • Dashboard and deck selection
  • Invite new connections & reply to requests
  • Check which connections are online
  • Challenge your connections & reply to challenges
  • Render game board at any screen size
  • Game lifecycle (passing turns, choosing houses, etc.)
  • Mulligan/keep opening hands
  • Discard cards from active house in main phase
  • Play exhausted creatures on either flank in main phase
  • Draw up to hand size at the end of turn
  • Ready cards in play at end of turn
  • Play exhausted artifacts in main phase
  • Play actions in main phase
  • Play an upgrade on a creature in the main phase
  • Creature fighting
  • Creature reaping
  • Perform a card action outside of fighting/reaping
  • Handle individual card rules
  • Invoke action immediately on the client, check for validity when game is updated
  • Handle mavericks by showing another house on the card & maverick identifier
  • Automatically complete any old, uncompleted games
  • Game rejoin logic
  • Internationalization

Feature Requests & Bugs

Feel free to open an issue if there is a feature you'd like to see or something is broken. Pull requests are always welcome.

Development

This project is a front-end application written in React + Redux with a Firebase backend. For more information see create-react-app.

Getting Started

  1. npm i and cd functions && npm i
  2. cp .env.example .env.local
  3. Create a firebase project and fill out .env.local.
  4. Ensure you enable authentication and the Firestore database in the web interface.
  5. $(npm bin)/firebase login or use your global firebase instance if you installed it globally.
  6. $(npm bin)/firebase use --add and select the project you configured in the firebase console.
  7. Generate new private key from the account services page and place json file at ./bootstrap/serviceAccountKey.json.
  8. npm run bootstrap to upload card and house images to firebase storage
  9. npm run deploy:all to setup the cloud functions, firestore indexes, and hosting
  10. npm start

If you are seeing a CORS error in the console. Try this fix out.

Available Scripts

In the project directory, you can run:

npm start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

npm test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

npm run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

npm run deploy

Combines the build command from above and with a deploy command from the local firebase package. The build directory is uploaded to the associated firebase project.

About

Import Keyforge decks, play against your friends, and track your deck statistics

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages