This guide is for those who would like to create their own levels in Project Arrhythmia. I hope you can get some use out of this, as while it no longer is of use to me, it’ll be useful to future new level editors who want the rundown on the features!
Introduction and Basic Features
This section covers the introduction to the guide and level editor, and goes into detail about what each feature and/or button does, so you can understand when a certain feature comes into play, depending on what you’re making. This section is crucial when it comes to understanding when a feature needs to be used or mastered to make level edits much easier.
Hello everyone! If you’re reading this, then you’re wanting to make levels in Project Arrhythmia, right? Well, if it seems too complex, then don’t worry! This guide is made to assist you in remembering how to properly use the Level Editor in Project Arrythmia, and includes some examples of how the features work. The notes, if possible, will be made easier to understand.
Before creating a level, you’ll need a song. You can use free music or a song which is permitted by the Steam Workshop or the owner. ALWAYS make sure the video file you want is an .ogg file. Open Steam, and right click on Project Arrythmia. Click on ‘Properties’, and go into ‘Browse Local Files’. (You can create a folder called ‘Level Music’ for your convenience to go into). When you get a new song, move it into that folder (C:\Program Files (x86)\Steam\steamapps\common\Project Arrhythmia\Level Music).
Open up Project Arrhythmia, and open up the Project Arrhythmia Editor.
A menu may open up with the levels you’ve previously made. To create a new level, click ‘File’, and ‘New Level’. Click on Browse, and it’ll prompt you to get an audio file. Your music level folder should appear in the list of folders. Click on it, and it’ll take you to the list of music in that folder. Click on the track(s) you want, and be sure to name your level before pressing ‘Create Level’.
Before you place objects, you may want to change the THEME, which determines the background, the objects, your character, the background objects, etc. To change the theme, press the EVENT/CHECK button. This allows you to add effects to your level. Each effect has a starting keyframe, which determines how an effect will start off. To change a theme, click the keyframe in the first row, and you’ll get a dropdown menu of many different themes.
All levels start with an object because you have to have at least one. To add a new object, click the OBJECT button. When you click an object, you’ll get a menu for its own customizable properties. You can also check a box to decide if it’s a Helper, if it’s Autokill, or if it’s Empty. If you check the first box, your object turns transparent, it turns into a Helper, which are little warnings that appear before the obstacle it’s warning about. AutoKill makes the object disappear once it’s done its job. It’s best to keep this on so the level doesn’t lag. The third checkbox, Empty, does what it says on the tin. It empties the objects of a damaging hitbox so they can’t hurt you. The start time is when the object starts existing. You can change it by dragging the object back and forth along the timeline. Where the object is marked on the timeline is when it appears. For instance, at 10 seconds into a song, the object appears at 10 seconds.
The shapes menu changes the shape of the object you’re using, from hollow squares, to triangles, to semicircles, to even texts! The slider below that is ‘Render Depth’. The slider determines if an object should be over, or under another object. Sliding the slider to the right makes the object go under the second object. Sliding it to the left will make it go over the object.
Next up we have the Editor Layer and Editor Bin. The Editor Layer determines what layer the object is on in the timeline. The Editor Bin lets you move it up and down on the timeline since Editor Layer will not let you.
The Checkpoints in the level can be made by clicking the CHECK button. This creates a new checkpoint, which you can determine what time it appears and what its name is. Position X and Y in this determine where your character respawns when it dies.
The MARKER button adds a marker in the timeline for a certain point in the level you can easily get back to. You can name markers, give them descriptions and certain colors
The last button, BG (or BACKGROUND), lets you add pulses to the background. You can add positions, scale, color, or whether you want it to grow or shrink to the bass, treble, and by how much.
When you click on an object, you can see its keyframe timelines. These timelines control the four different properties of the object over time. POSITION, SCALE, ROTATION, and COLOR. Each one has a keyframe that determines how the object starts off.
Helpers, Object Creation, Randomization and Parenting
Continuing from the last section, an object starts off in the middle of the screen. POSITION. X2 Y2. Two units long, two units wide. SCALE. It doesn’t have a specific rotation, (ROTATION) and it’s blue (COLOR).
Let’s say, for example, we want this to be a vertical laser that appears at X positions, and will have a small warning first. The first object always has to be the helper, which warns people about the attack. Depending on the attack, these helpers are usually a few seconds long. When you put in your helper, you could call it The Laser Helper. Then check the Helper box. Make the helper look exactly like how the laser is going to look. Go to scale, and set Y scale to 60. It will just bluntly appear on the screen, and looks sloppy. So right click on the Scale timeline, and set its starting scale to 0, 60 to 2, 60. And it should take a second or less to appear. The object grows vertically, but you can also make it grow horizontally. Now, the helper has been made, but what about the actual laser?
Click on the object and press CTRL + C. then piece the objects, or paste them with CTRL + V. Just SHIFT + Left Click the second laser below into another layer. Uncheck the helper box and call it ‘The Laser’. Then move it so it appears a few seconds after the helper does. You’ll also want them to have smooth transitions when they disappear. After the laser’s been there for about a second, you’ll want it to shrink horizontally until you can’t see it anymore. So at the end of the moment it exists, set the X scale to 0.
One last thing to note is the Ease Type. You click on that and you get a little dropdown menu that has options for Linear, Instant, Insine, and OutSine. This basically changes how one keyframe transitions to the next. Does it change at a constant speed, is it instant? Should it speed up towards the middle and slow down towards the end? You can select how an object appears, and disappears, along with its Helper.
For the laser to appear at random X intervals to the beat of a particular part of the song. So, how do we make a laser randomly placed? If you click any object you may notice this little section called Randomize. Now you’re able to randomize the position on the scale, and the rotation of any object. For this one, I’m gonna randomize this position. Now, here’s the thing – When you randomize an object with a helper, it’s important that you randomize the helper only. I’ll tell you why in a bit.
Now, there are several different options for randomization here. The first one means no randomization, the second means you can enter two different positions, and it will pick a random position in between them. The third will only pick one of the two numbers you entered and the fourth is a little bit complicated.
I want the y-coordinate to always be zero, but I want it to pick a random X position between negative 34 and positive 34. Let’s see what happens. So, the helper has chosen a random position between the two coordinates I typed in, but what about the laser? That’s where parenting comes in.
Parenting is a way to basically attach objects to other object. An object that is parented to another one will follow the parent around no matter what. I’m just using these objects in a different level. As an example, this large square is going to be the parent object, and the small square is going to be the small object. To make the larger square the smaller square’s parents, I click the small one and go to parenting. From there, I get a drop down menu of all the objects I have that aren’t already parented to this object. I want a large square to be the small square’s parents, so I’m just gonna select that. Now the large square is the smaller square’s parent. The small square can still move freely, but whenever the big square moves, the small one moves along with it.
Now whatever its parent position is, it will always move along with its parent and its rotation will also be based on the parent’s. The child can always rotate on its own, but if the parent rotates, that happens. You can actually choose whether you want that to happen with this button, next to parenting, but the main thing to keep in mind here is that the child will always follow the parents when the parent moves. So basically, with two objects in parenting, Object 2, the Child, will imitate Object 1, the parent. Imitating its movement and position, like a reflection in a mirror. If the Parent moves left, the Child moves left. If it rotates clockwise, the child rotates clockwise, etc.)
(Extra info from Flamey – the parent is the boss of the child. so, technically, if a parent moves, a child moves aswell. Like, the child being told to follow by the parent. the child can still move freely, but it still obeys it’s parent’s orders.)
Extra info from Cursed Memelord – you can parent something in 3 different ways; position, scale and rotation. Parenting position will mean the 0,0 coordinates of the object will be the coordinates of the parent)
If it wasn’t already clear, the helper is gonna be the parent, and the laser is gonna be the child. I’m gonna go ahead and set that up right now. Click the laser, go to parenting, and click that. Now the laser should follow its helper wherever it goes. Let’s try it out…so it worked. Now this laser will appear at a random position with the helper, so now I want these things to appear and sync to the music, which means I need to know exactly where the notes are. the way I do it is by putting the song in slow motion, like that, and then placing a marker for each note.
Creating Bullets and More on Prefabs
So bullets are actually very easy to make. All you need is two objects, an invisible parent object that basically acts as its origin, and the actual bullet options. So let’s make the parent first.
We’re gonna make a new object, and I’m going to call it B parent. So now I need to figure out where this thing is going to appear. My idea is for the bullet to start on the right side of the screen and slowly move to the left, so I want the parent to be on the right side. Now you might want to look at this; one of the new updates added this thing where you don’t have to press this button over and over to change the position. You can just use the scroll wheel.
So the bullet will appear on the right side of the screen, so if I press the randomize position button, I’m going to use the same x-coordinate for both x-coordinates, but I’m going to use positive 20 and negative 20 for the y-coordinate so each time this bullet spawns, it’s going to be at a random y-coordinate on the right side of the screen.
But you know, I want the bullets to appear from off-screen so it doesn’t look weird, so I just have to move the parents a bit to the right for both coordinates, and once I’m assured that it appears off-screen, I can just check the empty box to make it empty.
So, the next step obviously is making the actual bullets. I just want a blue square bullet to appear and spin around as it moves, so I’ll make a new object. I will shift plus drag this below the parents and I’ll call it ‘bullet’. Now in this parenting section over here I’m going to select B parent, so now the bullet is parented to the invisible objects. Now I just have to make it move to the other side of the screen and disappear, so first I need to actually play the song so I can judge how long I want the bullet to stay on screen for. [plays song] Okay that’s about how much time I want the bullet to be on screen for.
Now I just add a keyframe there onto the position timeline, so now I need to set it so that this bullet moves all the way across the screen before disappearing. (Selects AutoKill) So I actually want the bullet to start at this marker I put down..and now, let’s play it and see how it looks. (Plays song again) That looks pretty good. Now I’m gonna add the rotation effects. All I have to do is add a keyframe on the rotation timeline, this blue one. Sort of where the position one is, doesn’t have to be exact or whatever. And I’m just gonna set it to 90 degrees, so now this thing should rotate while it moves. Let’s see how it looks. (Plays song once again)..so that is a solid bullet.