The way my mind works I break the timing adjustments down to 2 things: The "protect the engine" thing and the "optimize performance" thing... On takeoff with a rich mixture, I am in "protect" mode, sensitive to load on the engine and seeking detonation margin at the expense of the absolute last bit of power I can squeeze out of the engine. In this case I'm willing to back off timing quite a bit based on "load" (MP). Dyno testing shows that my engine does not really care too much about timing when full rich and fat air and a big reduction in timing does not hurt power much. So I run significantly reduced timing to satisfy the "protect the engine" part. At low(er) loads, like idle or LOP cruise, I know I can push right on the "optimum" timing with no danger of damage to the engine. So this is where I will spend some time in flight and collect the "best" performance values at my typical cruise conditions. One might look at the MP at every 500 feet from 7500 to 10.5 and plot the timing curve that results in peak TAS at each altitude block. This is the "optimize performance thing".
Once you have a bunch of data locked down in the "optimized" regions (like idle and cruise), then add in the "protect" values for TO, there's a reasonable complete ignition map right there. After that it's pretty simple to either smooth the curve to fill in the remaining blanks or go out and collect more test points.
One note on my methodology - I only optimized my curve at my typical RPM (2300) and altitude (8500) because that's where I spend 99% of my flight time (and I'm a little lazy too). Because my RPM does not vary in cruise, I disregard that as tuning opportunity. That said, if I had a need to sometimes run 2300 to 2700 in cruise, the MP tuning would likely be enhanced with an RPM advance component. For example, considering WOT and 8500 MSL, the engine may respond to different advance values at 2300 and 2700 RPM. The MP won't change that much with changing RPM, so the RPM signal becomes a dominant tuning aid. So for the purposes of defining a very detailed ignition map, one could run a series of flight test looking for the timing that delivers peak TAS from (for instance) 7,500 feet to 13,500 with data every 500 feet, RPM from 2300 to 2700 with data every 100 RPM, and repeat ROP and LOP. That would make a rich spreadsheet!