lambdabaa / envoy

Envoy is a multiplayer trading card game built with meteor.
1 stars 0 forks source link

envoy

Build Status

Overview

Envoy is a multiplayer trading card game built with meteor. It is intended to be (conceptually) similar to other trading card games like magic, yugioh and pokemon. Here are some of the project's high-level goals which (perhaps) differentiate it from other games.

  1. Envoy is asynchronous by default. While your opponent is taking a turn, you can feed farm animals, build a pillow fort, etc.
  2. Envoy is a modern, networked computer game. Most other, historic card games made design decisions that allowed humans to compute and store the game state. Nowadays, everyone and their mother has insanely powerful, general-purpose computers which opens up game options.
  3. Envoy is an open platform. We will strive to make it so that other developers can build "apps" on top of our data ranging from alternate game players to marketplaces.
  4. Many card games are optimized to make a lot of money off of folks with gambling problems. If Envoy ever has a commercial offering, we will make choices that align Envoy's profits with players' joy, well-being, and thought. Envoy's primary goal is to engage and entertain people in wonderful ways.

The Game

Directory Structure

app/                         # <= where the main meteor app lives
app/.meteor/                 # <= configure meteor version, packages

app/client/                  # <= bundled into client
app/client/controllers/      # <= template data && controller code
app/client/style/            # <= css made available to clients
app/client/templates/        # <= handlebars templates

app/lib/                     # <= shared between browser and server
app/lib/collections/         # <= meteor models

app/server/                  # <= bundled into server

fixtures/                    # <= json files that we mongoimport on start

tasks/                       # <= custom grunt tasks

test/                        # <= where tests live
test/integration/            # <= integration test cases
test/unit/                   # <= unit test cases
test/unit/browser/           # <= unit tests for client-side code
test/unit/mocks/             # <= unit test mocks
test/unit/shared/            # <= unit tests for shared code

Running Locally

To run envoy locally, you must first globally install:

Additionally, in order to run the full test suite, you need:

Then...

npm install

// Copy app into build/ directory
./node_modules/.bin/grunt build:default

// Run meteor
cd build && meteor

// In another terminal session, you can load some fixture data
./node_modules/.bin/grunt fixtures:default

This will start meteor on port 3000. Open up the app in your browser by navigating to http://localhost:3000.

Development Tips

Tests

To run the lint and test suites:

npm install
./node_modules/.bin/grunt --force

Testing Tips