Ballistic Zen Collectable Map

Table of Contents

World Map and Introduction

World map

Ballistic Zen has 3 types of collectables:

In this guide, under the section of each region, there is a table that contains IDs of collectables as they are saved in the save file (Saved column). This is how you can track your progress:

  1. Find the save directory:

    • Windows:
      Open Run dialogue with Win+R and paste:

      "%APPDATA%\..\LocalLow\footnotesforthefuture\Ballistic Zen"

    • Linux:

      1. Go to the Steam library directory where the game is installed
      2. Navigate to:

        steamapps/compatdata/1966930/pfx/drive_c/users/steamuser/AppData/LocalLow/footnotesforthefuture/Ballistic Zen

  2. Edit the save file saveData.dat

  3. Scroll down to the "collected" section, which should look like this:
    "collected": [
        {
            "Key": 478786,
            "Value": true
        },
        {
            "Key": 441597,
            "Value": true
        },
        {
            ...
        },
    ]
    
    Each "Key" with "Value" equal to true is an unlocked collectable.

Considering there is no convenient way to know what collectables have not been obtained, one way to determine that is by copying each ID in the Saved column of each table; if searching for it in the save file yields nothing, note it down, and repeat until you reach the final ID.

Residential District

Residential District map

ID Saved Screenshot
1 524844
2 505529
3 478786
4 441597
5 395364
6 329416
7 293303
8 310016
9 284063
10 242727
11
12
178147
166255
13 100936
14 100468
15 151944
16 177793
17 210942
18 258722
19 290669
20 367984
21 399684
22 435675
23
24
25
424454
425284
426084
26 345923
27 324516
28 277265
29 227517

30

Saved: 255058

Get a running start on the ramp

Continue along and launch yourself up the following ramp

Jump on the last ramp, but jump off as late as possible!

Wallrun along the wall to the left, but get on its side at the peak of your jump

If you manage to jump across to this wall, make sure to...

...immediately wallrun around to stay as high as possible, and keep your momentum!

If you manage to get here, climb to the taller part of the structure

There's your collectable.

31

Saved: 411644

Get up to the first level of the building

Wallrun up to the second level

Go along the ledge and jump

Wallrun along the wall...

...and wallrun around to the hole!

Shiny.

Financial District

Financial District map

ID Saved Screenshot
32 94711
33 55722
34 102901
35 108836
36 114918
37 145290
38 193908
39 271251
40 309909
41 234318
42 237542
43 272096
44 185739
45 156094
46 216482

47

Saved: 197226

Get a running start on the first ramp

Jump on the second ramp and leave as late as possible

Wallrun on the straight bit of the wall...

...go around the corner...

...do a 180 (by jumping off the wallrun)!

Go around the corner again

Do another 180

If you're high enough, jump off and climb up; if not, repeat the 180s

Almost there...

Sweet, sweet respect.

48

Saved: 239760

Get a running start and jump off the small building, or the short wall just behind

Wallrun along the border wall

Wallrun along the passage

Jump off the wallrun to gain height as the passage winds to the side

Jump up onto the passage

It's yours!

Entertainment District

Entertainment District map

ID Saved Screenshot
49 324270
50 334485
51 358234
52 375151
53 434420
54 448965
55 489700
56 334619
57 325124
58 323304
59
60
342099
325098

Shrouded District

Shrouded District map

61

Saved: 449865

62

Saved: 400973

Get a running start, start the run like the line A Leap Into Mist

Jump off of the next ramp

Slide your way to the building that is normally wallran to progress the line

Wallrun to it...

...and immediately jump towards and wallrun the first one!

Keep doing this until...

...you reach the top of the first building.

Mission passed! Respect +

Pyramid

Pyramid map

ID Saved Screenshot
63 520282
64 490649
65 518749
66 508608
67 499023
68 479986
69 518546
70 488329
71 568595
72 467295
73 563746
74 558955
75 530053
76 462269
77 524426
78 523825
79 493972
80 593217
81 437089
82 555565
83 593996
84 493865
85 468980
86 451263
87 531846
88 480853
89 413885

Raw Data and Other Sorcery

CSV data

