User Tools

Site Tools


web_apis

Web APIs

Map Browser

Creeper World 1 and 2 do not have an easily readable map browser API and can only be accessed here:

Creeper World 3, 4 and Particle Fleet map browser API can be fetched from these URLs:

The data is gzipped, in XML format. Each map record contains the following information:

Shared values

  • g - string - Map GUID.
  • i - int - Map ID.
  • a - string - Map author name.
  • l - string - Map title.
  • w - int - Map width.
  • h - int - Map height.
  • t - int - Map upload UNIX timestamp, divided by 1000.
  • p - int - Forum thread ID (can be used to build URL).
  • u - int - Thumbnail image size (length).

CW4 values

  • b - int - Current map thumbs count.
  • s - string - Current map tags, delimited by commas.
  • o - int - Map objectives. Base 10 representation of available objectives in binary format. See Parsing the CW4 objectives value for more details.
  • v - int - Version number. Determines from which game version the map was uploaded. Presumably this is only incremented if an update with significant 4RPL additions is made, so older versions of the game cannot attempt to play them. Version 1.0 of the game did not have this system and will be able to play any map though.
  • z - string - Discord forum thread ID for the specified map, on the Knuckle Cracker Discord server.

CW3 and PF values

  • e - string - Map description.
  • s - int - Total current amount of scores posted.
  • r - float - Current map rating.
  • n - int - Total current amount of map ratings posted.
  • o - int - Total current amount of map downloads.

Score Query

Creeper World 1 does not have an easily readable score query API and scores can only be accessed through here:

Creeper World 2, 3, 4 and Particle Fleet score query API can be accessed through following examples:

Below is a list of available parameters to the score query APIs:

  • userfilter - Filter by user name. Leave empty for no user filter. In Particle Fleet, filtering by user name still shows all scores, but highlights
  • groupfilter - Filter by group name. Leave empty for no group filter.
  • timefilter
    • CW3: 0, 1 or 2. 0 - All Time. 1 - 3 days. 2 - 1 week.
    • PF: 0 or 1. 0 - All. 1 - Month.
  • sort - “score” or “time”. Applicable to games that have a score. Sort by either best score or best time.

The following arguments are exclusive, i.e. only use one of these at a time, as applicable:

  • customID - Custom map ID. Needed to query non-DMD custom maps.
  • gameUID - GUID of the map. Needed to query non-custom maps.
  • dmdID - CW3 only. DMD map ID. Needed to query DMD maps.

CW4 Chronom GUID

To query scores for Chronom maps, you must know what to supply to the gameUID parameter.

The value must look like follows: CHRONOM MAR 21, 2021, and then be encoded to base64.

Example JavaScript code for building a gameUID value for querying Chronom maps:

let months = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];
let date = new Date();
let str = `CHRONOM ${months[date.getMonth()]} ${date.getDate()}, ${date.getFullYear()}`;
let gameUID = Buffer.from(str).toString('base64');

CW2 Code map GUID

To query scores for Code maps, you must know what to supply to the gameUID parameter.

The final string is based on the map's seed name, size and complexity.

Example JavaScript code for building a gameUID value for querying Code maps:

let name = 'think then after';
let size = 1; //0, 1, 2
let complexity = 2; //0, 1, 2
 
let hash = crypto.createHash('md5').update(name.toLowerCase().trim()).digest("hex");
let hnum = parseInt(hash.substring(0,8), 16);
let gameUID = "procedural" + hnum + "-" + size + complexity;

Campaign Mission GUIDs

To run score queries on campaign maps, you must know what to supply to the gameUID parameter. Below are long lists of campaign map GUIDs that can be supplied.

CW4: Farsite Expedition

09 Leo, 266             c3Rvcnkw
Farsite                 c3Rvcnkx
Home                    c3Rvcnky
Not My Mars             c3Rvcnkz
Ruins Repurposed        c3Rvcnk0
We Know Nothing         c3Rvcnk1
We Were Never Alone     c3Rvcnk2
Hints                   c3Rvcnk3
Serious                 c3Rvcnk4
More and More           c3Rvcnk5
War and Peace           c3RvcnkxMA%3d%3d
Shattered               c3RvcnkxMQ%3d%3d
Archon                  c3RvcnkxMg%3d%3d
The Experiment          c3RvcnkxMw%3d%3d
Somewhere in Spacetime  c3RvcnkxNA%3d%3d
Tower of Darkness       c3RvcnkxNQ%3d%3d
The Compound            c3RvcnkxNg%3d%3d
Sequence                c3RvcnkxNw%3d%3d
Wallis                  c3RvcnkxOA%3d%3d
Founders                c3RvcnkxOQ%3d%3d
Ever After              c3RvcnkyMA%3d%3d

CW4: Span Experiments

