The rendering engine above “PixelBite” is set to render at a 1/3 resolution and is locked at 15FPS for this scene.
I found a method of effectively changing the resolution and frame-rate, This gives the project that retro-look as you can see, this is achieved without any major performance issues and functions on all devices, The method I’m using allows me to layer things above or below the game world (Like the background)
What is the game about?
The game is a simple demo where you can walk around an old school cartoon house, The demo (Much like the scene above) will be locked to 15fps and a 1/3 or 1/4 Resolution for stylistic reasons. The coolest part about PixelBite is the ease of development, Low quality assets were common so its not a big deal if I use poorly made models (I’m not much of a modeler) The performance is also much better as roblox itself can run as voxel with zero light emitters or other things that may cause performance trouble.
Technical details
My team isn’t letting me disclose the technical details and I would also like to keep it our secret sauce for now.
But, I do think listing features is ok, FTF (Forced Target FrameRate), Dynamic Resolution scaling (resolution can be changed between frames), Within roblox (no external software required)
I’m sure more advanced users will figure out our trick as its not super complex, We simply packaged it into something easy to develop with (A module library with a few easy variables.)
I’m mainly curious what people think of the style and wondering about improvements I could make.
Well I don’t think it will open sourced, and neither do I think they should open source it, it’s always good to have that one unique game that no one has done or done successfully in your arsenal (especially if you are a small development studio).
Well hell there is a possibility that maybe they will open source the project, but I wouldn’t depend on it, there are tutorials out there (that’s where I got my information from), if I find anything useful I will pin it here.
@koyugaki It’s just an isometric camera angle (low FOV and corner camera placement) and viewport frames set on GUI with the resolution and frame rate cap set really low.
A lot of other people have done stuff similar to this.
The trick is to put a part in front of the Camera, scale it to the size of the Cameras viewport and then place a SurfaceGui ontop. Then make sure the SurfaceGui’s SizingMode is set to FixedSize. In the SurfaceGui you can put in a ViewportFrame to replicate all regular game stuffs
With the SurfaceGui’s SizingMode, you can control the resolution
(my TypeScript skills were much worse back then, please excuse the horrible type assertions)
I love everyone’s explanations, We did use a viewport however the way we used it is completely different from what you all think.
We Dont have a part in front of the camera, Though that is another performant method if anyone wants to replicate this.
We did some more trickery to get the isometric effect, setting the fov to 1 is a good alternative our fov is actually 8 and we used some trickery to move the camera instead.
We didn’t cap the game framerate, we capped the update framerate
There are a ton of alternatives as listed Above, we don’t plan on open sourcing our version because it differs when it comes to performance due to some complex optimizations (Ex, updating objects based on triggers)
We do not use outside sources with the exclusion of a few librarys.