• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • ✅ HD Level Design Contest #1 POLL is now OPEN! Check out the stunning visuals of the final entries. 🔗Click here to cast your vote!

[General] My First Interactive Tutorial

Not open for further replies.
Level 31
Jul 10, 2007
The completed guide will ensure that anyone who does all of the lessons and passes all of the practice problems will be a complete master of how to do save/load.

So, I rewrote lessons 30-50 and am continuing to add new lessons as I have not yet gotten all of the information from the old edition into this new one. There is some new information as well and a lot of the more advanced stuff is much more clear ^)^. Also, exercise 50 is pretty hard ; ).

Do any of the lessons need work? Have I done well so far? Tx.

I'd also be interested in any ideas you guys might have to improve lessons ; P.

If anything seemed hard to understand in the slightest or complex at all, please let me know ;o. I'm aiming for something that's super easy to understand =).

I'm working on this for my saving and loading tutorial ; P. Each lesson is really tiny (very little text) ^)^. I've been told that the lessons are actually pretty interesting and fun to mess with =).

Tx all ^^

To get into the tutorial, just run the map.


  • Interactive Saving and Loading Tutorial - Pub.w3m
    165.8 KB · Views: 45
Last edited:
Level 7
Dec 3, 2006
Weird; how'd it end up being a .w3m rather than a .w3x . I'll take a look at this and try to give yah some feedback : D.

Not bad; I knew at least a good amount of this before hand just looking over the scripts before-hand but its good since it's got a smaller learning curve with this. Lesson 10 kinda didn't show up for some reason in-game.

I think that this is a good explanation on how the save codes function; but it doesn't exactly give the knowledge required to use some of the scripts. That could best be done through in-trigger editor comment triggers or something of that sort (which i've seen you have been working on before).
Level 31
Jul 10, 2007
hm.. lesson 10 showed up for me... odd o-o

I'll double check.

Also, the knowledge on using those scripts isn't important until later lessons ; P. Why teach a person how to use and create an obsolete algorithm? I'm just trying to build from the ground up ^)^.

saving a value
saving a unit type id
saving unit type ids with delimiters
saving catalog ids with delimiters
saving catalog ids in base 10 with maximum values using placeholders
introduction to bases
calculating the number of digits required to represent a number (useful, but not important)
saving catalog ids in base 62 with maximum values using placeholders
saving catalog ids in base 62 using 1 digit for each value in base max catalog id (this is where the algorithm is important to know)

Smart Saving
saving a hero with 0-6 items on it (0-6 empty item slots)
saving a hero with 0-6 items on it with a conditional 0 delimiter (partial inventory)
saving item charges (all items get a charge, even if they don't have one)
saving an item charge only if that item can have a charge
saving any number of units
partially saving up to a number of units (just like inventory, this is to show a pattern)

Data Storage
Usefulness of percents (a study of percent xp, percent facing, percent life, percent coordinates)

Mixing up the base so that a user doesn't know what a digit's value is

A look at why checksums are important (a player can load up any code w/o them)
Talk about knuth checksum
Putting a checksum into a code and displaying how it works (using knuth)

Show how a very small code can possibly be loaded up due to a small checksum
Talk about how codes typically have a certain range to them
Talk about what a CRC is and how it assigns a definite range

Cover scrambling

Player Unique Codes
Storing the player's hash into the code (naive approach)
Player unique checksums
Player unique CRCs
Player unique encryption
Player unique bases

Code versioning
Storing the version into the code (naive approach)
Adding the version to the checksum
Show how versions added to the checksum will eventually allow for any code to be loadable (no checksum)
Show how the bounds checking of a CRC can stop the above from happening (still a little unsafe)
Show how making the CRC value the same value as the version (storing the version at the CRC) makes versioning 100% safe while adding minimal information to the code
Level 20
Jul 6, 2009
Very interesting idea, Nesth ;D
It worked properly, all lessons appeared and it was simple to understand.

Just 1 thing. When you're, for example, saving a unit during a lesson, the previous text should stay and not get replaced by unit IDs and whatnot. The IDs could appear on right part of screen or something. To make it not change lesson text, you could save lines and concatenate them with results of IDs with results being moved to the right with spaces.
Level 8
Dec 9, 2009
This might be a huge pain in the ass, but you could put the text in a multiboard, and let us scroll up/down.

(Yes, link is working now)
Level 31
Jul 10, 2007
I have completely rewritten lessons 30-50. There is new information and everything got shifted around.

I currently don't have the rewrites for saving partial sets, advanced catalogs, or any of the security stuff. I'm in the process of still rewriting them : P.

It's been taking a long time, but hopefully the more advanced stuff is more clear ; ). I know a lot of people just stopped doing it after lesson 29. That was my fault as the quality of the lessons drastically decreased from 30+ as I was getting tired of writing the lessons ; O.

Also, practice problem 50 is very difficult ; o. It tells you to save 4 values in the correct order without giving you the order =). You have to use logic to figure it out. Also, because the problem is so large, it doesn't display the solution when you fail it : |.
Not open for further replies.