I first learned speedball layouts by walking real paintball fields. Years later I worked with them in VR: as a player, a server operator, and a game developer. The same arrangement of bunkers became a saved file, an operational concern, and eventually a format I could convert and test.
Before the layout was a file
Speedball is the tournament format of paintball: a small symmetric field of inflatable bunkers, rearranged per event. The layout is not scenery. Which bunker is reachable on the break, which lanes cross, where a snap shot is safe—the layout decides most of what a team can do, which is why competitive teams learn one by walking it: you pace the real field before an event, finding the lanes and bounce shots no diagram shows.
In the early 2000s I lived in Kasson, Minnesota, and played on a team there in high school. That was the layout’s form for us: an arrangement of inflatables on a field, and whatever we remembered afterward. My first website was for that team; the layouts we practiced were still something we learned on the field.
The return: operations first
In 2022 the sport reappeared as VR speedball—league play conducted on real event layouts, including NXL World Cup 2021, and a dedicated-server network I founded, Snap Game Services, running public lobbies for the game the league played.
At snap.gs, the matches became data—the supervisor parsed every match out of the game’s own log stream and kept it as timestamped JSON—but the layout itself still lived inside a closed game binary. The closest it came to the surface was the sales pitch. The private-lobby page sold layout knowledge as the product:
Grind new layouts long before you or most others play them first hand
Know the layout with confidence and breakout roles instinctually.
Twenty years on, the field-walking had moved into a headset. The layout still had no file the server network controlled or exposed, but the instrumented matches are what unlocked everything in my mind.
The physical side was still improvised. The controller mounts used curved PVC pipe and elbows, with black sleeves and hose clamps holding the controllers in place. I designed them to sit in my hands roughly the way I hold a paintball marker. It mattered to me that anything I learned in VR would transfer to a real field. I even disabled snap turning, so that to turn I had to physically rotate.
A file a player could carry
I did not know about Grit until after that season of league play. Grit Paintball had brought a field builder and saved layouts to VR in 2020, when Deadbolt Custom Works released the trainer.
The current store describes those saved layouts as small text files players can exchange outside the game. Players were already exchanging event layouts when I became a co-owner through my small business, Infima Labs.
The layout becomes a public format
layoutc is where the layout becomes public, inspectable, source-controlled data rather than a file exchanged through a closed product. One source commit added a collection of NXL event layouts from 2018 through 2022. The World Cup 2021 file stores each bunker as a flat JSON record like this one:
{
"bunkerID": 8,
"xPosition": -15.107666,
"yPosition": -8.583069E-06,
"zPosition": 11.1680164,
"xRotation": 0.0,
"yRotation": 90.0,
"zRotation": 0.0
}The file preserves the source coordinate system directly: decimal positions, a y-position sitting a rounding error below zero, and rotation in degrees. The format is small enough to inspect and diff. layoutc treats it as an interchange problem rather than an editor format: the Python library and CLI convert between JSON, PNG splatmap atlases, and TSV with explicit units, entity groups, orientation, and round-trip semantics.
# Convert a single layout to PNG atlas for efficient storage
layoutc src/layouts/NXL-World-Cup-2021.json world_cup_2021.png
# Convert PNG atlas back to JSON for editing
layoutc world_cup_2021.png world_cup_2021_copy.json
# Output all layouts as TSV to stdout (pipe-friendly)
layoutc src/layouts/*.json -
The PNG form is the part worth pausing on. Each occupied pixel is one bunker: the pixel’s position gives its coarse location, the red and green channels carry the sub-pixel remainder, blue is rotation, alpha is identity—transparency is literally empty field. A regulation 150-by-120-foot field at 381 millimeters per pixel becomes a 120-by-96 image that restores every bunker to within about a millimeter and a half. The image looks like the field it encodes, and it is the file format. The channel scheme has its own note, layoutc’s PNG codec.
I chose that pitch because it filled the possibility space so well. 381 millimeters is exactly 15 inches, so a layout round-trips and converts cleanly between US customary and metric units, and it lines up with every regulation number I know in paintball, field sizes and layout grids included; the codec’s 320-foot maximum extent is 256 pixels. Each layout layer holds one entity per pixel. The color channels preserve a bunker’s position within its pixel, but they cannot preserve a second entity in the same cell. Skinny targets placed closer together may therefore need a finer pitch or a different layer; the bunker encoding itself round-trips within its intended tolerance.


