Faking true 2d with camera and lighting tricks, example uncopylocked side scrolling place provided

I noticed some people in the “what’s something you wished was a feature” thread wanted true 2d. Roblox doesn’t have orthographic cameras and an easy way of turning off shadows, so I put together a quick proof of concept place for anyone interested. Place is uncopylocked.

Thanks to SuperSpaceMan230 for his knowledge contributions.

The script that does all of the heavy lifting is in StarterCharacterScripts. It only took me about an hour to put together, but it’s not all that easy to find info on how to do it.

Turns out if you lock the camera axis, have some very specific lighting settings, set the camera FoV to the minimum and zoom out a lot, it can look pretty close to true 2d.

42 Likes

Really cool! Keep up the good work!

CFrame.new is deprecated. Use CFrame.lookAt instead.

I like it! I can’t tell the difference between this and a platformer (except for the characters, obviously)

Didn’t know you could use that function, seems much better, thanks! If you had a custom character , you could definitely make the characters look 2d as well.

I would consider adding a script that would add a BlockMesh to every BasePart in the character.

Is there a reason for that? Does it affect the quality of blocks?

It essentially removes the bevels of an R6 character. It was originally designed to remove bevels and scale bricks back in 2010.

Oh, I didn’t read the character bit. I miss bevels, they were fun!

That’s incorrect, I still use it in my code and it doesn’t appear deprecated


I am curious if you will add R15 support

Yes, CFrame.new is deprecated, as shown in the docs. CFrame.lookAt should be used instead.


(the new docs do not directly say it has been deprecated, but the old one explicitly states not to use it)

I doubt they would (old project). But it’s not very difficult to make yourself.

“This constructor overload
There’s multiple variants of the constructor and the one that has been replaced by lookAt is the one thats been deprecated. Not all of them.

Yes, I know that. But CFrame.new() and CFrame.new(pos, lookAt) are clearly deprecated.

wouldn’t you need just to change animations?

This constructor overload has been replaced by CFrame.lookAt()

Not the whole function, just that one overload. :+1: