(2D Game Engine) How would I create a 2D Platformer?

Hey Developers,

This is pretty much a huge stage for ROBLOX. ROBLOX recently went on the stock market, and it’s popularity is significantly increasing on the daily. With that, I think we need to step up development from the simulators and things we currently have. Not saying they aren’t fun or anything, I seriously just believe we can do better.

What is my goal, or issue?

That’s not the post, so I’ll get straight to it. I am looking for a way to make a 2D Platformer in ROBLOX. I understand this is not an easy thing, and I have tried numerous game engines previously created but they are outdated and don’t function correctly. One of these is Upside Engine, which is the best one probably but it doesn’t work.

I would like to hear everyone’s ideas on this. Most people who comment won’t know how to make this, but I am pretty certain it requires days of effort to make one. I am willing to put in that time to make a 2D Game Engine, because cmon guys that would be really fun. There isn’t an actual 2D game on ROBLOX, the most similar was Vibrant Venture but they have branched off.

The character needs a hitbox, and a weapon as well, which means images will need to be loaded frame by frame for animations. I am a graphics artist, so I can create those images but I wouldn’t know how to go about making a frame by frame animation.

What have I tried?

I have tried numerous methods involving “chunk loading” type systems with ImageLabels. They SORT OF work, but not really. I’m looking to make a game like Hollow Knight, however that isn’t very simple. I’ve also attempted making the character move, which I accomplished pretty easily since all you have to do is make the position on the X or Y axis, while on 3D games there is also the Z axis to deal with.

The character moving broke, however, when I tried to make the character an image and I’ve since then I kind of given up on this since it’s a bit out of my level (or I think, since no one has done it before and I don’t know how I would do it).

( Assets / Links that could help you, help me! )

Disclaimer

If I do find how to create this, I will release it to the public after I make my game so everyone is able to do this. You will be able to tinker with it and stuff as well. I will not provide anyone too much assistance if this becomes a thing, since I want everyone to experiment with it.

Thank you for reading, have a nice day. If anyone is really serious and likes my ideas, DM me;

roads#0001

2 Likes

I don’t want to give away too much. What I suggest doing is going on scratch (a 2d block coding platform) This is a great way to learn concepts and get inspiration even if it’s not in lua! There are plenty of 2d scrolling platformers there.

2 Likes

I work on 2D games, although they already had 2D templates so it wasn’t hardcoding a framework to make games.

We have a few issues.

1. Only 3D Physics and Objects
There isn’t any 2D physics object you can add to your character, so you will have the issue of characters moving on the Z axis if there is no constraints on it, and same with the player rotation on the Z axis. There may be some other issues but I’m not sure about them

2. It’s not exactly 2D, it’s 2.5D
Since Roblox Studio is a 3D engine, your 2D game is just going to have 3d objects with decals on them, and the thing making the look 2D is the placement of the objects and where the camera is.

3. Lighting
There’s only 3D lighting so if you aren’t careful the lighting may make objects look 3D.

So here’s some things on how to help.

First, here’s how you might code a 2D animation, sorry if it’s bad, I haven’t touched Lua in a while. Although it’s not as good as using ImageRectSize and ImageRectOffset like itsLevande said

spriteIds = [a, b, c, d] --This would have the sprite's different frames' decal IDs
curFrame = nil;
isIdle = true;

    while isIdle do
        if curFrame != 3 then
            wait(0.2)
            curFrame = curFrame + 1
            sprite = spriteIds[curFrame]
        else
            curFrame = 0;
        end
    end

This will make the sprite change the decal every second, we increment the currentFrame until it reaches 4, then it will go back to 0 to loop.

You will need to prevent Z axis movement so it only has 2D movement,
You most likely will have to keep many parts visible and just cover them with decals since the parts are 3D

You need to recreate some objects since they are 3D – Such as fire, it acts like a 3D one so you may have to create an object with a fire sprite that burns the player on contact.

Make a 2D skybox, even if it’s not as obvious, it can give a 3D vibe.

Also, a cool thing about making a 2D game in a 3D engine is that you can swap between them which could create interesting effects and gameplay.

But remember, Roblox Studio is 3D engine so it won’t be as good unless you make some boilerplate stuff yourself, as far as making your own Player.

Sorry for any typos or incorrect grammar

2 Likes

Roblox does support sprite sheets to some extent. Using ImageRectSize and ImageRectOffset, you can define an image to only show a portion of an image and then offset the position to show different portions of said image. Using one image, you can have every frame for an animation and just iterate over specific positions to display it.

1 Like

Ah okay, I googled it and I got results saying it doesn’t support spritesheets