Custom 3D GUI Game Engine With Textures

Its great! I’ve found a bug that when changing the render to anything lower than 50 it makes the game looks weird, putting it back to 50 still doesn’t work.

1 Like

Woah, this gets me thinking, an entire game, made completely out of GUIs…
nah it would break my computer lol

1 Like

Heh. And thats just the start of it. I have a lot of plans for optimizing this thing to the max!

Maybe you should try it and then tell me if it breaks your computer. I am very curious.

1 Like

so how is the progress on this so far? added any new features? Or are you still working on them.

1 Like

Yeah. Ive just released an early version of 2D sprites to represent objects or items to make the worlds less empty

UPDATE v2 - Sprites

It’s been awhile since the last update, but I have finally added sprites/objects to the engine to really spice things up a bit! Having sprites can allow for things like items and enemies to become a thing (which you might see in the future). Sprites are hold the record the most optimised option, which means I can have a lot of sprites being drawn on the screen without framerate drop!

Sprites has been added to all the maps I currently have:

  • MazeRoom
  • Castle

More maps coming soon as well!

I have also updated the rendering engine to support the new pixelated resampling mode when drawing images and textures. This allows me to use much lower res images and cancel out blur from close up views of walls and sprites in-game.

7 Likes

This is amazing… I don’t even have words other than wow…

I can’t wait to see your final product and play the game.

1 Like

did you hear of this new method where you get your bitmap texture, use the bit32 library the convert the texels which are 8 bit into one number that stores 4 of the pixels then use that to push it to an array and save it as lua syntax and read from that? I’ve been able to get 1024x1024 res with it

1 Like

Nope. Haven’t heard of it. Is there a documentation or an API reference to this?

No they deleted their docs bro :frowning: you use their bit32.replace() function to create a “buffer” if you have heard of that. Say I want to store 5, 0000 0101 and 255, 1111 1111, and 128, 1000 0000. In some off site script which generates the syntax →

texelCollection = bit32.replace(5, 255, 8,8) -- (64bit)0000000...0000010111111111
texelCollection = bit32.replace(texelCollection, 128, 16,8) --(64bit)0000000...100000001111111100000101

so it forces it to go from BGR format, ig you could flip them but just a heads up

there is this but it is very not detailed bit32 | Roblox Creator Documentation I should also note there are 64 bit libraries which arent native but I have NO idea how they work

also, to read their channels on the roblox end you would just do the reverse process with the extract function. Don’t worry though this stuff is literal bit shifting on the c++ end so it is instant

2 Likes

Gonna try this when I get in pc

1 Like

I’d be surprised if it just ran at “real time” freamerate, but it actually manages to hit 40FPS on my laptop with the default settings. If one thread can achieve this, I wonder what a proper implementation using Parallel Luau could.

2 Likes

What computer are you using? Cause i used a 2013 mac and it runs 60 FPS on default settings

1 Like

A Clevo with an i7 7700HQ, but the iGPU is busted so I’m forced to render using Microsoft Basic Driver as passthrough for my GTX 1070.

1 Like

hm, that’s not too bad. Good thing i’m currently working on optimising the renderer rn. So stay tuned, as I plan to make this run real time for pretty much all devices. While running on a single thread

2 Likes

I’ve tried to make a version of this renderer but with multi threads, but roblox decides that 20 threads is too much and instantly crashes my entire studio with no error message and doesn’t save my progress.

3 Likes

This is extremely cool and nostalgic! I love doom-styled games! My only critique is the resolution… bruuh.

2 Likes

Sadly the resolution is a bad limitation of how Roblox allows us to make custom rendering, that is because when we insert too many frames and change their color/size EVERY FRAME it begins to lag alot, that is why I want a feature which allows devs to color pixels on the screen instead.

5 Likes

If roblox had an actual canvas instance, it would make rendering faaaaar more performant since everything is controlled by the GPU when setting pixels. Using frames and manually calculating the pixels is sooo imperformant for high resolutions.

My racaster here doesn’t use per-pixel calculations, as it uses a frame for every column and I am only doing calculations for every column. So this thing can run very well on high resolutions. For example, I could have a resolution of 250 and i would still run 60 FPS which is very impressive for a custom engine in roblox

2 Likes

One of these days somebody’s going to be able to remake the DOOM engine, awesome work!

1 Like