OK, recently I've been working on a top-down car minigame, so I decided to share some of the knowledge I gained from it. Also, this is my first tutorial, so this might be a bit confusing, and there might be a bit
too much information, but oh well. I am also sorry that this tutorial doesn't have any pictures: I'm just too lazy for that
NOTE: This project isn't completed, so there may be updates.
UPDATE: Made it easier to read
How to make semi-advanced top-down bumper car logic
PART 1: BASIC DESIGN
STEP 1: Car Design
First off, you have to make a car. This an optional step, you can use any car you want, this is just how I made my car, so you can use it if you want, or make your own. First, turn on the small grid, and make a 1-Layer Regular Cardboard Rectangle with a 2:3 width-height ratio (I made mine really small, 4X6). Use the Right Triangle Shape to cut off the corners at the top. Next, add 1:2 ratio Regular Sponge wheels on either side (I made mine 1X2 on small grid, with 1 cell spacing, and 1 cell from the cut corners at the top).
Now, as a bonus step to make it extra fancy, add a 2-cell wide hologram 5-pointed star near the top of the car (we'll change the settings later), and a small LED light at the very bottom in the middle, but leave space for a controllinator in between them. Take a black sticker, and sticker the four sponge rectangles to make them look like wheels, then take a tomato red sticker, and sticker just the body of the car to make it look nice.
STEP 2: Controllinator + Eye Candy
Now that you have a simple car, it's time to make it look interesting. First, add a controllinator in between the star hologram and the LED light. Then, hook up the controllinator's active state output to the star and LED light. Change the settings to the star to be yellow and have 100% brightness when it's on, and leave the off settings as is.
Change the LED light's color to the player color, and leave the off settings unchanged, but tweak the range to your liking. Also, the options for the controllinator don't really matter either, as long as you can get in it, but I disabled the popit so that I could have access to the square button if I needed it.
NOTE: I forgot to mention, make sure the controllinator is upside down on the car, or sackboy will be facing the wrong way.
STEP 3: Stage Design
OK, so the car's all done, but now what? Are we starting to add functionality to it yet? Not quite, we need somewhere to drive it (when I first started making the car, I was experimenting with it, and wasn't expecting to build on it, so I didn't make a stage until I finished the car and car logic, which was a big mistake, as there was a lot of editing to do). First off, make a very large rectangle of grass-looking material (I used a material from LBP 1, they don't have new grass materials in LBP 2, so if you don't own the first, you're out of luck). Make sure it's 1 Layer thick and is at the bottom most layer. Surround it with a fence-ish, or nice-looking material that's 3 layer's thick, to make sure the player can't escape.
I used the "Wooden Struts" Material from the wood section, and added Orange Jelly from the sponge section at the bottom-most thin layer below the fence, so that the player has something better than a simple blue sky to look at in the background. After that, make sure the rectangle is vertical, so it has a bigger height, and add a checkpoint/entrance near the bottom. After that add a horizontal 1 layer bar of material in the middle layer near the bottom of the stage. The are below the bar will be sort of the parking garage, so that if there's only one player, the other car's won't get in the way. Don't worry, you don't need a gate or anything, since we're going to add a jumping feature to the car! You can add a bunch of obstacles later, you don't need to worry about that now. Now to move on to the logic.
PART 2: MAKING THE CAR'S ENGINE
STEP 1: Building the Main Engine - Initial Stuff
First off, we need to set up the car so that it can actually drive. We'll make the engine's later. If you skipped step 1, all you'll need for this is a car object with a controllinator attached. Here are the recommended settings for the controllinator:
REMOTE CONTROL: [No]
DISABLE POPIT: [Recommended]
TRIGGER RADIUS: [Over 20]
AUTOMATICALLY ENTER: [Optional]
SHOW CIRCUITBOARD: [Yes]
SIDE-MOUNTED: [Not Recommended]
VISIBLE IN PLAY MODE: [Recommended]
Now, make sure you have the circuit board open. We're going to make two microchips; one for the main engine and all the initial stuff, and one for the jumping engine, which we'll use later. These are not needed, but are recommended, for neatness and organization. I put them on either side of the top corners (the controllinator should be upside down so the controllinator's output buttons are at the bottom). Close the jumping engine, we'll work on that later, but keep the driving engine open. We will be making three rows for this engine, each for a different purpose. The initial stuff is in the bottom row for me.
First off this row is going to have the most logic; five pieces (plus a note). Now, just to make sure you don't confuse yourself, make a note at the bottom left of the circuit board (make sure the board's about 4.5 pieces of logic tall, and 9.5 pieces wide; each piece is about 2X2 grid cells) that says "Initial Logic" so you won't get confused later on. Next to the note add an Advanced Rotator with a speed of 100, Acceleration of 50%, and Deceleration of 0%. Connect the Left/Right movement of the left stick of the controller to the ROTATION SPEED Input of the rotator, NOT the On/Off Input (this is important, otherwise you won't be able to rotate the car). Now you can rotate the car, but gravity is still in effect! Add a Gravity Object Tweaker (not world tweaker) next to the rotator with 100% gravity and 20% Dampening. Now gravity doesn't stop our car!
But cars usually bounce of walls when they crash into them (or they explode), at least in cartoonish racing games they do, so let's make our car bounce off the walls. Add a Material Tweaker right next to the Gravity Tweaker with 60% bounciness, and make it indestructable, just in case something weird happens. Now, to make it look extra nice, let's add a movie camera for a nice close zoom next to the Material Tweaker. Just make sure not to enable Player Tracking, make it hold for a long time, and not to disable the controller buttons. Now, just to make it a bit more interesting, let's add an ignition sound that sounds when you enter the car. Place a Transport Misc. Sound Effect right next to the movie camera with the sound effect ignition. Leave the settings as is. Now finally, attach the Gravity Tweaker, Material Tweaker, Movie Camera, and Sound effect all to the Active State Output from the controllinator. Now, let's make the engine.
STEP 2: Building the Main Engine - Moving Forward
Ok, now let's make the car go forward. On the Driving Engine, there should be three rows,and the bottom one should be full. Now we'll make the top most row, the driving logic. Add a note first that says "Driving Logic." Now, make a mover next to it with 0 left/right speed, 25 up/down speed, local space on, acceleration of 50%, and deceleration of 40%. Hook up the mover's on/off with the R1 button. But no car is complete without exhaust fumes! Add a smoke machine and an emitter next to each other, and right next to the mover. Set the smoke machine to 0 L/R speed, -20 U/D speed, 100% size, with 100% brightness and the default color. Now we have smoke, and all we need is fire from the emitter to make our exhaust fumes complete!
Choose a fire projectile and emit the smallest possible fire object from the bottom of the car, with a vertical velocity of 1, 0 angular velocity, do NOT ignore parent velocity, 0.0s timing, 0.1s lifetime, 0.0s Sync, infinite quantity, 1 max emitted at one time, and DO destroy old objects. You can tweak the visuals to your liking, but I personally like the Splat effect. Now hook the emitter and smoke machine also to the R1 button. Unfortunately, I do not currently know how to get rid of that annoying sound of the fire projectiles being emitted, so let's try to block that sound with an engine sound effect. Place a Vehicle Engines sound effect next to the emitter, and set it to propeller plane (it's the best sounding engine) with 2.0 Sound Modification, with Position Sound set to OFF. Now hook this to the R1 button, and the forward engine is complete! Now, we need a reverse engine to complete our driving engine.
STEP 3: Building the Main Engine - Reverse
Now, we need to finish up our driving engine. This is the simplest one, and we'll make it in the middle row of the microchip. First make a note that says "Reverse Logic." Copy the mover and smoke machine from the Forward engine (we don't need fire for this one). Change the mover U/D speed to -7.5, and the size of the smoke from the smoke machine to 30%. Now all that's left is a sound effect. There's a perfect sound effect for this, but unfortunately it only plays once, even when you hold down the button activating it. But we can fix that with a timer. Place a microchip (just to keep stuff organized) next to the smoke machine. Make the Microchip smaller, we just need 2 pieces of logic (technically one piece and a sound effect).
Add a timer and a Transport Misc. sound effect right next to it. Set the timer to 1.0s, connect the output to the sound effect and also to it's own reset input, so it will loop. Now change the Transport Misc. SF to Reversing Beep, and leave everything else the same. Now connect the L1 or R2 Button output, whichever is more comfortable, to the reverse mover, smoke machine, and DIRECTLY to the Timer's activate input, not to the microchip's. Now we've finished our driving engine! Congratulations!
PART 3: MAKING THE CAR JUMP
- If you press Square over a button on the controllinator's controller, it allows you to change the text that displays when the controllinator is active. This way you can make the R1 Button say drive, X button say jump, etc.
- Always group together objects in Microchips and add notes; it's easy to forget.
- To make a permanent switch, create a counter that only goes up to one, starts at zero, and resets itself. To activate it, connect something to it's input, and whatever is connected to it's output will be active until it stops getting input.
- Whenever you're editing a level, always keep pause on and use Play Mode to test it, or you might suffer from the 160 hour glitch (see the wiki for more info).
STEP 1: Jumping with Intermediate Logic
This part of the tutorial is more advanced and requires knowledge of Intermediate/Semi-Advanced logic. Also, the permanent switch, counters and timers are all good things to know. First off, open the Jumping microchip we've left alone in the corner for all this time. The actual logic for jumping is actually very simple, but it's the concept that may be a bit hard to grasp for beginners. I've found this to be the most effective way for jumping, although I haven't tested it completely, so there may be a few glitches I'm unaware of.
First thing to do is place a counter at the left side of the microchip. This isn't really necessary, but it cuts down a lot on those nasty wires, so I would use it if I were you. Now set the counter to start at 0 and end at 1. Next step is to make a timer, a in/out (layer) mover, and a Swoosh sound effect, all conveniently next to the counter. Hook up the counter's output to each of this, but don't hook up anything to the counter's reset. Choose swish for the swoosh sound effect, with -12.0 Soundwave modification, set the in/out mover to allow pushing, and to move one layer upwards. Set the timer to start at 0.0s, end at 0.3s (most accurate jump time),and make the input type Start Count Up. If you don't change the input type, his won't work. Basically, what happens so far is that when a button is pressed (will be added later), the counter activates three different actions: it moves the car up a layer, it plays a sound, and starts a timer. Now, hook up the X button to the counter.
Now we're almost done (with this step). Copy the in/out mover, and place it near the timer, then hook up the timer to the new in/out mover. Change the settings so it moves to the back-most layer (NOT move back ONE layer). Now our jumping system is done! But wait, when you test it out, it only works once! So what's the solution? You may be thinking: oh, just hook up the counter and timer's output to their respective reset inputs! But that's not the answer, because if you are planning on allowing the car to go on elevated land, when the car goes over the edge of the elevated ground, it will stay in the air until you press X, because the jump action jumps, then waits three seconds, and tries to move the car back ONCE. So what's the solution? Let's find out!
STEP 2: Fixing the Hover Glitch
Now to fix the hover glitch, all you need is a tag, a tag sensor, and another counter. Place the tag sensor and counter on the opposite side of the jumping microchip than the basic jump logic. Set the counter to 1, just like the other, and set the range of the tag sensor to the width of your field, and the tag color to the same color as your tag. hook up the tag sensor to the counter, and hook up the counter to the timer and other counter's resets.
Place the tag on a invisible hologram one layer thick, since the controllinator is on top of the car, and place the invisible hologram on the ground level in the corner somewhere. Change the tag sensor so that it detects tags only on the same layer, make sure the count is 1, the angle of range is 360, and the output value is closeness, and NOT signal strength. Finally, hook up the X button to the new counter's reset button. Now, since it only resets when it detects the tag, which is the "ground," it will keep on pushing to the back even when the jump is over.
Well, that's all for this tutorial. I hope you found this useful. You can stick that controllinator on any object, like an apple, and it will behave the same way. I will hopefully, update it sometime soon with a guide on making the stage more reacing like, and maybe even adding a gun and enemies, but first I need to make and perfect those myself. This will hopefully be the first of many tutorials. Next tutorial, I'll be showing you how to make a Sackbot logic system, combining all sorts of behaviors and logic, which will require more advanced logic, and more knowledge [UPDATED]. That tutorial will contain a little more advanced logic though, so good luck understanding it when I post it! Please post any suggestions, comments or even questions, and not to mention glitches so that I can answer/incorporate/fix them. Once again, thanks for reading.