VVVVVV Level Editor Tutorial - Part 1: The basics

Started by Terry, July 26, 2011, 04:53:17 PM

Previous topic - Next topic


Part 2 of the tutorial is now available here! A scripting tutorial is still in the works, but in the meantime, check out increpare's post below, or PJBottomz's Scripting Tutorial level.

This is a very short, simple tutorial to get you started making levels in the new VVVVVV level editor. I'll try to keep it as brief as I can. Later tutorials will cover entities and room settings in more detail, and how to use scripting!

Ok, first up, you can find the editor from the main menu. Select "PLAYER LEVELS"...


Alright! When you've done that, you should see a screen like the one above. You can place tiles with the mouse, like so:

...but for shaping out a level properly, you'll need a bigger brush:

If you hold down the Z key, you'll draw with a 3x3 brush instead of a single tile brush. (Hold down the X key to use a 5x5 one.) You can also delete tiles by using RIGHT CLICK. (or Ctrl+Click on Mac)

Alright. Now, sketch out a quick room like the one above, with an exit to the right. By default, you start in a 5x5 world (you can see the room coordinates in the lower right corner). To move to a different room, just use the arrow keys!

From room (1,1), trying pressing right to go to room (2,1). You'll notice a white bar on the left hand side of the screen here - this indicates that there's a wall on this edge, useful for making sure you don't get any collision errors when you put the level together.

Ok, draw another room in here, like the one above (so that it has an exit to the left into the other room). We've got a basic level layout now, so let's put something in it!

If you press the space key, a little menu will pop up. This allows you to select the tool! Currently we're using the Walls tool, so let's move over to the checkpoint. You can change tools by pressing the < and > keys, or by pressing the shortcut key for that tool. (The numbers 1,2,3,4,5,6,7,8,9,0 are shortcuts for various tools, as are the top row letters R,T,Y,U,I,O,P).

Ok! Once you've placed a checkpoint (hide the space menu if you can't see the floor tiles), move back to the first room.

Here, we're going to place a Crewmate! That tool is on the second page of the space menu (or use the shortcut key "O").

This is a good time to mention that you can change the colour of the crewmate you placed by clicking them again! You can do this multiple click action with many entities, which will cycle through it's different variations.

Ok! Go back to room (2,1) and press ENTER. This will spawn you at the nearby checkpoint! You can just press ENTER again to return to the editor, or:

You can go rescue the crewmate! Yey :viridian:

Ok! Well, we've got a basic level working now, so to distribute it, we probably want to change it's settings. Press ESCAPE to go to the map settings menu. From here, select "CHANGE DESCRIPTION".

Enter whatever information you want here. This will help people identify your level in the play menu.

Ok, with that done, go back to the editor. To save your map, press SHIFT + S, and give it a filename. The extension is added automatically. (I'll talk more about the SHIFT menu options in the next tutorial.)

And that's it! We've made a basic level! From here, try experimenting with the different tools and see how you get on. The next tutorial will cover entities and room settings. The one after that will cover scripting.

Enjoy! To distribute your level for other people to play, go find the .VVVVVV file in your Documents folder. (On windows, that should be in My Documents/VVVVVV, on Mac it's Documents/VVVVVV, on Linux ~/.VVVVVV). You can play other people's levels by copying files into this directory.

Thanks for reading! Hope you have fun making levels! :viridian:



Useful tips

shift+arrow keys resizes the world size

for the impatient, here's some scripting advice pasted from terry's twitter account:

I'll write a proper tutorial later, but here's a super quick guide to scripting in VVVVVV: Place a teminal or scriptbox and type a name...
That name is how you refer to the script. In the editor, you can modify what's in it. Here are a few simple commands:
This is how you make a terminal talk - the number that "say" takes as an argument is the number of lines - pastebin.com/1t393wK9
The "reply" command makes Viridian talk: pastebin.com/8CFehPDP
You can change expression with the "happy" and "sad" commands
music(songnum) will play a given song (same as the numbers in the menu), delay(frames) will wait for how many ever frames
Now, logic! "flag(1,on)", say, will turn flag number 1 on. "flag(6,off)" turns flag six off. There are 100 flags, or something like that.
"ifflag(5,scriptx)" will jump to the script named "scriptx" if flag 5 is set.
You can also do iftrinkets(t,script) to check that you've collected at least t trinkets! Or you can use iftrinketsless(t,script).
destroy(gravitylines) will get rid of all the gravitylines on a screen, while destroy(warptokens) gets rid of all the warp tokens.
You could totally use that to make gates that are unlocked with trinket keys, incidentally. If you were so inclined.
That's about it. Hoping to expand scripting in later patches, but there's enough there now to do some interesting stuff :)


Honestly I think the editor is self explanitory. Only issue I'm currently having is remembering to save before eziting out of the editor. Please add something which prompts you to save when you chose to exit!  ;)


Just a quick question, how do you delete scripts? I've deleted the box associated with them, but they won't disappear from the list.

EDIT: Aha, it's backspace, but I'll leave that here in case anyone else asks.


Is there a way to check if a flag is off? It would help me make a script only activate once.


I've found a weird glitch, whenever I write a music-changing script, it seems to shut off all the game's sound until I reset it.


Quote from: Ice on July 28, 2011, 03:37:57 AM
I've found a weird glitch, whenever I write a music-changing script, it seems to shut off all the game's sound until I reset it.
pressing m *anywhere* right now mutes the game.  try pressing m again.


Ah okay, that makes sense. But why was a mute feature even implemented? The music is way too good  :viridian:


It's incredibly easy to use. Even scripting makes quite a bit of sense!


Quote from: Ice on July 28, 2011, 01:29:54 AM
Is there a way to check if a flag is off? It would help me make a script only activate once.

Here's how I'm doing scripts that only activate once.

At the start of the game, trigger a script which sets flag x to "on"

Put a trigger zone for the once-only script, hitting a very simple script called scriptconditional.


Set up the script itself separately.

... (all the other script stuff)

The name of "script" has to be lowercase or the jump from ifflag() won't hit it. You also have to do it this way round, as when ifflag() triggers, it puts black borders around the screen which don't disappear until a say() or a reply() - so your script needs at least one of those in, too!


Haha, yikes! I'm sorry, the conditional stuff was added very last minute and not tested very well. Glad you were able to trick it into working, though. I promise it'll be easier in the next patch! :viridian:


Well, it's working well enough, just about :)


Quick question: in the level editor, it seems that breakable platforms don't block moving ones as they do in Laboratory 2 (Prize for the Reckless, Exhaust Chute). Any particular reason for that?