Skip to content

Latest commit

 

History

History
347 lines (289 loc) · 7.07 KB

MapStandard v0.4.md

File metadata and controls

347 lines (289 loc) · 7.07 KB

InterPlanetGame: Map Standard [v 0.4 - Proposed]

Abstract

New format for the REBOOTED game!

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

  • startValue renamed to start_value (property names now have snake case)
  • Changes needed to support the REBOOTED version
  • Numbers represented as strings have been changed into actual numbers

File Type

The maps are stored as a JSON file.

Required Elements

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

Element Details

Name:

Type Values
String Any

Standard:

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

Example:

"standard": 0.4,

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,
        "start_value": 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
int radius of planet

x & y

Type Values
int cords

specifiy distance from upper left hand corner of the map.

Start Value

Type Values
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
double 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 overlapping planets
  2. The planets must always fit inside the map boundaries
  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

Definition of a balanced map: Without any actions, there should be at no time a disparity in the quantity of troops. (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 multipliers very sparingly
  • Putting a big planet in the middle isn't a good start

Build maps that are designed to create new and interesting 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,
            "start_value": 20,
            "radius": 75,
            "possession": [
                2,
                3,
                4,
                4,
                4
            ]
        },
        {
            "y": 760,
            "x": 650,
            "start_value": 20,
            "radius": 75,
            "possession": [
                1,
                3,
                3,
                3,
                3
            ]
        },
        {
            "y": 760,
            "x": 350,
            "start_value": 20,
            "radius": 75,
            "possession": [
                1,
                1,
                0,
                5,
                5
            ]
        },
        {
            "y": 240,
            "x": 650,
            "start_value": 20,
            "radius": 75,
            "possession": [
                2,
                2,
                0,
                0,
                6
            ]
        },
        {
            "y": 240,
            "x": 350,
            "start_value": 20,
            "radius": 75,
            "possession": [
                2,
                2,
                2,
                2,
                2
            ]
        },
        {
            "y": 500,
            "x": 200,
            "start_value": 20,
            "radius": 75,
            "possession": [
                1,
                1,
                1,
                1,
                1
            ]
        },
        {
            "y": 500,
            "x": 500,
            "start_value": 50,
            "radius": 100,
            "possession": [
                0,
                0,
                0,
                0,
                0
            ],
            "multiplier": 2
        }
    ]
}