Special                          a251Y3JhY2tlcjEy
The Dark Side                    a251Y3JhY2tlcjE3
Turtle                           a251Y3JhY2tlcjU%3d
Cheap Construction               a251Y3JhY2tlcjg%3d
Four Pieces                      a251Y3JhY2tlcjI%3d
Highway to helheim               a251Y3JhY2tlcjEz
Holdem 2                         a251Y3JhY2tlcmJvbnVzMQ%3d%3d
Neuron                           a251Y3JhY2tlcjM%3d
Valley of the Shadow of Death    a251Y3JhY2tlcjY%3d
Sector L                         a251Y3JhY2tlcjk%3d
Far York Farm                    a251Y3JhY2tlcjE4
Invasion                         a251Y3JhY2tlcjIw
Forgotten Fortress               a251Y3JhY2tlcjE%3d
Mark V Sample                    ZGVtb2JvbnVz
Gort                             a251Y3JhY2tlcjEw
Creeperpeace                     a251Y3JhY2tlcjE0
Creeper++                        a251Y3JhY2tlcjQ%3d
Before Time                      ZGVtb2JvbnVzMg%3d%3d
Islands                          a251Y3JhY2tlcjE1
Razor                            a251Y3JhY2tlcmJvbnVzMA%3d%3d
Day of Infamy                    ZGVtb2JvbnVzMw%3d%3d
Parasite                         a251Y3JhY2tlcjc%3d
Creepers Pieces                  a251Y3JhY2tlcjEx
Enchanted Forest                 a251Y3JhY2tlcjE2
Chanson                          a251Y3JhY2tlcjE5
Shaka                            ZGVtb2JvbnVzNA%3d%3d

PF: Story

Naivety            1Story
Indelible          2Story
Unwise             3Story
Insanity           4Story
Evidence           5Story
Stretch            6Story
Brute              7Story
Potential          8Story
Emergent           9Story
Ties               10Story
Secrets            11Story
Doppelgangers      12Story
Intent             13Story
The 145th          14Story
Origin             15Story

PF: Inception

The Melt                   1Inception
Fountains of Betelgeuse    2Inception
Daisy Chain                3Inception
Industrial Complex         4Inception
Square Land                5Inception
CEO\'s Landing             6Inception
Archipelago                7Inception
The Nest                   8Inception
Warp Never Changes         9Inception

CW3: Arc Eternal

Inceptus : Tempus          Tempus
Inceptus : Carcere         Carcere
Abitus : Telos             Telos
Abitus : Far York          Far+York
Abitus : Starsync          Starsync
Navox : Jojo               Jojo
Navox : Ormos              Ormos
Navox : Seedet             Seedet
Navox : Flick              Flick
Navox : Tiplex             Tiplex
Egos : Lemal               Lemal
Egos : Ruine               Ruine
Egos : Defi                Defi
Egos : Choix               Choix
Egos : Chanson             Chanson
Frykt : Mistet             Mistet
Frykt : Crosslaw           Crosslaw
Frykt : Vapen              Vapen
Apex : Meso                Meso
Cliff : Krig               Krig
Andere : Otrav             Otrav
Andere : Farbor            Farbor
Cricket : Arca             Arca

CW3: Credits

Adventure : Fortress of Ultimate Darkness         credits

CW2: Story

Day 1: Novus Orsa          s0
Day 2: Far York            s1
Day 3: Taurus              s2
Day 4: UC-1004             s3
Day 5: The Maxia Choice    s4
Day 6: Chaos               s5
Day 7: Lost                s6
Day 8: Sliver              s7
Day 9: Intelligence        s8
Day 10: The Experiment     s9
Day 11: The Cooker         s10
Day 12: Answer             s11
Day 13: Horror             s12
Day 14: Phoenix            s13
Day 15: Exterminate!       s14
Day 16: Purpose            s15
Day 17: Trickery           s16
Day 18: The Tide           s17
Day 19: Colony Prime       s18
Day 20: All Things         s19

CW2: Bonus

Positronic         b0
The Tree           b1
Minion Surprise    b2
Shields Up!        b3
Stygian Depths     b4
Odyssey            b5
Barbarian Hordes   b6
Assault            b7
Cubic              b8
Abyss              b9

CW2: Academy

Legacy            z0
Basic Training    z1
Mind and Muscle   z2
Spelunking        z3
Engineering       z4
The Zoo           z5
Pressure          z6
Dimensions        z7
Accident          z8
Darkness Looms    z9

CW2: Credits

Credits         credits

Misc Info

Parsing the CW4 objectives value

The objectives value from CW4 map data is a binary number saved in base 10 format, therefore to find which objectives exist on a map, we must look at each individual bit. There are 6 bits in total, as there are only 6 objectives.

Example JavaScript code for parsing the objectives value:

let o = 7;
 
let Custom =  (o >> 5 & 1) != 0; //false
let Collect = (o >> 4 & 1) != 0; //false
let Hold =    (o >> 3 & 1) != 0; //false
let Reclaim = (o >> 2 & 1) != 0; //true
let Totems =  (o >> 1 & 1) != 0; //true
let Nullify = (o >> 0 & 1) != 0; //true
 
//Conclusion: Map has Nullify, Totems and Reclaim objectives
web_apis.txt · Last modified: 2022/12/14 11:43 by Karsten75