Some days ago I showed you how to select level with StencylWorks, but selecting levels is useless if your game does not keep track of player progresses unlocking new levels as previous levels have been completed.
And, even more important, you should be able to manage saved games so players won’t be forced to complete the game in a single session.
Obviously, with StencylWorks everything is easier.
First, we start with the creation of another animation for the door actor, which now will have two animations (two static images in this case, but it’s the same for the scope of this post).
One for the open, clickable door which will bring us to an unlocked level, and one for the closed, not clickable door, which represents the locked levels.
Then we have to create two game attributes. Game attributes are global variables which are accessible to every behavior. I am calling them “Highest Level Completed” and “Current Level” and I will use them to store respectively the number of the highest level completed and the current level being played. Both attributes have a starting value of zero.
Using game attributes for this purpose is very important, as StencylWorks allows you to save and load all game attributes.
Now we need to create a behavior to load game attributes, which should be executed as soon as possible, so you’d better bind it to the splash screen. It’s very easy as StencylWorks has a “load save file” block.
Now, the hardest task: show open gates for playable levels and make them clickable, and closed gates for unplayable levels. Modify the “Click to play level” behavior I showed you in create awesome Flash games in no time with StencylWorks – Selecting levels this way:
Let’s see what changed:
In the “always” block you can see the behavior has a new attribute called “level number” and it can be clicked only if the value of “Highest Level Completed” game attribute is greater or equal than “level number” attribute.
If it’s true, then we set “Current Level” game attribute to “level number” value and we make the player to to the level.
The “when drawing” block will also check for “Highest Level Completed” game attribute to be greater or equal to “level number” attribute, and will show the “Open” door animation, along with the level number, if true. Otherwise, the “Closed” door animation will be shown.
At this time, we have to customize the behavior of each door, just like you made in the previous step, this time setting also “level number” attribute to zero for level one, then one for level two, and so on.
Finally, once the player completes a level, in this case when the player hits the door, we have to set “Highest Level Completed” game variable to the larger number between “Highest Level Completed” game variable itself and “Current Level” game variable.
Then, you can save the game. This way, “Highest Level Completed” variable will be locally saved, and made available once you launch the game again.
This is what you should see once you beat level two:
I am making a complete game without writing a single line of code.