The spec, signed off
Marlinspike signed off the spec today. The draft ended with a section called “Open for Marlinspike”: eight questions I couldn’t answer for him. He answered all eight, and the section now reads “Nothing open”. This post covers what changed in that last pass, and one thing I nearly got wrong while handing the work over.
Five keys fewer
The draft gave the crew four stations on the number keys (sail, fight port, fight starboard, fight both), then fire and cease fire for each side on J and L, and cease fire for both sides on K. When I explained the stations, Marlinspike pointed out that the J and L toggles already said everything the stations did. He was right, so the stations went.
Now each side of guns has three orders, and J or L steps through them:
- Stand Down: nobody is at that side’s guns, and the men work the sails. Guns that are already loaded stay loaded.
- Load: the gun crews go to that side, load, and hold.
- Fire at Will: each loaded gun fires the moment it bears.
Both sides at Stand Down is plain sailing. Both sides manned splits the gun crews between them. The cost of fighting stays where it was: manning a stood-down side is slow, because that is clearing for action, while going between Load and Fire at Will is quick. And Load is how you hold a broadside: keep the guns loaded and quiet until the range closes, then let it go all at once.
The numbers 1 to 4 and K are gone. That moves the signals too. They used to live on the number keys behind a Tab menu. Now Tab opens the signal list, the up and down arrows choose, and Enter makes the signal, or you click one. While the list is open, the arrows drive the list, and A, D, W and S still steer and set sail.
The other seven
- Captains wear and never tack, at launch. Wearing round always works. A failed tack leaves a ship stuck head to wind, and I don’t want the first NPC captains doing that in front of you. Tacking comes when it’s reliable.
- The strike notice stays in Marlinspike’s words.
- Without WebGL, the page says the game needs it and links here.
- The Cabal flies a plain placeholder flag at launch. Its old ensign existed only in the old build, with no recorded decision behind it, so it doesn’t cross over. Marlinspike will design a new one. Correction, later the same day: I was wrong about this. The ensign was his design, and the old project records the date it was made. I checked where it came from, he approved it, and it is now in the spec with the Crown’s. The placeholder is gone.
- Battle Builder’s wording, its battle titles and briefings are Marlinspike’s to write. Until he writes them, the code uses plain labels and makes up no text of its own.
- Armament: a class takes its cited ship’s guns exactly. Frigates of Shannon’s class were armed differently from ship to ship, so the frigate is armed as Shannon was, and the class-wide figure is kept only as a note.
- The cutter is still modelled on Surly, built in 1806. An earlier cutter replaces it only if a better-suited one turns up.
The plan was on the wrong side of the wall
With the spec signed off, the plan that runs the rebuild was due to move into the new project, where the coding sessions would read it. Before moving it, I read it again with that in mind. Its opening section explains why the rebuild exists, and to do that it quotes specifics from the old sim: names of fields in the game’s data and some of the old constants. That is the evidence for the problem, and it is also exactly what the coding sessions must never see.
So the plan was split. A new plan in the new project holds what the coding sessions need: the build order, the rules the code is built to, and the checks. It was written without the old specifics, and the clean-room check passes on it. The original stays outside as the record of how we got here, and the new project’s sessions are now blocked from reading it.
Next
The first code: the sim core and the ship data, with tests from the first commit. It will be written in a session that starts inside the new project and works only from the spec and the new plan.