Skip to content

rsofaer/nanomunchers_js

Repository files navigation

Javascript Nanomunchers for the Dr. Ecco website.
Tests are in Jasmine: https://github.com/pivotal/jasmine/wiki

INTRODUCTION
The purpose of this project is to create a Nanomunchers game hosted on the Dr.
Ecco website.

DESIGN CRITERIA
* We desire a game that is compelling to play over one that preserves all of
  the computational rigor of the original programming assignment.
* We desire a two player action game.

GAMEPLAY
The game page will display two 'clips' full of nanomunchers on the far left and
right hand side of the screen. The Nanomunchers graph is located in the middle.

 ---   -----------------------------   --- 
| x | |                             | | x |
| x | |  o        o--o--o    -      | | x |
| x | |  |        |         -DD     | | x |
| x | |  o--o     o          -      | | x |
| x | |     |     |                 | | x |
| x | |  o--o--o--o--o--o     o--o  | | x |
| x | |     |           |     |     | | x |
| x | |     o   -       o     o     | | x |
| x | |        -DD      |     |     | | x |
| x | |         -       o--o--o--o  | | x |
| x | |                             | | x |
 ---   -----------------------------   --- 

The player 'motherships' are controlled using keyboard inputs as in
first-person shooters for one player and the arrow keys for the other. A
separate key unloads from the 'clip' of nanomunchers when in close enough
proximity to a node on the graph.

The simulation advances continuously. The appropriate gameplay speed will be
determined by trying to keep the action compelling. All nanomunchers dropped
while munchers are still driving to their next node will fall until the
exisiting munchers complete the cycle, at which time the conflict resolution
rules are enforced.

ARCHITECTURE
boardview.js - Board GUI elements.
clipview.js - Nanomuncher clip GUI elements.
lib - Contains third party libraries Raphael, JQuery.
misc.js - Helper functions.
muncherview.js - Nanomuncher GUI elements.
nanomunchers.js - Game UI elements and global constants.
page.html - Main HTML page hosting game.
playerview.js - Player GUI elements.
scoreview.js - Score GUI elements.
server - Runs a test HTTP server.
simulator.js - Nanomunchers simulation logic elements.
sounds - Sounds used during gameplay.

The game adopts a model/view strategy. All of the core logic elements necessary
to run the game and enforce its rules are implemented in Simulator. Each game
element has a corresponding view object implemented in a separate file. The
main driver of the game is the GameUI implemented in nanomunchers.js. The
GameUI owns all of the UI instances as well as the simulator. Its game loop
timer advances the game simulation while the animation elements are handled by
the animation timer service.

MANDATORY FEATURES
* Board generator.
* Game state model.
  - Controls board objects such as motherships, graphs, clips, etc.
* Gameplay state machine.
  - Presents UI states on page { Intro, Clip_Loading, Action, End }
* High scores.

OPTIONAL FEATURES
* Prettier graphics!
* Mode to have players strategize by loading their clips with hand-programmed
  nanomunchers.
* Game replay.
* Sound effects.
* A narrated story screen (for the die-hard fans).

About

Javascript version of nanomunchers for Dr. Ecco

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages