Can You Make 2D Games in Unreal? Build a Paper 2D Platformer

Yes, you can build a 2D platformer in Unreal Engine. Paper 2D supplies sprites and flipbooks, while a Paper Character can use Unreal’s character movement and capsule collision. A good first level is a room you can finish in ten seconds: start on a floor, walk to a ledge, jump across a gap and reach a visible exit. That small room makes it easy to tell whether a problem belongs to the artwork, the camera, the controls or the collision.

Build this example in a separate project or test map. Use the keyboard first and add controller bindings once walking and jumping work. The example uses X for horizontal movement, Z for height and Y for depth. Another convention is fine, but the camera, movement plane and platform positions must all agree. Many apparent sprite problems are simply objects separated by a few units on the depth axis.

Make the first room with blocks

Enable the Paper 2D plugin if your project does not already expose its sprite and flipbook tools. Restart the editor if prompted. Create a map called PlatformTest, save it, and give yourself three plain shapes: a long floor, a raised platform and a tall block marking the finish. Use ordinary cubes with collision for this first pass. Their dimensions are easy to inspect, and you can separate the question “can the player stand here?” from “does this tile look right?”

Place the first platform within an easy jump and leave room to approach it. Avoid putting the player spawn directly on the platform edge. A character whose capsule starts partly inside a wall may be pushed aside, which makes the first few seconds a poor test of your controls. Put the spawn near the middle of an open stretch and slightly above the floor. Keep all three objects centred on the same Y lane.

Add one unmistakable landmark on either side of the room. A red wall on the left and a blue wall on the right will immediately reveal a reversed camera or input mapping. Make the gap small enough to cross even if you release the movement key early. Save a copy before tuning the jump. You want a forgiving control room you can return to when a later art or collision change makes the game feel different.

Turn artwork into sprites at a consistent scale

Import a small sprite sheet with a transparent background, or start with two hand-drawn frames of the same character. Select the texture and use the Paper 2D sprite actions to extract sprites. Inspect the source rectangle of every frame in the Sprite Editor. A frame with a stray pixel from its neighbour can flash during animation even when the flipbook order is perfectly correct. Check the corners against a contrasting background.

Choose a consistent pixels-per-unit value across the player, floor art and props. A 32-pixel character and a 32-pixel tile should have a predictable size relationship. Write down your scale before you import a second set of assets. If an object seems ten times taller than expected, compare its sprite setting with the others before compensating with an extreme actor scale. Large arbitrary scale differences make camera framing and collision dimensions harder to reason about later.

Put the pivot near the same physical point on every animation frame. The soles of a standing character are a useful reference. Frames with different amounts of transparent padding can share an image size while placing the drawn feet at different heights. Preview the sequence against a horizontal guide. If the feet bounce while the character is supposed to be standing still, fix the frame regions or pivots before adjusting the player’s capsule.

Build two flipbooks and keep the first state change simple

Create one idle flipbook and one run flipbook. Check the order in the flipbook editor rather than trusting alphabetical filenames. A sequence named run1, run2 and run10 can sort differently from what you expect. Step through it once by hand. Choose a playback speed that makes the planted foot readable. A higher frame rate will not disguise a missing frame or a poorly aligned pivot.

Create a Blueprint derived from PaperCharacter and assign the idle flipbook to its sprite component. Adjust the capsule to enclose the character’s body. The capsule should reach the soles without including a long empty strip beneath the image. Keep the sprite as the visual component and the capsule as the main movement collider. Test the character on the plain floor before adding any state machine. It should settle without sinking or visibly hovering.

For the first animation switch, read horizontal velocity and compare its absolute value with a small threshold. Choose run while moving and idle while stationary. Change the active flipbook only when the desired state changes. If you also restart playback every update, the player may appear frozen on frame one even though the state says Run. Add a temporary state label while testing, then remove it once you can diagnose the motion by sight.

Make the correct pawn respond to input

Set your character Blueprint as the Default Pawn Class of the GameMode used by the test map. Place a Player Start and use the normal spawn flow. Alternatively, deliberately possess a single placed character for a quick test. Pick one approach. A map with a placed character in front of the camera and a separately spawned pawn receiving input can make working controls look completely broken.

For an Enhanced Input setup, create a one-dimensional Move action and a digital Jump action. In a mapping context, bind D or Right to positive movement and A or Left to negative movement. Apply a Negate modifier to the negative key if both bindings initially produce a positive value. Add the mapping context to the local player’s Enhanced Input subsystem when the pawn or controller initializes. Bind movement to Add Movement Input along world X, with the signed action value as scale.

Bind the start of Jump to the character’s Jump function and release to Stop Jumping. Walk toward the coloured landmarks before testing the gap. If both keys move right, inspect the incoming action values. If the values are correct but the character moves away from the camera, inspect the direction vector. If input events never fire, check possession and the active mapping context before rebuilding the character.

