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.
- 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
The maps are stored as a JSON file.
No spaces in the file name
- Name
- Standard
- Size
- Planets Array, and at least one element in it
Type | Values |
---|---|
String | Any |
Type | Values |
---|---|
String | Version of the standard in use without the 'v' |
Example:
"standard": "0.3",
Type | Values |
---|---|
Object | X and Y dimensions |
Example
"size": {
"x": "0",
"y": "0"
},
Type | Values |
---|---|
Array | Planet Objects |
Example |
"planets": [
],
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
Type | Values |
---|---|
string(int) | radius of planet |
Type | Values |
---|---|
string(int) | cords |
specifiy distance from upper left hand corner of the map.
Type | Values |
---|---|
string(int) | Starting Value |
value with witch the planet starts
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"
]
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
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 |
Maps that don't follow these are considered invalid, even if the still "work"
- There may be no overlaping planets
- The planets must alwasy fit inside the map boundries
- Only use from the list of accepted start values
- Only use from the list of accepted planet sizes
- 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)
* 5 * 10 * 15 * 20 * 25 * 30 * 35 * 45 * 50Use these sparingly:
- 60
- 70
- 75
- 80
- 90
- 100
- 125
- Larger sizes make the value of capturing planets go down.
- 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.
Top to bottom, left to right.{
"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"
}
]
}