I'm currently just making a concept for a MMORPG-like (much less massive) game, in which the player can do all the usual stuff (farming, talk to NPCs, accept quests, kill monsters etc.). An important aspect is, that as an MMORPG you can see the other players walking around in the world, and taking care of their business. Although most of the smaller quests aren't much of an issue, I also want to have a few bigger quests which would contain more story, simple cutscenes and might even have an impact on the world. And this is where it gets problematic, because I don't want to spoil a quest to a player who hasen't begun with it yet, but at the same time the first player should generally see other players who have.
An example would be that if you let an important NPC die in a certain quest, it will not appear again for you. Or in a cave the way is blocked, until you complete some other quest which removes the stones which where in your way. Maybe it's even just that an NPC will lead you the way to some place, but it should not become inaccessible to other players. That is fine and perfectly doable for a singleplayer-game, but it gets difficult for a multiplayer game.
I can let other NPCs react differently when you let the NPC from the first example die, but I don't really know how to make the game behave when you stand where the dead NPC should be, but he's not there for you. I've thought about cheking the quest state before the client receives the information that the NPC is there, but that would get really messy very soon. Not showing an NPC is one thing, but having multiple instances of it where one leads the way for player A and one sells items to player B will grow more and more into a readability nightmare for developers.
And it gets even worse when the map changes; did you just see that other player pass through the wall of stones I see here? Someone of the devs really screwed up the player experience and immersion in the story there...
Something else I thought of are (singleplayer-)"instances" which some games use for such areas. But that also won't work for every case (eg. when the changes are permanent), and when you suddenly enter an instance where you wouldn't expect one to be because you haven't progressed far enough in the storyline would confuse me as a player.
Are there any solutions to this? Or will I have to go with NPCs which never leave their position, and a never-changing world?