Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
client-plugins
client
dna
http-plugins
page-helpers
pages
plasma
public
scripts
style
.gitignore
LICENSE
Makefile
README.md
package.json
socket-test.js
warcluster-staging.js
warcluster.js

README.md

warcluster logo

WarCluster

Real-time Massive Multiplayer Online Space Strategy Arcade Browser Social Game for Twitter! ヘ(◕。◕ヘ)

⚠️ This project's support is discontinued. Venture forth at your own peril. It's ~3 years old and we had no prior production experience with WebGL MMOs. It's considered as a playground although it's working (we held numerous tournaments with ~100 simultaneous real players and dozens small scale inhouse tests) ;)

Related links:

What can you expect to see in this ~3-year old repo:

  • Some old ThreeJS-Fu, a little GLSL magic for working with WebGL in the browser
  • WebSockets for some real-time mumbo-jumbo with the server (>'.')>=O____l_*__O=<('.'<)
  • Some old node-organic approaches for the bundling pipeline of:
    • BackboneJS for the ingame UI and the long-polling Leaderboard.
    • LESS for some juicy mixins
    • Jade-lang for some fancy markup
    • _.JS [¬º-°]¬
    • TweenLite for some elegant animations
    • bootstrap ¯_(ツ)_/¯
    • hammerjs for some mobile friendliness ... and some other extra spaghetti here and there :)

History of how we got here

long story short: We wanted to learn something new ♪┏(・o・)┛♪┗ ( ・o・) ┓♪, experiment with the unthinkable & foresee the unimaginable. So we decided to make a web-fuckin-browser MMO as a side-project... It must had breathtaking tactics, large scale strategizing, thoughtful meta gameplay & dangerously social diplomacy. This is how WarCluster was born as the first social game for twitter! It was greatly inspired by other games

Setting

It has 6 different races. Each race has it's own unique color. six races

Each color corresponds to unique twitter #hashtag used for race wide communication (eg. #WarClusterRed). There're only verbal alliences between players.

Winning

The game is time based. Each round is approximately 10 days. The player with the most controlled planets (i.e. biggest empire) at the end of the round is proclaimed winner and therefore Galactic Emperor (here's one of the Beta winners @valexiev)

Gameplay

Each player starts with a solar system consisting of 9 neutral planets. His home planet (the one with the asteroid belt) is impregnable. Typically each colonized planet has owner and generates for him army pilots per minute. The bigger the planet the more it generates.

At some point the army can grow bigger than the allowed population of the planet. So when the numbers get red bad things start to happen and army pilots are beginnig to die by the minute. Different sizes of planets have different population caps. planet infoplanet

A player can send army pilots to attack, spy or support other planets depending on their verbal agreements with its owner. The spaceships travel slow so moves are carefully plotted. Imagine it as a real time game of Go warcluster red armada:

  • Upon attacking a player conquers a planet if his attacking army is > 1 than the other army. Everything is lost otherwise.
  • Upon spying a player gets the number of the army on the targeted planet.
  • Upon supporting a player is donating his army to the planet's owner.

A player should spend extra effort to pick his enemies wiser and his allies patiently. Plot twists are around every hour.

There're different kind of ships indicating the size of the army. From left (smallest army, no more than 500 pilots) to right (biggest army, more than 6000 pilots). This is used to understand what's the expected army power that's approaching you.

xs shipssm shipsmd shipslg shipsxxl ships

Running the app

prerequisites:

After you have the prerequisites:

  • git clone ...
  • npm install // in the designated folder
  • node warcluster.js // to run it in development mode

Releasing to staging

  1. Point to your staging server here
  2. Run scripts/release-staging.js for automated release

Contributing:

Fork it and make required changes. After that push your changes in branch, which is named according to the changes you did. Initiate the PR (づ ̄ ³ ̄)づ