GameObject fileID;Transform fileID;order number;save file ID;x;y;z;quality;region
2654;5904;1;524844;126.600006;-1.500001;-509.3464;common;residential
1420;4650;2;505529;148.13;4.0000663;-483.34;rare;residential
2649;5912;3;478786;138.4;0.5000024;-458.3464;common;residential
2664;5897;4;441597;112.600006;6.5;-427;common;residential
1417;4651;5;395364;91.399994;7.500002;-384.6536;basic;residential
2666;5895;6;329416;85.399994;34.499973;-318.1536;common;residential
2653;5909;7;293303;117.534;7.5;-268.724;common;residential
2665;5896;8;310016;222.79001;21;-215.58;common;residential
1418;4653;9;284063;246.4;15.5;-141.3464;basic;residential
1416;4654;10;242727;229.85263;1.5000019;-78;rare;residential
2651;5910;11;178147;115.69;1.4999981;-135.47;common;residential
2667;5892;12;166255;100.54001;1.4999981;-132.41;common;residential
1419;4652;13;100936;53.399994;34.5;-85.653595;rare;residential
2663;5898;14;100468;-3.0899963;22.5;-100.41998;common;residential
2655;5905;15;151944;32.759995;7.5;-148.37;common;residential
1415;4655;16;177793;12.600006;26.499996;-177.3464;basic;residential
2650;5911;17;210942;79.600006;21.5;-195.3464;common;residential
2661;5902;18;258722;151.6;1.5;-209.6536;common;residential
2668;5894;19;290669;58.665955;11.500002;-284.68686;common;residential
2658;5901;20;367984;-5;27.499979;-367.95;common;residential
2662;5899;21;399684;1.8800049;11.499998;-399.68;common;residential
2659;5900;22;435675;-51;5.1200027;-432.68;common;residential
2648;5913;23;424454;-90.38;25.5;-414.72;common;residential
1414;4656;24;425284;-91.4;25.5;-415.3464;basic;residential
2657;5906;25;426084;-92.33;25.5;-415.96;common;residential
2669;5893;26;345923;-136.158;5;-318;common;residential
2660;5903;27;324516;-114.46;23.25;-303.66;common;residential
2652;5908;28;277265;-91.41;44.500008;-261.763;common;residential
2656;5907;29;227517;-60.009995;31.5;-219.46;common;residential
3021;6047;30;255058;76.399994;72.5;-243.3464;hidden;residential
3020;6048;31;411644;138.54001;16.5;-387.63;hidden;residential
2139;4517;32;94711;92;29;-22.5;common;financial
2143;4513;33;55722;51.351906;37.5;-21.632118;common;financial
2142;4512;34;102901;-9.921419;14.500002;102.42127;common;financial
1048;3818;35;108836;17;41.499996;107.5;rare;financial
2144;4511;36;114918;82.5;8.5;80;common;financial
2140;4516;37;145290;140.5;0.50000226;37;common;financial
2137;4518;38;193908;188;7.5;47.5;common;financial
2141;4514;39;271251;263.72058;10;63.468864;common;financial
1050;3816;40;309909;290.3027;24.49998;108.48041;rare;financial
2138;4515;41;234318;204.03976;21.5;115.20721;common;financial
2145;4510;42;237542;143.51028;10;189.29062;common;financial
1051;3815;43;272096;148.5;13.500001;228;rare;financial
2136;4519;44;185739;-15.846729;18.499992;185.06137;common;financial
2135;4520;45;156094;-105;2.5000463;115.5;common;financial
1049;3817;46;216482;-178.6022;2.5000005;122.33481;rare;financial
2265;4818;47;197226;-43.6;38.500015;192.3464;hidden;financial
2266;4817;48;239760;238;33.50003;29;hidden;financial
917;2432;49;324270;125.5;7.500001;299;common;construction
430;1869;50;334485;125;42;310.25;rare;construction
922;2426;51;358234;121.5;-2.4999933;337;common;construction
923;2427;52;375151;139.5;9.499654;348.25;common;construction
919;2428;53;434420;138.5;9.499654;411.75;common;construction
921;2429;54;448965;97.5;22.999653;438.25;common;construction
914;2434;55;489700;74.5;1.5;484;common;construction
918;2431;56;334619;71;-2.499998;327;common;construction
913;2436;57;325124;66.5;38.5;318.25;common;construction
915;2435;58;323304;-80;42.499977;313.25;common;construction
920;2430;59;342099;-74;0.5;334;common;construction
916;2433;60;325098;-71;0.49999952;317.25;common;construction
198;609;61;449865;-437.5;-88.49991;104.75;rare;fogged
402;777;62;400973;-375.66;-73.5;140.21;hidden;fogged
749;2242;63;520282;512.2594;0.5;91.01469;common;pyramid
763;2229;64;490649;477.5252;0.5;112.72304;common;pyramid
750;2241;65;518749;516.75;4.500001;45.5;common;pyramid
755;2235;66;508608;497.75067;5;104.5304;common;pyramid
759;2230;67;499023;490.6839;5;90.849396;common;pyramid
751;2237;68;479986;451.31146;5.5;163.41661;common;pyramid
762;2228;69;518546;502.5;8.500001;128;common;pyramid
744;2248;70;488329;485.25;11.499999;54.75;common;pyramid
758;2232;71;568595;554;14;128;common;pyramid
742;2246;72;467295;456.25;15.500002;101;common;pyramid
752;2236;73;563746;542.3802;17.5;153.73094;common;pyramid
747;2245;74;558955;555.25;19;64.25;common;pyramid
753;2238;75;530053;506.5;20.5;156.25;common;pyramid
746;2244;76;462269;455.25;21.5;80.25;common;pyramid
276;1518;77;524426;519.25;24.5;73.5;rare;pyramid
275;1519;78;523825;503.5;33.5;144.5;rare;pyramid
278;1516;79;493972;462.5;36.5;173.5;rare;pyramid
748;2240;80;593217;578;46;133.5;common;pyramid
756;2234;81;437089;434.89148;51.5;43.772255;common;pyramid
760;2233;82;555565;555.2926;53.5;17.393719;common;pyramid
754;2239;83;593996;586.75;54.500004;92.5;common;pyramid
745;2243;84;493865;457.5;65.5;186;common;pyramid
277;1517;85;468980;467.25;68.5;40.25;rare;pyramid
757;2231;86;451263;425.25;74.50001;151;common;pyramid
743;2247;87;531846;496.75;75.5;190;common;pyramid
761;2227;88;480853;465.35016;107.5;121.11548;common;pyramid
414;1466;89;413885;398.4;107;112.15359;rare;base

