Map Edit

factions Edit

heroes Edit

talents Edit



name brainstorming Edit

Normal screen map is scrollable

Full screen map allows you to show

-enemy heroes


-special buildings

Game Mechanics


-Military power generation

-Hero abilities


Minimum Playable Product

  • maps (how will a map be created?)

    • maybe phaser handles this, if not need to manually calculate (scary)

  • hero movement

    • each city has a list of possible buildings

    • each building has resource costs, and pre-requisites

    • this information needs to be in a separated file for each city in json format

    • E.G:  ...cities/necropolis.js

    • There should be a base city class, which can be instantiated: E.G var city = new City(‘Necropolis’);

    • this instantiation process should parse the json file and setup the object structure to represent the json file.

    • City object should contain:

      • build(“name of a building”) #function to build a new building

      • goldPerDay #amount of gold this city generates every day

      • buildings #list of buildings, whether they are built or not and their cost

      • units # list of units by name, availability per week, currently available, costs

      • location #location in world map

      • id #unique id

  • -resources

  • -hero abilities

  • -races

  • -combat calculations

  • -ui (heroes, menu, city)

  • -assets (images, sounds)

  • Game

    • players

      • name

      • id

      • player number

      • team

      • resources

    • cities

      • faction

      • owner

      • location

      • buildings

      • goldPerDay

      • militaryPerday

      • resourcesPerDay

      • existingCreatures (I mean ones you purchased but haven’t put on hero yet)

    • heroes

      • name

      • owner

      • abilities

      • units

      • items

     is the object something like

var player={




























or are you thinking about somehting like a list containing all cities/heores, [city1, city2, city3] [Ian, Stefan, Yvette] and later you refer to their owners ??

    • turns

      • event logs


A city will be composed via a call to the City class:

var city1 = new City(“faction”) //where faction is the name of the faction of the city. e.g. necropolis

The city object itself is just data, it should contain no logic or processing functions.

The city will be made up of a “shared” list of properties that all cities share, with a “specific” list of properties that are faction based, and finally a “map” specific list of properties. Map specification is not needed, but is available in case we want to specifically alter some cities in a specific map. The specific properties are merged on top of the shared properties, this way we can alter factions to be different if necessary.


What is a marketplace?

Marketplace is a buildable building for all cities. Once a player has built a marketplace in any city they can access the marketplace tab. The tab is accessible at any time while the player owns a city with the marketplace building. The marketplace tab can be used to request trades with other players, or to trade resources with the “market” at specific ratios. When a player requests a trade with another player, the second player will be prompted to accept or decline this trade at the beginning of their turn. Players may not request trade with players who do not yet own a marketplace. The marketplace price ratio when trading with the market is improved by a percentage for every additional marketplace you own.

Marketplace price ratios should be exposed in a data file located somewhere in the data folder.

When a new game is created, part of the init process is to generate market ratio data for every player based on the data file. The data file should include the base ratios (i.e ratios for players with only 1 marketplace, and should include a percentage value to indicate the improvement in ratios per additional marketplace).

Martekplace object should be created as part of the Player object.

this Object is affected by:

-building a market place

-gaining control of a city

-losing control of a city

The marketplace object in the player object is a data component which should have no functionality.

Additionally there will need to be a logic component with the following functions:

-requestPlayerTrade(trade, source, target)

trade: is an object with the following format


send: {

wood: 1,

ore: 2


receive: {

gold: 5000



source: name of player who is requesting trade

target: name of player whom the trade is requesting

-processPlayerTrade(trade, source, target)

  1. if the trade is accepted, this function should process the trade

  1. this function should also log the event of this trade

-processMarketTrade(trade, source)

  1. this function will be used when a player establishes a trade against the market.

  1. market ratios will be enforced by the UI so this function will simply process the trade by subtracting and adding resources to the source.


    • NOTE:

I’m not sure how the logic functions will be organized yet, for the time being we’re going to build each logic section as a class. IE: Marketplace.js will contain all of the logic/processing.

data/marketplace/shared.js will contain all of the init data.