There's actually no need to make missions persistent; they just need to be consistent. This will "fix" relogging to receive additional missions.
Like this...
Create a random seed based on location name and game time (rounded to the nearest half-hour or other duration). Use that seed to populate the mission board, after removing any missions the player has already accepted. You could have an ID per mission (just the current random seed value) or compare the mission text to determine which ones have been accepted. This also means that mission servers will not need to be synched; they will all generation the same mission lists.
To create more continuity, the mission board could be populated using the last 3 duration seeds. That is, you'd see the newest missions, those which are ~31-60 minutes old, and those which are ~61-90 minutes old.
To prevent massacre mission stacking, simply apply a kill to the first mission which has not yet been completed. A simpler solution would be to never provide more than 1 massacre mission at a time (and checking to see if it's already been accepted), but that would probably cause much unhappiness.
Like this...
Create a random seed based on location name and game time (rounded to the nearest half-hour or other duration). Use that seed to populate the mission board, after removing any missions the player has already accepted. You could have an ID per mission (just the current random seed value) or compare the mission text to determine which ones have been accepted. This also means that mission servers will not need to be synched; they will all generation the same mission lists.
To create more continuity, the mission board could be populated using the last 3 duration seeds. That is, you'd see the newest missions, those which are ~31-60 minutes old, and those which are ~61-90 minutes old.
To prevent massacre mission stacking, simply apply a kill to the first mission which has not yet been completed. A simpler solution would be to never provide more than 1 massacre mission at a time (and checking to see if it's already been accepted), but that would probably cause much unhappiness.
Last edited: