Miscible engine - A re-imagined Roblox subset for advanced pipeline workflows


Hello developers!

For quite a while I have been working on extremely experimental things within the Roblox game engine, so much so to the point where it has garnered the attention of some when posting small snippets of my creations. I wasn’t exactly planning on making any of my code open-sourced, but I’m reconsidering. Still not exactly sure if this is something I want to do, but what the heck- I might as well just make a post showing off what has been done so far.


miscible-engine-icon-small So, miscible engine! What is it?


Basically, it’s a reworking of Roblox’s game systems.
miscible engine fundamentally changes how Roblox functions, in regards to both scripting aspects and non-scripting aspects.

“Well yeah, but how does this change?” Is what some of you are probably asking right now. While it’s not set in stone, I’ll try to explain briefly some ways miscible engine may differ.

For one, when I mean “change” I don’t mean “oh I just like made it so that different items go in different folders and then ended up changing some of the icons”. When I mean “change”, I mean that the way you interact with Roblox studio will be completely different, from scripting to designing guis, to even lighting.

Now of course, these changes are still within Roblox’s limits. If Roblox just let everyone write C code for the game and have servers run completely off of custom code I assure you I would have done it by now. However, even with the limits in place I have been able to re-write a lot of code for Roblox.

Example: One major change for miscible engine is how client sided storage and server sided storage work. When it comes to Roblox multiplayer games, one of the most important aspects of the game is the actual player, and this is where miscible engine took the plunge into development. The HLNE system for miscible engine (Throwing Roblox's humanoids out the window with my custom character system: HLNE) is extremely custom, everything from the character models to the camera scripts.

And that’s just one example. miscible engine has changed much more. A huge chunk of Roblox’s default systems, classes, services, and settings have been completely changed.


miscible-engine-icon-small Alright we get it, it’s another one of those “re-writing” of Roblox. Tell me one good thing that this engine actually provides that others don’t.


Well actually, there are many things that this engine can do, and even more things planned to be added. How about we list them off?

The List (it's long)
  • Custom replication between server and clients
    image

  • Custom player character handling system (HLNE, or the removal of humanoids)


    Character Replication Test - Starving Sorority - YouTube

  • Custom lighting particle system

  • Custom physics simulation and interpolation

  • Custom server joining management (sending players to servers)

  • Custom chat system

  • Custom fonts
    image

  • Server reliability systems

  • Smooth update integration systems

  • Physically based sound systems (spatial sound interacting with the environment)

  • Full 144fps (and higher) support for rendering, animating, and physics simulations.

  • Client interpolation of network instances

  • Exploit prevention, by nature

  • Client based instance management

  • 3D GUIs rendered with full PBR capability
    image

  • Vector field and parametric based particle systems

  • Server logging/datastore events

  • Datastore reliability, caching systems

  • Server SOS system (if server has issues, sends data to healthy servers to prevent loss).

  • Client sided storage and caching

  • Character meshing systems (similar to Roblox cage meshes)

  • Custom interpolation (bye bye tweening!)

  • rawdata based referencing for workspace assets

And I got too lazy to add more. You can get mad at me all you want, my attention span is only so large.

And obviously, miscible engine can’t do everything just yet. But if you’d like, you can take a look at what’s planned.

What's planned.
  • 2D workspace (for those who might like pixels a little more than most)
  • Custom skybox HDRI technology
  • inverse kinematics for custom HLNE rigs
  • texture scaling
  • custom animation systems, working directly with the Blender pipeline. (woo Blender!)
  • new gui formatting (because anchor points kinda suck).
  • render on-top / render layers (because Roblox hasn’t added it).
  • Hair particle systems
  • locally based assets (unsure if possible, but if it is I’ll make it happen)
  • emulation of player ID’s, usernames, and display names
  • physics periodical syncing with server.

and more!


miscible-engine-icon-small So yeah, that’s miscible engine for you.


I don’t really know how to end this post, but regardless I feel as though it’s something good for me. Documenting things is always a good thing, it shows progress. I’m still not sure if I’m planning on releasing this to the public or not, so don’t expect any promises. If I were to release it to the public, it would be through licensing with partnered users/studios. miscible engine isn’t really in a good enough state to be handing out to everyone just yet anyways, and If I end up giving it out to people I want the systems to be as flush as Roblox’s default systems are.

But I mean, hey, if you are actually interested in this thing-- let me know. For now it’s just kinda a showcase, but it doesn’t have to stay that way.

I’m going to work some more to make it actually usable, as for right now miscible engine is lacking sufficient GUI controls and documentation.

Man coding is for nerds, how does this stuff not bore you to death. Like, I lost a couple brain cells writing this mess. Anyways, thanks for reading my boring post. Maybe I’ll make another boring post in the future who knows.

Cheers,
miscbsdf
watcher-small

14 Likes

not a really good scripter so like the only thing im like eh interested in is like custom fonts
also move to #resources:community-resources maybe?

2 Likes

I wouldn’t consider it a community resource, as it’s not really giving out a resource-- just showcasing it almost.

Also noted about the fonts! My plan is to actually work on a second version for the font, that will allow you to have resolutions of 1024x1024 per character typed. As of now, the system uses image sheets, but it’s entirely possible to have each character a separate image. Wouldn’t be too much of a hard thing to change either.

If you want to see the post I made on fonts you can check it out here: Roblox doesn't support custom fonts, so I said screw it and made my own font
It’s a little lackluster, but you’ll get to see the font more closely!

Thanks for reading my post!
Cheers,
miscbsdf

1 Like

This seems amazing. You have gone to a very far extent and I love the look of the engine! I hope you open-source this soon so others can use it for their games too! Thank you for extending Roblox’s limits :smiley:

1 Like

Hey thanks for the comment! I appreciate it.
If I do end up making it available to the public, I want to make sure that those who want to learn miscible engine will be able to access it and all of it’s documentation.

Not entirely sure I’ll be releasing it for free for commercial use, but I find importance in allowing those to learn. Without the free trials and educational licenses out there I wouldn’t know as much as I do lol- so if miscible engine ever becomes something that is public, it will be available to the students first.

Cheers,
miscbsdf

1 Like

Seems like some really cool features in there. It would be good to see a vid of some of it’s capabilities. Flushing data to a healthy server from a panic’d one sounds a fantastic idea, as well as the Exploit prevention, by nature

Hey thanks for the comment! I’m glad you find it interesting! I actually do need to make a couple of videos for some of the backend stuff, I just haven’t gotten around to it.

As for the exploit prevention by nature, one major factor to this is actually 1) the custom replication system the engine has and 2) the custom character system. The engine actually completely scraps the idea of using humanoids for player controls- which is a major reason people can fly hack and etc. One would have to write a completely custom script to be able to exploit, and even then if they did that the server would detect an issue and flag that player.

