Every day the game rebuilds the dungeon from the designer's plan. Each room keeps its number of doors: the boss room always has one, the town square has many. Only which rooms the corridors join changes. "Fair" means every possible wiring is equally likely, so regulars can't learn the plan. The quick shuffle most games use keeps too many of the designer's own corridors. Dealing doors out at random and redealing whenever two corridors clash is perfectly fair and very fast for ordinary rooms, but with several big hubs almost every deal clashes. The new method trades doors between pairs of rooms for a number of rounds proven to be enough. Hubs don't slow it down; more rooms do, steeply.
performance.now() around batches of generator work only (map drawing and statistics are outside the timer), divided by the layouts finished. Each method gets the same time slice per frame.?scene=normal, ?scene=big): the configuration model is exactly fair and hundreds to tens of thousands of times faster than the certified Curveball. Use it.?scene=square, a 16-door square in 30 rooms): the configuration model still wins, even though it throws away more than 99.9% of its deals.?scene=hubs, raise the square slider to 18-20): almost every deal clashes and the configuration model falls behind; Curveball's cost does not change.?scene=normal (20 rooms, 1-6 doors), ?scene=square (30 rooms, one 16-door square), ?scene=hubs (square + two 10-door guild halls; &square=18 for more), ?scene=big (80 rooms). Also ?frames=N, ?prewarm=MS, ?day=N, ?connected=1.