OilyLime / HackymonTCG

Project for SOEN 354 @ Concordia
0 stars 0 forks source link

HackymonTCG

Project for SOEN 354 @ Concordia

Usage Instructions

Please use the given .txt files for uploading located in: /cards These files were modified to enable easier parsing, however, we will be implementing a preprocessing pass to do these modifications automatically to get the same .txt files that we provided.

Note this is not a big change, we simply changed a delimiter in the abilities.txt file

Running locally:

Install Meteor following the steps located here: https://www.meteor.com/install

Go into the project's root directory run these commands on after another (warning this is a lengthy process):

meteor npm install
meteor run

The local server should be listening on port 3000.

Run Unit tests:

After running locally once (dependency packages will installed) run: meteor npm test

Architecture:

All implementation is done in the imports/ directory. Everything outside of that directory is mostly:

start-up boilerplate code, 
node or meteor packages, 
meteor's boilerplate code, 
art assets,
continuous integration scripts.

Under imports/startup has the entrypoints for the server and client essentially:

setting up the routes,
starting the server, 
database connection for client-side use

Under imports/ui has:

all of the presentational elements (components/templates),
it also holds the layouts(pages for routes),
all of the UI logic

Under imports/AI has:

all of te calls and relevant logic for the AI to take a turn

Under imports/gameLogic:

the classes that are needed to define the GameState Class
the GameManager class that pulls the gamestate from DB do its modifications to the game state then pushes it back to the DB

Under imports/collections:

all of the schemas for our DB is there, since we are using mongoDB (NoSQL) we use interfaces to define our schema
methods.ts is the interface which the client can call methods that calls server-side functions
publish.ts connects the DB to the server

Resources

Meteor
Testing
Typescript