Save file IDs

Collectable IDs in the save file are generated using this function within the game:

Mathf.RoundToInt(transform.position.Horizontal().magnitude * 1000);

In math:

Round(1000 *(Root(X^2 + Z^2)))

In awk (error: 411644 is not rounded properly due to double precision rounding of 411643.49):

{printf ("%.0f", 1000 *(sqrt($5^2 + $7^2)))}

Region names

Note: All regions start with main-; the collectable in base region is at the end of the game on Pyramid

Final name Internal name
Residential District residential
Financial District financial
Entertainment District construction
Shrouded District fogged
Pyramid pyramid
Border Walls base

The map

Generating SVG

This was accomplished using awk. Note that the final map file had number positions manually adjusted to avoid overlapping text; achieved with Inkscape.

Contents of convert.awk:

# https://stackoverflow.com/a/41032138
BEGIN {print "<svg viewBox=\"0 0 8192 4608\" xmlns=\"http://www.w3.org/2000/svg\">\n" "<style>circle{r:3; stroke-width:1; fill-opacity:0;} text{font-family:monospace; font-weight:bold; stroke-width:0.5; stroke:white;} .common{stroke:lightblue;} .rare{stroke:blue;} .basic{stroke:darkblue;} .hidden{stroke:yellow;}</style>\n" "<image href=\"Map Layout.png\" width=\"8192\" height=\"4608\"/>\n" "<g transform=\"translate(3747 2281) scale(4.265,4.265)\">"}
  {print "<circle cx=\""$5"\" cy=\""(-$7)"\" id=\""$3"\" r=\"3\" class=\""$8"\"/>" }
  {print "<text x=\""($5 + 5)"\" y=\""(-$7 + 5)"\">"$3"</text>" }
END {print "</g></svg>"}

Run command:

awk -F";" -f convert.awk coords.csv > out.svg

The developer?!

Yes, Alex himself greatly helped in the making of the guide (thank you!). He transcended forth his Bri'ish powers by: