Use milestones for achievements
tl;dr Use milestones for the significant achievements of the party. Scale the size of the required achievement with party level.
Why I prefer milestones
Personally I hate XP levelling in story-focused games. It feels at odds with the otherwise narrative driven plot. For example:
I killed enough goblins so now I can cast fireball
is much less meaningful to me than
I saved a town from a goblin horde, in the process I learned about myself and discovered new abilities.
Mechanically it's the same reward for the same actions but thematically it is very different. Additionally milestones mean that if you accidentally killed 1 too few goblins you still get the cool narrative moment of levelling up instead of the let down of being just short at the end of the adventure.
How I award milestones
In my campaign the PCs have to earn their milestones. They have too do something worthy of advancement, a task or quest that seemed beyond them before. Some examples from my current campaign:
- Level 1: Escaped Prison
- Level 2: Retrieved a cure to save a small town.
- Level 3: Defeated the local villain who had previously imprisoned them
- Level 4: Successfully reached a dangerous distant location
- Level 5: Completed a major quest to prevent weapons of war falling in to the wrong hands
- Level 6 (planned): Save a town being raided by Orcs during a war
- Level 7 (planned): Stop the war
At each level the size and difficulty of the achievement required increases. By doing this my players feel rewarded for accomplishing major goals. It also encourages them to take on bigger and more dangerous adventures. By requiring each achievement to be bigger than the last the players can't spend months going around completing sides quests in order to out-level the main campaign. Savings a small town was a level 2 quest, it is no longer a big enough achievement to gain advancement.
Running in a sandbox
Similar to you I run in a sandbox world were the players and free to go where they like and do what they wish. This can make it difficult to determine which missions they will take on and which should be rewarded with milestones. I handle this with my rule from above, each achievement must be bigger than the last.
If my players choose to abandon the current quest-line my planned milestones above would become irrelevant. Instead I would replace them with new ones of similar status. These alternate achievements can either be entirely new ones or ones you have initially planned for a later level and scaled down accordingly. For example:
- Level 6 (alternate): End the siege on the wizards' assembly
- Level 7 (alternate): Rescue the king's daughter
The idea is that any time the player's feel they have taken a step forward as adventure; completed a grand quest, overcome an treacherous foe or obtained a dangerous mcguffin they should be rewarded for it.
How many and how often to give out milestones
I'm going to take a bit of a different tack here to the other answers. Most DM's use milestones to approximate the XP level system just without the tricky math. Blue Caboose's answer is good if that is the kind of system you want. It isn't how or why I use milestones however.
To decide how many and how often to give out milestones you need a rough idea of your main story arc, or at least an end goal for where the party might end up. This will likely shift and change based on the decisions they make but a rough idea is good enough. You want to know roughly what level you want your campaign to end, and how much story you want to tell along the way.
Break up your story into smaller arcs and determine which points will be milestone achievements. Overcoming major minions of a BBEG is a common one for me. (See level 3 above). My campaign is going to level 20 and I have a lot of story to tell so they are levelling fairly slowly (~10 sessions per level), two years in and they are still at level 5.
One (arguable) downside of this system is that it effectively 'punishes' failure and tactical retreats. When the bad-guy gets away or they fail to achieve their goals their is no participation trophy for their efforts. They get nothing but the loot they take with them, no XP buffs to make it easier next time. In fact my enemies often get more difficult if the players faced them once and failed to defeat them.
Does this sometimes leave the players without a level for an extended period? Yes, my party were at level 3 for ~20 sessions, they were frustrated by their lack of progress but so were their characters. To me the increased immersion of sharing that frustration with their character was worth the trade off of cool new abilities.
My players agree. They feel it would have cheapened the experience were I to just give them the level because they had gone so long without one. They didn't feel like their characters deserved rewards after failing/running from several missions. It made the level mean so much more when they finally achieved it.