What I used to do with mildot scopes (all second focal plane, SFP) was first to pick a zero distance and a magnification, and then shoot at targets from 5 to 50 yd and simply record the hold to the nearest 1/2 or 1/3 dot that produced shots on target. Then I would stick a piece of blue painter's tape to the side of the stock and write in the hold values for every 5 yd with an extra fine sharpie. I would also note the pellet and velocity that the gun and values were matched to, so I always knew which pellet to use with each gun.
Now I use ballistics software, first Chairgun, now Strelok Pro. It was a challenge trying to match reticles and magnification factors for SFP scopes to make the ballistics data line up with empirical field results. Once done, you can handwrite a range table per above, or take a screenshot of the ballistics table and/or reticle view generated by the software, print it out small, laminate it and attatch it somewhere to either your scope bell or stock.
With my two newest guns, I bought and have come to love First Focal Plane (FFP) scopes that have
both reticles and turret clicks calibrated in M.O.A. (Minute Of Angle) units. Now, I configure my ballistics table to show holds in MOA that correspond directly to the MOA tic marks on my scope's reticle
regardless of zoom magnification level. Attached are photos of my table and reticle view, generated by Strelok Pro. The faint gey numbers in the reticle view are the MOA values for the tic marks that you actually see when looking through the scope. I annotated the reticle view using photo editor software app on Android tablet (Photo Editor app by Dev.macguyver). The scope is a Vortex Diamondback 6-25x50 FFP with EBR-2C MOA reticle and 1/4 MOA turrets.
I will also attach a photo of my ' packing tape laminated' range card, taped to the heel of my .25 Edgun R5M.