A 3D Engine in Roblox

Are editable images faster than just frames?

How in the world did you optimize this?? What FPS are you getting?

1 Like

its just a texture, you don’t end up actually rendering the whole 1024x1024 image, only a few individual pixels.

1 Like

This is super cool and impressive!
I just wish Roblox allowed us to execute code on the GPU.

Without GPU acceleration or multi-threading on a CPU with many cores I feel like performance will tank down a lot in graphically intensive scenes.

I’d love to see someone make a game with this but I do feel most people won’t be able to run this on a potato computer very well.
I’m already impressed it can reach a stable 30 fps.

Im getting 60+ FPS at 320x320.

I just used !native, EditableImage, 1D look-up arrays and general code optimisation and a years worth of improvements and optimisations for CanvasDraw.

CanvasDraw 4.0 will be THE custom graphics api.

I think this update may be helpful for improving performance of this module.
Introducing Luau buffer type [Beta] - Updates / Announcements - Developer Forum | Roblox

It wont. Buffers are good for storing or transferring smaller amounts of data. Directly reading and writing to a 1D table is faster I think

This will be amazing for high quality textures! I can’t even wait to start playing around with this. Since I haven’t added support for multiple textures to object files, the resolution is very limited. Now, it is insane! Amazing stuff, thanks so much!

1 Like

the collision does not seem to function properlt
robloxapp-20240107-0000542.wmv (1.7 MB)

The collision is experimental at best, and so is the physics. If you want, you can make your own since that isn’t really my field of expertise. I started to focus on the more internal and general part of the engine instead of its modules, so I haven’t had time to research more.

Wow, this took a while.
New release v2.3 of the Engine, which dramatically improves performance!

I will be fixing the collision and physics modules as well as integrating image transparency when I have time, but for now you can enjoy some higher performance. (Perhaps I could even use buffers to hold triangles?)

Release 3D Engine v2.3 · HeroShiner46/Roblox-3D-Engine (github.com)

3 Likes

New release that makes textures more efficient. This definitely has some horror game potential! (EPILEPSY WARNING)

1 Like
  1. I tested it and it seems like you can only move at a direction at a time. Can you make it so you can move diagonally?
  2. How do you even add images/models to the engine?
  3. :heart: likes

Yes, I can introduce holding down multiple keys. You can also find out how to add models by viewing the wiki page on github: Home · HeroShiner46/Roblox-3D-Engine Wiki (github.com)

If the current instructions are too confusing, I can always update the wiki so that others can also follow.

Basically, get an object file with a single texture that does not exceed 256x256 pixels.

Then, make a ModuleScript inside the Objects folder in the main module of the Engine.

Third, use the structure that is on the wiki and paste the raw .obj file as a string into the area with the double brackets.

Then, make the texture using the CanvasDraw Image Importer plugin and put it into the modulescript.

Finally, set the texture property of the modulescript to the texture that you just put in.

1 Like

Do you plan on keeping on this method? Or do u plan on integrating CanvasDraw 4.0 at some point to get 1024x1024 textures and the image objects.

I’d personally keep both image objects and texture IDs as options in the engine since using the assetID method yields ur code

I will be making another method for inputting an assetid instead, while also leaving this method so that there is backwards compatibility. I’ve also been working on image transparency, and sorting triangles doesn’t seem to slow down anything. This was a big worry for me, but now I am almost done with image transparency.

1 Like

That’s awesome. Can’t wait to see the end result.

Also do u think could have a version that takes a roblox scene and renders the models from ur camera instance? Then it would basically be a shader!

I could create a new version, and I know it’s possible because someone here has already done it. Once I finalize everything, though, I might start making games with this. My dream is to make a Mario 64-esque game using this Engine, which takes a lot of work.

1 Like

Yeah, This is so useful for anything, if you add custom camera CFraming instead of freecam.
There could be other qol stuff (that aren’t needed for sm64) like shaders as model textures and postproccessing. Oh, and isometric camera (maybe by setting 0 fov?).

(let’s hope nintendo doesnt sue you, prob by making it different than sm64? :person_shrugging:)

Those are my suggestions for the engine, by the way.

btuh, you aren’t calling :Clear() at the start of :Update() function.
that’s why it’s what I call ‘buggy mess’ (without the sky)