Skip to content

Latest commit

 

History

History
346 lines (291 loc) · 6.99 KB

MapStandard v0.3.md

File metadata and controls

346 lines (291 loc) · 6.99 KB

InterPlanetGame: Map Standard [v 0.3 - Proposed]

Abstract

This document explains the technical specifications for a InterPlanetGame map. It contains specifications, rules and guidlines as well as an example map. Even if you use a tool, read this, since the tool may be hard to use without this knowladge.

Changes From Last Standard

  • Removed need for colors completly
  • This standard is being set up to work with the final version - won't work with prototype
  • Added possession property
  • Added multiplier
  • Changed the guidlines and rules: What should be done, and what has to be done

File Type

The maps are stored as a JSON file.

No spaces in the file name

Required Elements

  • Name
  • Standard
  • Size
  • Planets Array, and at least one element in it

Element Details

Name:

Type Values
String Any

Standard:

Type Values
String Version of the standard in use without the 'v'

Example:

"standard": "0.3",

Size:

Type Values
Object X and Y dimensions

Example

"size": {
  "x": "0",
  "y": "0"
},

Planets (Array)

Type Values
Array Planet Objects
Example
"planets": [
],

Planet (Object)

Type Values
Object X and Y cords, Color, Radius, Start Value
Example
{
        "radius": "75",
        "x": "200",
        "y": "200",
        "startValue": "50",
        "possession": [
          "0",
          "0",
          "0"
        ],
    "multiplier": "2"
},

JSON Syntax Notes

The elemsnts must by in that order in the planet object, the numbers have to be strings (surrounded by double quotes). The cordinates are distance from the upper right hand corner.

elements

Radius

Type Values
string(int) radius of planet

x & y

Type Values
string(int) cords

specifiy distance from upper left hand corner of the map.

Start Value

Type Values
string(int) Starting Value

value with witch the planet starts

Possession

Type Values
array Player number that owns planet with that many players

Example

This planet (see example code) is owned by player 1 in a 2 player game. It starts the values at 2 players and counts up. Player 0 is a neutral planet.

Players Owner
1 Player 1 of 2 players
3 Player 3 of 3 players
4 Player 4 of 4 players
"possession": [
        "1",
        "3",
        "4"
]

Multiplier

Type Values
string(float) Multipler

Optional Porperty - Not required

Only up to one decimal place. The growth rate of the planet is multiplied by this number

Color Palette:

Name Hex Player
Green #8ed16c 1
Blue #3fa6f3 2
Red #e25f5f 3
Magenta #ef6ab8 4
Orange #eb8932 5
Purple #af6cd1 6
Teal #66e3cd 7
Deep Blue #4f47c0 8
Yellow #efdf27 9
Neutral Grey #bbbbbb 0

Palette Aplication

The first player is always green, the secound is Blue, so on and so forth.

Palette Rule(s)

In a map, use the colors in order. There should never be Magenta in a 3 player map for example. Neutral grey planets don't increaese in value until they are taken over. They are "neutral" and aren't owned by a player in the start of the game.

Rules:

Maps that don't follow these are considered invalid, even if the still "work"

  1. There may be no overlaping planets
  2. The planets must alwasy fit inside the map boundries
  3. Only use from the list of accepted start values
  4. Only use from the list of accepted planet sizes
  5. Only use from the list of accepted multipliers

Deffinition of a balenced map: Without any actions, there should be at no time a disparity in the quantity of troos. (In short, the total growth rate [Combined radii] needs to be equal, as well as the number of starting troops)

Accepted Start Value

* 5 * 10 * 15 * 20 * 25 * 30 * 35 * 45 * 50

Use these sparingly:

  • 60
  • 70
  • 75
  • 80
  • 90
  • 100
  • 125
  • Larger sizes make the value of capturing planets go down.

Accepted Planet Sizes

* 10 * 15 * 20 * 40 * 50 * 75 * 100 * 125 * 150 * 175 * 200 * No Bigger Planets, It's a waste of space (Pun intended).

Guide Lines:

  • Use mutlipiers very spareingly
  • Putting a big planet in the middle isn't a good start

Build maps that are desgined to create new and insteresting ways of playing, trying to create a picture isn't good for gameplay. Gameplay comes first, and more people will play your map if it is fun.

See Creating a great map

Planet Order In Map.json File

Top to bottom, left to right.

Example Map

{
    "size": {
        "x": "1000",
        "y": "1000"
    },
    "name": "Example Map",
    "planets": [
        {
            "x": "800",
            "y": "500",
            "startValue": "20",
            "radius": "75",
            "possession": [
                "2",
                "3",
                "4",
                "4",
                "4"
            ]
        },
        {
            "y": "760",
            "x": "650",
            "startValue": "20",
            "radius": "75",
            "possession": [
                "1",
                "3",
                "3",
                "3",
                "3"
            ]
        },
        {
            "y": "760",
            "x": "350",
            "startValue": "20",
            "radius": "75",
            "possession": [
                "1",
                "1",
                "0",
                "5",
                "5"
            ]
        },
        {
            "y": "240",
            "x": "650",
            "startValue": "20",
            "radius": "75",
            "possession": [
                "2",
                "2",
                "0",
                "0",
                "6"
            ]
        },
        {
            "y": "240",
            "x": "350",
            "startValue": "20",
            "radius": "75",
            "possession": [
                "2",
                "2",
                "2",
                "2",
                "2"
            ]
        },
        {
            "y": "500",
            "x": "200",
            "startValue": "20",
            "radius": "75",
            "possession": [
                "1",
                "1",
                "1",
                "1",
                "1"
            ]
        },
        {
            "y": "500",
            "x": "500",
            "startValue": "50",
            "radius": "100",
            "possession": [
                "0",
                "0",
                "0",
                "0",
                "0"
            ],
            "multiplier": "2"
        }
    ]
}