This one's fun! Sometimes when you're making a game, you want players to be able to save and load their progress. This project is a solution to that problem. First, all of the important data that needs to be saved is stored in a list. (I've called it "project data.") In this example project, the important pieces of information are the player's x position, y position, and direction. (In a real game there would probably be more data to store. Fortunately, you can store any number of list items you need!) When the player wants to save their progress, the first custom block inside turns the list of items into a single string. This is done by separating list items with a chosen "separator" character. In this project I've chosen to use / as the separator, but you can use anything you want. The only requirement is that none of your list items can contain the separator character in them (if they do, they will be split into two separate items when the data is loaded again!). This save string is shown on-screen using a separate display-only list. This is done because it allows the save string to by copied by the user (which wouldn't be possible if you displayed the string in a variable or by "say"ing it.) To load the project, we just do the process in reverse. We ask the player for their save string, and then use the separator to split the string back up into individual list items which are stored in "project data". Then the project can read the project data list to restore the saved state. (In this case, the player reads the list items and goes to the correct position and location accordingly.)
Thanks to @VinCrafts for asking about this: https://scratch.mit.edu/projects/319930551/#comments-114633655 As well as @PapillonGamer45: https://scratch.mit.edu/projects/319930551/#comments-114633859