Create A 2.5D Platformer Game With Unreal Engine (Tutorial)

Learn how to create a 2.5D Platformer game with Unreal Engine in this full tutorial using C++. In this beginner’s course, you will how to create a game with Unreal Engine and Blueprints.

💻 Project assets:
💻 Completed code:

🎥 Course from Awesome Tuts. Check out their YouTube channel:
🔗 Learn more about game development here:

Learn to code for free and get a developer job:

Read hundreds of articles on programming:

And subscribe for new videos on technology every day:

50 thoughts on “Create A 2.5D Platformer Game With Unreal Engine (Tutorial)”

  1. 1:40:00 my ball can enter to the laser and it's detected but on the next frame it doesn't do anything, i do not know what's happening, it's like the bp_laser haven't the tick event activated but it is

  2. In the final part, when we move the elevator, are we doing it by setting a new location and the elevator slowly moves to that position?

  3. I don't think we have worked enough with the great potential of Unreal engine for 2D games. There is just so much you can do, and even if it's overkill, that's fine, use what it gives you and make a great game.

  4. For those who are wondering at 1:05:00 "why does sign stabilize the ball". Just put a breakpoint (press F9) on the Launch Character node and hover with the mouse over the input of the Sign node to see what it looks like. The value I saw for the first hit was -75 (which is the distance between the location of the hit and the center of the ball, aka the radius). The difference between "with sign" and "without sign" is just that in the first case you're always adding the same launch velocity to the character (i.e. a <(+/-) 800, 0, 1400> vector), while in the second case the X component depends on the distance between the center of the ball and the hit position. In this game there is no difference since the ball is spherical and every hit will always be at the same distance, but it may not always be the case. So, if you multiply by a value like "12" instead of "800" after sign and don't normalize the vector, the jump would work roughly the same, while in other cases (say you are playing as a car, or a spaceship, or another irregular form) you will want to take the direction of the hit in a normalized form in order to consistently apply the same hit.

    Another way to see this is: you take the "hit vector" composed like this: <ActorLocation.X – HitResult.X, 0, 0> and "normalize" it to get a vector that is either <-1, 0, 0> or <1, 0, 0>.

  5. i am try to devolope this project but there are few problem, the block are moving in Z axis and if i try to jump on they move my camera out of the game , and when you roll the block also the box collider is rolling so does mean they change the interacting point, anyone have a solution?

  6. Starting to get into game development. Thank so much for your free content. Who needs expensive schools if one has such an awesome community. greetings from austria

  7. Business Opportunity in Ruvol

    I have invented a Board Game [still unpublished and not yet out in the market] that I believe is guaranteed to be as challenging and exciting as CHESS. I called it “RUVOL.”

    It is my hope that one day Ruvol may surpass chess as the “Number One Board Game in the World.”

    The weakness of chess is it always starts in fixed positions that the opening moves become “memorizable.” In fact, not a few have so mastered the moves that they can play against their opponents “blindfolded.” It is for this very reason that the great Bobby Fischer introduced his so-called “Fischer Random Chess,” where the starting position of the pieces is “randomized” to make the memorization of openings impracticable. Fortunately, it is also for this reason that I invented Ruvol where “every game” has been calculated to be a challenging one to play.


    I detailed everything in my YouTube video. Here is the link:


    It is worthwhile to note that the people who play chess will be the same people who will play Ruvol. In my Google search, I learned there are around 800 million chess players in the world. Even just a small percentage of these 800 million is good enough to earn big money from Ruvol either as an ONLINE GAME BUSINESS or as a PHYSICAL PRODUCT DISTRIBUTOR.

    You may contact me at: [email protected]

    Thanks and God bless!


    The Ruvol Inventor

  8. Ok so, you created a mesh with a ball material and then in the code you wrote a blueprint that change the color of the material which is the entire ball mesh, how did you make glow that specific part of that material?? And also in 35:50 why did you picked the get actor forward and multiplied with get MoveRight? What is the connection?

  9. I found four problems / bugs

    1. The materials are broken (I had to set the textures for the ball in the nodes manually looking at your pasued video) and I cannot for some reason set the materials for the particles (you had them already loaded) its just a green square at the material section of the particle blueprint but doesnt let me change to any material [EDIT: The materials for particles can be easily changed by nodes 🙂 Idk why they dont work in the menu]

    2. The cubes spin around even though we set the rotation constraints on it

    3. If you constantly press 'E' while on the top of the elevator it will infinitely go up (moves very little every time you press E)

    4. In the "OnEndOverlap" event we are disabling the input on "E" but what if the player is still holding the key? The beam still works and the cube can be pulled from any distance! The simplest solution for me was to add the "CloseGate" custom event to the end of the "OnEndOverlap" node

    Thanks in advance for any replies !! 🙂
    If anybody even reads this 3 months after the release of this video…

    I know about level streaming but still no proper tutorial on YouTube or documentation 😅
    If there exist other methods or turorial plz provide links , i will be very great full

  11. i have a problem, can somebody tell me why when i open map, rocks aren't loaded, some error.
    UPD: nvrm, somehow they don't have static mesh

Comments are closed.