ID:265093
 
In Spelloria, I have what I feel is a pretty unique saving system in place, and since there's often discussion of how to save locations, I thought I'd share that portion of my scheme with the community at large.

Each player character has a text variable called "home." Throughout the world are several instances of area/start. When a player logs in, the world is searched for an instance of this area type whose name is equal to src.home, and the player is moved there, or failing that, dumped in the general starting area.

When a character is newly created, the default value for home is a tutorial area where the basics of gameplay are taught. Passing through the one-way door out of this area changes home to the area immediately outside the school. From there, characters can strike out and make their own fortunes.

In each town and along major roadways are inns... for a small charge (higher in some places), a character can reserve a room... which does nothing more than set that inn as their home. This is permanent until the player does something to change it, such as reserving a room at another inn, or enters another area that automatically "re-homes" characters. For instance, when a character embarks upon a new continent or (hypothetically) explores a new dimension. More sinisterly, an "inescapable" labyrinth might home characters who blunder inside, so you can't escape merely by logging off.

The advantages of this system include the fact that I have not had to override Read() or Write(), append any additional information to the savefiles, or otherwise manually manipulate any data... and that I allow players and creator a chance to share some of the decision of exactly where they enter the game each time. Players can to some extent "save" the progress they've made on a physical journey or exploration, but they cannot abuse this to log out when they're cornered and log back in a few minutes later, at the same location, to see if the danger has passed.

There are other ways to "save locations" within the game, as well. An item called a Memory Orb can be used to warp to any Memory Stone (a type of monument scattered throughout the world) that you've visited. Memory Stones can be found in or near most major locations... as can home points. Once you have a Memory Orb, you can, from your starting point, reach any general location you've visited, and means allowing, set that as your new starting point.

The thing I'd most like to stress, though, is that I've settled on these two things as a location-saving solution because they fit my game. Since exploration is a big theme in Spelloria, it is important that locations be saveable, but since bravery is also an important theme, it must be done in such a way that it cannot be readily abused. Where's the achievement in being the first to explore the Mountains of the Making when you can hide offline any time danger comes near? If you bolt and run out of the game, the game treats it exactly as if you had bolted and ran, all the way home.
Lesbian Assassin wrote:
Each player character has a text variable called "home."

Using text for this is a good approach...saves all sorts of hassles, and lets you alter your mechanisms easily without invalidating already saved players.
Sounds wonderful! The other day, I was actually thinking of something quite similar for my new baby project, which is as of yet unnamed. The system could be considered fairly abusable, though... is there a penalty for logging out when you are not in a "safe zone" or have not viseted a memory stone or whatever? This is one of the things I really disliked about Zelda -- there was near to no drawback to dying and near to no drawback for just logging out.
In response to Lord of Water
As a matter of fact, before I coded in memory stones and homing, I had put in a logout penalty: if you log out anywhere except a "safe zone" (specifically, an area/no_combat, which is used for shops and towns, or area/start), then it's assumed that you fled for your life and you leave behind all of the equipment and money you're carrying. I might, after general playtesting, make this harsher (you lose all your Magic Points and all but 1 Life Point), or more lenient (you get to keep equipped items.)
In response to Lesbian Assassin
I've toyed with similar things, but settled on saving everything if you are in a special 'safe zone'. In safe zones there's no possibility of you being attacked, so it's normally near/in towns. Outside of these areas, though, there's a number of possible things. 1/100 chance of you being killed. (Note: In my game, death is a Very Bad Thing. It's very close to permadeath.) 1/10 chance of being attacked, being forced to flee, and then losing everything, along with some life. 1/5 chance of losing some life..

Also, your mob persists for one minute in a special 'statue' state. You can be damaged, attacked, whatevered as normal, so logging out and risking above said things to avoid death.. is somewhat unhealthy.

--Tarmas.
In response to Tarmas
"Sudden" logout (logout without using the quit verb) will put you into a similar state, so that someone who's connection drops will have some time to try to reconnect and salvage their equipment. I may even have a setting that can be changed, if you know your connection's unreliable, so you can increase the time before your character "flees." I don't think this will have much potential for abuse... you don't gain much by having your character stand their defenseless while you're offline.
In response to Lesbian Assassin
Lesbian Assassin wrote:
"Sudden" logout (logout without using the quit verb) will put you into a similar state, so that someone who's connection drops will have some time to try to reconnect and salvage their equipment. I may even have a setting that can be changed, if you know your connection's unreliable, so you can increase the time before your character "flees." I don't think this will have much potential for abuse... you don't gain much by having your character stand their defenseless while you're offline.

I've forgotten adding a quit verb because I simply close DS when I've done testing it.. probably should put one in to avoid the statue state. A flag for bad connections could probably be a good thing as well. Instead of saving/loading the person again just reconnect them to their mob.. I think I'll add it. :D Excellent idea.

As for the statue state, I added it to avoid abuse of immediate disappearing. Bad connection stuff I'll put some thought into..

--Tarmas.