Custom 3D GUI Game Engine With Textures

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

https://www.roblox.com/games/273735085/RooM-V2-03-9-Alpha
Sooner then you expect

Will this be open source? if so when? I really like this I want to create my own game using this!

well thing is, it’s still the ROBLOX engine. It just “looks” like doom. I’ve also recently started work on an upgraded version of this engine with textured floors and ceilings. So I guess this is now the closest thing to the DOOM engine in roblox (it’s just missing enemies and guns)

3 Likes

I don’t plan to open source this at the moment. There are also heaps of problems that I would need to fix too. I would also need to clean up the code a bit since it’s quite a mess. It is also still partially an unfished project.

2 Likes

Sorry to bother, but I’m working on my own version of this right now. How did you translate this into textures?

Oh I never ended up using this method. The scaling was way too confusing to work with. Especially with some textures having different resolutions

Oh, thank god its not only me, thanks.

1 Like