Seven Cities brings the popular board game 7 Wonders to the browser and allows people to play whenever and wherever they want, without having to worry about keeping track of all the moving parts of the game.
In Seven Cities, each player is assigned a city based on the Seven Wonders of the Ancient World. Players can gain points by trading, building city structures, and fighting wars with their neighbors.
Our team developed our own customized web-sockets system using socket.io to communicate between our Angular.js-based front-end and our game logic and database in the back-end. For our database and data modeling, we used Postgres and Sequelize because our application heavily depends on many complex data relationships and we decided that a relational database would be best suited for our needs.
For our UI we used HTML and CSS, and created all the animations in pure CSS without using external libraries.
Our main challenge, other than utilizing new tools and technologies and not relying on external libraries, was effectively implementing the complex game logic. Because in Seven Cities each player can choose from a variety of different moves and is limited by multiple factors (including their own board, resources, and cards, as well as those of their neighbors), in each step we had to calculate exactly what a player should be allowed to do.
We hope that our application will serve both current fans and new players and allow users to play with their friends, no matter where in the world they are.
- Meredith Coulis, Leila Loezer, Terry Horowitz, Yuval Idan