Lock movement to the plane and frame it from the side

In Character Movement enable the plane constraint and use a normal along Y for this X-Z level. The normal points out of the plane you want to keep. Constraining along the wrong axis can prevent walking or jumping while leaving depth movement available. If the character starts in an unexpected lane, compare the spawn location with the movement plane and consider snapping to the plane at the start.

Position the camera along Y and aim it at the play lane. For a first room, an orthographic camera makes apparent size independent of depth. Set its orthographic width by framing actual gameplay: the player, the next landing and a little space beyond it should all fit. A beautifully framed idle sprite is poor guidance if the landing platform disappears offscreen during a jump. Check the game viewport rather than relying exclusively on the editor perspective view.

Start with a stationary camera. Walk across the room and verify that the world axes, sprite orientation and left/right input all agree. Then add camera follow if the room needs it. A camera attached directly to the character may follow every small jump, making the level appear to lurch vertically. Try following horizontal position while leaving vertical framing steady in a short room. Add vertical following only when the level design actually needs it.

Diagnose landings before tuning the jump

Walk off the edge without jumping. You should fall. Stand on the next platform without pressing a movement key. You should remain still. Jump straight up and confirm that you return to the same floor. These three tests establish gravity and collision independently of a player’s ability to time a running jump. If the character falls through, inspect the platform’s collision and whether it blocks the pawn’s capsule on the actual play lane.

When substituting sprite platforms for cubes, inspect their collision shape in the Sprite Editor. A painted silhouette does not automatically define a suitable walking surface. For a straight ledge, one simple collision box can provide a more predictable landing than a detailed outline that follows every decorative chip. Keep scenery that should never block the player separate from the collision geometry used for movement. Epic illustrates the relevant editing modes in its Sprite Editor guide.

Tune jump height and horizontal speed one variable at a time. Mark the takeoff and landing points in the room and repeat the same jump from a standing start and from a running start. An awkward jump may be a gap-length problem, a camera problem or an acceleration problem. If you change gravity, speed and platform spacing simultaneously, a successful jump gives you little information about which adjustment helped.

Finish the room with a goal and a recovery path

Put a trigger volume around the finish marker. On overlap, verify that the overlapping actor is the player before declaring the room complete. Use a boolean to record that completion has already happened. A player with multiple overlapping components or a player walking in and out of the marker should not collect the same victory repeatedly. A short on-screen message is enough for this prototype.

Add a recovery volume below the gap. When the player reaches it, restart the room or move the character to a known safe checkpoint and reset its movement appropriately. Test a fall after running quickly and another after a missed stationary jump. If a teleported player retains downward speed, the next frame may carry it straight into trouble again. Make the recovery predictable before attempting a longer room with multiple checkpoints.

Now ask someone to try the level without an explanation. Watch the first place they hesitate. If they cannot identify the goal, improve its contrast or silhouette. If they jump before the landing is visible, reframe the camera. If they repeatedly snag on the same tile seam, inspect collision. Those observations are more actionable than a general request to make the controls feel smoother.

Check artwork at the size players will actually see

Test a windowed build as well as your normal editor viewport. Pixel art can look soft when filtering, camera movement and output scaling combine. Compare a stationary screenshot with one taken during movement. If a stationary edge is already soft, inspect texture filtering and how many screen pixels represent one source pixel. If only slow scrolling shimmers, examine fractional camera motion and scaling before redrawing the artwork.

Replace the floor cubes a section at a time. After each replacement, run the same route from spawn to finish. Keep the original cubes in a duplicate map so a visual change never destroys your reference. Only after the route is stable should you add hazards, moving platforms or a third animation state. Each feature introduces a separate failure mode, and a known-good room lets you identify it quickly.

Common questions

Do I need a tile map for a small platformer?

No. Placed sprites, collision boxes and a few reusable platform Blueprints can carry a small level. A tile map becomes attractive when the layout repeats enough tiles that painting them is quicker than placing actors individually. The first room is a good way to discover your preferred grid size before creating a large tile set.

Why does the character slide while the run animation plays?

Compare the visual stride with movement speed. A running animation can cycle perfectly and still appear to skate if the body travels much farther than the planted foot suggests. Record a short side view, follow one foot during contact and adjust animation timing or movement speed in small increments.

Why does the player vanish when I turn around?

Check how you flip the visual. Rotating the entire actor can also turn an attached camera or change movement orientation. Keep the camera stable and change the sprite’s facing separately. Watch the capsule in the level while turning to verify that a purely visual action has not moved the collision body.

When is the prototype ready to build on?

When a fresh launch spawns the intended pawn, both directions work, every required jump is visible, a missed jump recovers cleanly and the finish triggers once. Package a build with the test map included and repeat the route outside the editor. That single complete trip is a stronger foundation than a dozen beautiful rooms you can reach only by moving the editor camera.