I like the PDF tutorial. It's pretty straight-forward.
I have some minor suggestions for it:
"Charsets" can be thought of as sprite-sheets
"Chipsets" can be thought of as pictures containing many "tiles". I guess you could think of them as "tile-sets" or "tile-sheets"
The "Help" folder contains HTML files that are displayed within the editor by pressing F1
"Swf" is basically a miscellaneous folder that can contain anything you want. I mostly use it for pictures and various add-on effects.
In the map editor, layers 0 and 1 always display under the characters and layers 2 and above always overlap the characters.
The "Image Overlay" feature only temporarily displays an image so that you can trace it using tiles to imitate another map. For example, if you want to re-create the forest from Chrono Trigger, you can load up a picture of the map from the SNES game, and then try to recreate it by tracing over the picture using tiles. It's just reference material. The picture that you select in the dropdown will never appear in your game.
More info about the screen panel:
You can zoom-in and out by clicking on it and then using the mouse-wheel.
You can pan by middle-clicking on the mouse and then dragging. Many mice also allow you to click the wheel like a button.
For the appearance flags:
end=undefined
!end
end!=trueYou only have to write one of these, and they all mean approximately the same things.
But there are some subtleties:
end=undefinedThis check if a variable named "end" has the exact value of undefined. If it's false or 0, then that isn't considered the same thing.
!endIf I remember right, this is identical to end!=true. It's just a shorter way of writing it. So for example if end=false... end=0... end=foobar... anything other than the exact value of "true" then it'll count and this sprite will appear.
Adding a second = or ! at the end of a like will be ignored.
So
end=undefined!=true is likely to be treated as
end=undefined(I assume that was intended to be an example of something you would write in the box)Also...
You can write multiple conditions in the box as long as each one is on a different line.
When you do that, then the sprite will only appear when all of the conditions are fulfilled.
One last thing. When you set a variable at the end of a script (or even in the middle of it) sprites will only appear or disappear if you clicked the button
"Update Sprite Flags" within the variable's command. If this button set to "No update" then the variable will be set, but the sprites will not check their appearance flags. But their appearance will update if you leave the map and re-enter.
So you can talk to a character, have them set a variable, be able to talk to them again as much as you want. But when you leave the map and return they can be missing.
The "SWF" command allows you to place external image files or swf flash animations into the game. These swf files can also contain code instead of animations, so I often use to import add-on features into a game such as menu systems or other effects. The box at the bottom of the command allow you to define settings for the file you're placing. Some of the effects can read the information in this box and use it. I store the SWF files themselves within the "swf" folder. And there's a text file named "parameters.txt" that lists all of the information that can be sent to each one. This command is kind of advanced. Maybe I'll write a detailed help document about it sometime.
For "variable" commands, it's helpful to think of them as telling the game to remember something.
You can also tell it to change something that it has already remembered.
Appearance flags are based on things it has remembered.
The command also has advanced features. It can access and modify variables stored anywhere within the game's code, if you happen to know where they are and what they're called. You don't have to worry about accidentally hacking the game though. By default all of your variables get stored inside of an object named RAM. So writing
RAM.myVar is identical to just writing
myVar. But you can do things like
SPRITE.player._alpha = 50 to temporarily make the player half translucent like a ghost... until they go to another map. Or
SPRITE.player._yscale = 200 to make the player twice as tall.
Another advanced feature is the ability to call low-level code. So you can write
[Math.random()] in the value box to generate a random decimal number between Zero and 1. The [] tell it to look up the value of whatever is between them. If it's the name of a variable, then it'll use whatever is stored in that variable. If you also put () at the end of the variable name, it will instead treat it as a function call instead of a variable. Another use for this is manually calling scripts.
[SPRITES.girl.talk()] will trigger the "talk" script of a character named "girl" on the map
(if such a character exists) This can be useful for telling doors to open during cutscenes.
As for your last question. The editor took about 6 months to create.