As of late 2021, we are in the process of updating Stencylpedia and fixing up outdated & broken content. Thanks for your patience!

70,970

Views

Beginner

Level

18

Comments

Saving Games

by Jon (Updated on 2015-10-18)


Contents

  • Overview
  • How To: Saving and Loading
  • Where is Data Saved?
  • Challenge: Checkpoints

Overview - Saving uses Game Attributes

Saving progress is a fundamental part of most games. Our saving system uses a game’s Game Attributes to save data. All you have to do is structure your game such that anything you want to save is stored in Game Attributes.

Saving

Similarly, loading a save file will overwrite the running game's Game Attributes and replace them with the values of those in the save file. For this reason, it's best to load a save file as early as possible.

How To: Saving and Loading

Usage

Saving and Loading involve these two blocks. (found under Game > Saving)

Saving Blocks

What happens when the save/load block is used?

  1. The game attempts to save / load. This is quick (nearly instant), but the game will not progress until the save / load operation is complete or has failed.

  2. When the save is complete (or has failed), the body (inside) of the block will run.

  3. save succeeded / load succeeded will be true if saving/loading succeeded. Otherwise it will be false.

We talk more about how to handle failure next.

Handling Failures

Sometimes, a player will be unable to save due to restrictive security settings or other reasons.

If saving/loading fails, you can detect this and use the save succeeded and load succeeded blocks to react appropriately, such as showing an error message.

Handling a failed save

To use them, just drag them out as pictured and use them as you see fit.

Warning: Don't use the save/load succeeded blocks outside the scope of the save/load wrapper, or you'll run into a compile-time error.

When should loading happen?

There's no hard rule for this, but for most games, doing it early on in the game's first scene makes sense. Remember again that loading will overwrite the game's game attributes.

Common Question: Playing the game for the first time.

Suppose that the player is playing your game for the first time. How do you know this? You could create a game attribute called "first time" that is initially set to true. When you save the game, it's set to false, so that when the game is loaded up again, that flag will now always be false.

Where is Save Data saved?

It depends on the platform.

Flash

Flash games use Local Shared Objects. That is to say, it's stored by the browser indefinitely until cleared out.

iOS / Android / Desktop

Mobile games store save data directly on the device's file system but within the confines of the app's sandbox. This means that the data is "safe" and cannot be tampered with by any other apps.

This save data is not deleted until the game itself is deleted (and settings/data are explicitly told to be removed).

Note: At this time, it isn't possible to specify custom save locations or write out arbitrary data at runtime.

Summary

  • Saving is based on Game Attributes.
  • Loading will overwrite all Game Attribtues.
  • Saving/Loading is an instant operation.

Challenge: Checkpoints

Many games use a checkpoint system, a system in which reaching a certain part of the level will guarantee that, if a player dies, the player can continue from that checkpoint, rather than starting from the beginning.

Create a simple checkpoint system for your game, such that even if the player exits out of the game, he’ll automatically begin from the last checkpoint he reached.

Print Article Edit Article How to Edit an Article
Disclaimer: Use comments to provide feedback and point out issues with the article (typo, wrong info, etc.). If you're seeking help for your game, please ask a question on the forums. Thanks!

18 Comments

bomyne
The article doesn't give an explanation as to how to set up a proper checkpoint system.
1 10 years, 2 months ago
mikhog
I sometimes get a warning saying "WARNINGS: There was a problem binding to the shared object data from FlxSave."
Then I get several warnings that bind() must have been called before calling write().

The article should probably cover some troubleshooting...

1 10 years, 9 months ago
sanskaar
nice...hve to improve...2 nxt Level..!!!!!
0 10 years, 9 months ago
xandramas
my confusion is not the saving of the attributes its the loading and initial setting of the players stats before the first save. How do you tell the player he has a game attribute value of 5 when the player starts the game and it not change the value during the save? Put that initial game attribute value before the player loads the game, like on the start screen?
1 11 years, 9 months ago
Auni38
Nice, this works!
1 11 years, 9 months ago
DrunkenOrc
There's no specific place you have to put these code blocks. You can make the game save at any time you want; when something happens, when a button is clicked, and so on.

If you don't understand how to implement code blocks, you should read earlier sections of this wiki. Once you understand the basics of Stencyl, this section will make more sense.

3 12 years, 2 months ago
Hunnenkoenig
As always, there is exactly zero help in this.
You just again tell me, that my car has 4 wheels and 4 seats, but you don't tell me, how I can drive it...

-3 12 years, 2 months ago
72master
this only shows me what block i need to use i dont know where to put it how to use it in design mode so this is pretty much a tease
0 12 years, 3 months ago

Sign In to Comment