The new fight is a bank job. Three of you against four of them out front of a bank, with actual buildings on the street instead of the open ground every other fight has been on. Buildings arent cover. Cover is a water trough you crouch behind and it stops a bullet. A building you cant see past at all, so people just go missing for a turn or two.
Its the first fight in the game where you can lose track of somebody. I measured it afterwards and in about 55% of planning turns theres somebody on the board the other side cant see. Take the buildings away and that drops to zero, so the fog is real and it does change how the fight goes.
I built the buildings. The rules knew about them. Line of sight was worked out against them, fighters ducked behind them, the balance harness played hundreds of fights through them and came back with numbers that clearly showed they were doing something. Every test I have was green. Server, client, the balance gates.
Then I opened the game and the street was empty. Flat dirt, two gangs shooting at each other around obstacles that werent drawn on the screen at all.
The rules were sending the client the cover, and the width and height of the grid, and never the buildings. The message format didnt even have a field for them, and its strict, so if I had sent them they’d have been thrown out. The drawing code had nothing to draw them with either becuase nobody had ever asked it to.
So the whole thing was green while it was broken end to end. The fighters were being blinded by walls that only existed on the server. The tests were all fine. I just didnt have one that started in the rules and finished on the screen.
What I’ve taken from it is that a new bit of terrain touches six places. The rules data, the fight setup, the message format, the code that sends it, the list of names the client gets, and the code that draws it. I had five of them. Theres a test at the far end now that fails if the drawing is missing.
Two days earlier I did the same thing with the name of the scenario, wich the game refused to open because I’d added it everywhere except the list of allowed names in the protocol. Same mistake twice in one week. I’m told this is what people mean by contract first.
Anyway. The bank job is in, its the first fight with uneven sides, and the smaller side wins about 16% of the time. Thats lopsided and I wanted it lopsided, becuase not every fight should be fair.