I’ve had multiple hackers come and test on the engine before, with generic fly hacks and camera movements, and none have been successful. So the engine managed to stop them client sided without having to even calculate anything just yet.

I’ll make sure to make a video on it, and I’ll reply to you when I’ve made one.

Cheers,
miscbsdf

1 Like

For a second I thought you had changed the roblox player! Guess I still got to play with 20 fps in jailbreak

But cool. But someone told me roblox says modifying their code is illegal?

Edit : found it. The TOS says

Intellectual Property
Ownership of our Intellectual Property. The visual interfaces, graphics, design, compilation, information, data, computer code (including source code or object code), products, software, services, and all other elements of the Service (“Intellectual Property” or “IP”) are protected by law. All IP contained in the Service is our property or our users’ or third-party licensors’ property. The IP includes UGC that has been licensed to us by our users under Section 6(B)(3) below. Except as expressly authorized by us in these Terms, you may not make use of any IP contained in the Service unless you get separate permission from the owner. We reserve all rights to the IP not granted expressly in these Terms.

1 Like

They have said that they made all of the systems, no modification of Roblox’s code was done. All from scratch apparently.

That’s allowed then but most of the things are © to roblox.

Thanks for the comment! Not sure exactly what you mean by changing the Roblox player, however I would like to clarify some things about the code.

None of the code Roblox has made for the humanoids/starter player have been modified, they have simply been disabled or excluded from the engine. Everything character wise, from controlling with WASD, to moving your camera with right click, to displaying the character mesh, is completely written from the ground up.

The character system does use Roblox meshes for the actual character model, however I’m pretty sure it’s fair to say that these meshes are allowed to be used, and miscible engine does not claim to own these meshes. However, in the situation where Roblox doesn’t like what I’m doing and insists that usage of player character meshes is infringing on copyright (despite the fact that it would be on their own platform) miscible engine could easily substitute these meshes for something else.

Cheers,
miscbsdf

Hello, miscbsdf,

I understand now. So that means you will not face any © from roblox.

Also from what I mean by Roblox Player is that roblox player is Very un-optimized for example Minecraft at 16 chunks render distance gives me a stable 60 (it has no cap)

A chunk is 16x16 area, so you see how much work the processor will go through to load that area

Now onto roblox, when I tried playing jailbreak I was getting 30. I find 30 playable but when I get into the car. It is uncontrollable. I suspect the fps is a culprit because my other pc has no such problems and runs it at 60

So roblox is pretty de-optimized. I was thinking that you had modified roblox player to make it more Optimized :sweat_smile:

I wouldn’t say Roblox itself is unoptimized, but rather it depends on the game. For a game as large scale as Jailbreak— with thousands of parts, unions, meshes, and more, there are bound to be performance hits. This isn’t, however, dependent on the Roblox character themselves. The reason you are getting performance hits is because 1) the nature of the game (with hundreds of assets and computations going on in the background) and 2) the nature of the device on which you are playing the game.

miscible engine does include some efforts in attempt to make games run more smoothly, however I didn’t write about them because these features aren’t too appealing to the advanced user. If an advanced user knows the ins and outs of the Roblox engine, they are probably going to know how to make things efficient in general, so these features probably wouldn’t be “game-changing”— hence why I didn’t highlight on it much.

However, for the inclined, here are some things miscible engine does in the background in attempt to run games more smoothly.

  • character replication is interpolated to prevent a jittery look for laggy players
  • players have a render radius, which controls what is replicated to the client and acts as a filter for clients that can’t handle as much.
  • StreamingEnabled is actually not something that miscible engine uses, and actually can break the engine (it is left off by default), but this is because we have made our own system for streaming that accounts for the individual client dynamically.
  • player models will be using meshparts, which are much better for performance (some models already use meshparts and mesh deformation)
  • computations are done (for the most part) client sided, which makes animations smooth and free of lag. (this is kinda vague, but for things the client can handle miscible engine tries to have things done on the client).

and much more.

Ah. Very cool indeed. But a empty baseplate gives me 50 fps do you have a download to this cool engine indeed :eyes:

The engine isn’t available to the public yet unfortunately, if I do end up making it available to the public I will make sure to make a reply to this post of it.

Ah that’s sad. But I understand. The engine is great. Keep it up

One feature idea I have for your engine is

Live coding / changes

Basically I was watching a video called “coding with notch, the creator of minecraft”

Where as soon as he made a change to the java code. The change took place without him even reopening the window

I was wondering if this could work with studio, like using play button, it errors, you edit the code, it updates without you restarting the game!