Throwing Roblox's humanoids out the window with my custom character system: HLNE

Hello developers!
One of the things I have always wanted to do on the Roblox platform is make something truly original, something made from the ground up by me, myself, and I. My latest project/game, titled “Starving Sorority”, is where I wanted to express this originality to its fullest extent!

This post is a long one… and I mean like a REALLY long one… so if you want to get to the interesting stuff, I suggest skipping “The Nitty Gritty Introductory Details…” and scrolling down to where it says “Why Don’t You Take a Look” in big bold letters, you can’t miss it.

The Nitty Gritty Introductory Details...

The Task at Hand? Get rid of Roblox’s default player character systems and replace them with my own. This means no more humanoids, no more default animations, no more default controls, no more default physics or collisions, no more default sounds, no more default replication, no more anything that is provided by Roblox. The other, most important part of this task for me personally, was to do all of this while not making the system seem as though it was completely different but rather an improved upon form of the systems already in place— with my own personal touch!

Now don’t get me wrong, Roblox’s tools given to developers are amazing. The base tools provided are meant to make it easy for someone to just make a game without having to worry about all the complicated stuff like networking multiplayer servers and setting up player controls…

but… being the stubborn person I am, I decided to throw all of those base tools out of the window and make my own. Why? Because I felt like it.

Introducing, a system made from the ground up, the Haptic Linear Normal Engine (or HLNE).

Now, the name itself probably won’t make any sense to most people, and that’s not really you’re fault- it’s mine. The name relates to some stuff going on in the background that I don’t really want to share as it’s super proprietary code that isn’t really meant to be open sourced.

TLDR: What you’re looking at here on this post is simply put, a custom player character system.

This task has been quite an enormous feat for me personally, but I’m glad I decided to work on it. The reason I wanted to do this in the first place was because I wanted to control every aspect of characters within the Roblox game engine. I’ve had dreams of making it so that players could have deformable mesh models instead of chunks for arms, being able to make it so that players can look like different materials given different situations (ex. players skin will look shiny when in the rain), being able to implement fluid animations and sounds into these characters, and much more. The system I have worked up has allowed me to control every single aspect of these Roblox characters to an immense extent.

Why Don’t You Take a look!:

Player Materials

Testing out what different player materials might be like, take a look at these few images!
This image below shows what a character would look like normally.
image

However, this is kind of standard, and nothing too special…
What if, I could make it so that within my Roblox game it rains, and when it rains— if a player is outside and exposed to said rain— the player’s skin turns shiny to represent wet skin. Well now I can do that!:
image
image
Not only is this task now incredibly easy to complete, it’s also easy to write code for!

Custom Controls

With mobile players making up a super huge part of Roblox players, it’s important that the controls for any given game are set up flawlessly and easy for any new user to figure out. Now, Roblox’s default tools are great, don’t get me wrong… but I wanted to be able to customise how the controls looked, and there was only so far I could get with that using the default tools and API. Now with this system, I can change mobile controls to look like whatever I want, I can make it control completely differently, I can customize it to an extreme extent without the user GUI being clunky or bugged out!


In the image above, the two squares shown on the screen represent touch controls. The system I have quickly whipped up is supposed to resemble Roblox’s Dynamic thumbstick. While it doesn’t look great right now (mainly because I have focused on working on other things first and this isn’t finished yet), it has as ton of potential!

One of the things I found quite annoying about mobile controls in general is that you can’t really just use one option and expect it to work for all devices. Some people play on tablets, which have different resolutions than many desktop players, and the physical size of the device also plays a factor into how well controls can really work for a given player. Some people play on phones, which are much smaller, and would require different boundaries for buttons and controls. Etc.

It can be very hard to work with Roblox’s default systems when it comes to controls because of these factors. Not because Roblox’s controls are bad, but because they are actually quite amazing by default and not really meant to be altered too much. Roblox recognized how important controls are when it came to mobile players, and setting a standard for controls in general was the move they chose (which was smart and the right choice). However, for someone as stubborn as I am, I don’t like the standards and I like to break them to try to make something different. I’m like a rebellious teenager trying desperately to stand out from their parents. Sure, something like this might not be needed… you might even consider it something that’s useless— but I sure think it’s cool and I had fun making it different so that’s all that matters to me!

Custom Player Models

One thing I mentioned about this system was “getting rid of humanoids”. And well, I definitely did that! Here’s a look at the structure that the player models take place (using my player character for reference):


Now you might be wondering… “Why would you ever do something like this? Seems a little bit extra, and frankly I think you’re an idiot for wasting your time working on this. I mean come on, the humanoid system that Roblox provides works just fine, don’t fix something that isn’t broken.”

And to that I say… jeez calm down, it’s not that big of a deal lol.
No but in all seriousness, I will say that this part of the system is definitely a bit extra. It came down to being something that I myself wanted to accomplish and not being something that is really super necessary.

If someone were to ask me if this were something that they should also try to implement in their game, I would respond with: "heck no."

The real reason I wanted to implement this into my system was, simply put, because I felt like it.
I wanted to make it so that I could use custom meshes for my characters, and use custom animation systems as well. I wanted to make it so that these characters, in a multiplayer setting, could be stored in memory and then loaded back into the workspace whenever I felt like doing so. I wanted to be able to control every aspect of these characters in my own way, and while doing this was super unnecessary, I accomplished what I wanted to do and I had fun doing it!

And hey, as a little bonus, at least it’s harder to use fly hacks with these characters! (oh yeah, did I forget to mention? These characters have completely custom replication code, so your standard exploit scripts won’t work as easy with these characters! Checkmate exploiters!).

Now that you’ve taken a look at all of that, I think I’d say its time to end the post. It’s already gotten pretty long and I don’t think I can type for much longer. (Who am I kidding, I write code for hours on end, I’m just lazy and don’t want to write more on this post lol).

If you actually read all of that, then jeez man. I mean, this post was kinda just meant to be a personal log for myself, you didn’t actually have to do that. (But I do appreciate it though).
I’ll be willing to answer any questions you may have about what I’ve done as well, so feel free to ask me anything!

Plus, what you’ve seen here is just the beginning of my system. The reason I made this thread was mainly because I wanted to document my progress in a better way than I have been in the past, and I’d rather include stuff that I know I’ve already completed rather than stuff that’s still in progress.

For reference though, here’s some more thing’s I’m planning on adding:

  • Inverse Kinematics for character animations (mainly feet).

  • Fluid Animations (ex. when you press E to open a door, the game doesn’t teleport you into a set position to animate your character opening the door, but rather the animation is dynamic).

  • The ability to sync up a dance/emote with another player in game.

  • Dynamic head turning/focusing on objects near the player (like other players walking by).

  • Something I want to call “Look at the camera mode”, where if you want to take a picture with some of your friends in game you can have it so that their characters look at your in-game camera as though you were taking a photo.

  • Footstep particles, noises, and possibly imprints on the ground.

  • Animated mesh clothing that moves given player movement but also via other aspects as well (example being wind blowing on your characters shirt). Not using cage mesh’s though, I mean like clothes specifically made for different character models to have designs be consistent and uniform to the players body, take a look at the drop-down below.

This is the drop-down below

Alright that’s all I have for now. I doubt you read any of this because like, reading is boring, but thanks for taking a look at my post anyways! MLA Citation for this thread lol

52 Likes

This is more than a few steps further into the rabbit hole than I dare tread. No “defaults” I certainly agree with!

4 Likes

I have no idea what just happened and what i just read, but i like it.

5 Likes

This looks great, well done! I’ve considered throwing Roblox’s character systems out the window as well (for me, I want to have more control over what exploiters can change on their characters, so I can fight them better from a client standpoint). I’ve never gotten around to it, but it is impressive that you did. keep up the great work!

4 Likes

If you’re planning on doing something like this, be prepared for a lot of work! Exploitation of humanoid models is something that I considered while making this and putting it into my project, however I don’t think anyone should try to replicate what I did here just for exploit protection. A server sided script looking for humanoid changes could probably work a lot better and more efficiently. It does make me question though, why did Roblox choose to make humanoids the way they are? There’s quite a lot of things that aren’t explained about humanoids, and it’s been something that I’ve been trying to find information on for quite a while. The way that humanoids are handled, textured, and replicated to the server aren’t really well documented… but maybe that’s just because Roblox is trying to keep their systems safe? Who knows lol. I’m glad you enjoyed my thread, thank you for reading it!

1 Like

Humanoids definitely are annoying with anti-exploits. If a client changes them, then the server changes them, the client doesn’t seem to see the changes. I definitely wouldn’t just make my own system just so I could have it secure from antiexploits, I’d do it for a plethora of different reasons :wink:

1 Like

Hopefully you make this a resource to the community at one point. Love it! Any way I could use this for my game at any point?

1 Like

Unfortunately, the code is super proprietary and requires a bunch of sacrifices to be made for it to work. I have been developing this system specifically for the miscible engine (aka, the engine I made for Starving Sorority 3.53* - Roblox, my game, to run off of). This code won’t work on a normal Roblox studio environment, and will end up throwing tons of errors.

The environment you see on the game Starving Sorority is completely different than anything you will see on Roblox, and if you were to open it in Studio, it would be like working with a completely new or altered API.

However, even if I were to make it open sourced, I still think many people wouldn’t find much use of it themselves as developers… or they might find use of the systems, but they would be difficult to use compared to normally developing. For my game specifically, this system makes a lot of sense and it’s literally built for the game itself. However, for other games it might not make sense.

Let me list off some of the things I sacrificed in order to have this system working, just for reference.

  • Roblox Camera Scripts are no longer in use, I decided to write my own scripts which are now the only way that your camera in-game will even work.
  • Humanoids are no longer in use, so this means no clothing or avatar textures (except for mesh items like hats and accessories)
  • Roblox Starter Scripts are completely gone, never used. If you were to try to put something in the Starter Scripts folder, nothing would happen.
  • Roblox Starter Guis are completely gone, never used. Again, same like above.
  • Roblox Physics, Sounds, Collisions, and animations are no longer controlled automatically— I have to write the code for those things to make my systems work
  • The reset button doesn’t work anymore, also your character has no health. (However I will be making the reset button do something else, possibly as an “unstuck” option or a way to update your character instantly).

I think this would be enough to turn people away from this system.
So then, you might ask “Why make these sacrifices? Seems kinda dumb.”
and to that I say, well yes— for any other game but mine.

What I mean by this is that a lot of the sacrifices I’ve made are sacrifices I am willing to make up for.

Sure it sucks not being able to have humanoid clothes anymore, and it would seem like that would be really annoying for players themselves as they can’t really wear what they want to… but in my game there are 3D mesh uniforms like a school, so it’s to be expected that not every player gets to wear what they want.

Sure it sucks that Roblox physics don’t really work anymore, but for my game I wanted something simple and I didn’t want players to be able to glitch through walls or get flung across the map, it’s slow paced so I don’t need advanced physics.

Sure it sucks that Roblox characters no longer have health or that the reset button doesn’t work, but for my game I don’t use those systems. I use custom health meters, and I am also planning on changing how the reset button works so that people don’t have to wait to update their characters in game or lose progress.

Hopefully you get the point. And unfortunately, while I can’t provide these exact tools to users, I have made other tools that I am planning on releasing in the future that will work with any other roblox game. Most of these systems I had made before I started working on the miscible engine, so they will work with anything!
Here’s what you might want to look forward to:

  • Automatic Character Appearance Updates, without needing to reset.
  • Inverse Kinematics for Roblox Humanoid Legs
  • Synced Animations across Roblox Characters
  • Unloading and Reloading of Roblox Character models
  • etc.

I’m not sure if I’ll actually end up making any of these public or not, but if I get high demand for them I might. It just depends! Sorry I couldn’t exactly provide you with these tools, I’m extremely grateful that you think they are nice and that you’d want to use them. Hopefully I will come out with something that benefits a lot more developers than just myself, when I made these tools I wasn’t really thinking that they were worthy of making public resources so I never really planned to release them :sweat_smile: guess I should have thought otherwise. Thank you for reading my post, I appreciate it!

8 Likes

This is cool, my favorite part is the checkmate exploiters, however I might not need the flight anti exploit as in my “top” game you can fly.

As a personal humanoid hater myself I found this post to be amazing. The system seams to have some issues when you tab out of roblox as you continue walking even when you don’t press the buttons.
Also I want to do away with humanoids myself however don’t quite know where to start.

1 Like

Yeah, I’ve noticed the issues with the control system, though I haven’t put much focus back into it just yet as I’ve been working on other things (animations, foot IK, gravity, etc). The way that it works right now probably isn’t the most ideal, as it’s using tables to keep track of what keys are being pressed. However, I’m sure this will be relatively easy to fix, I’ll make sure to work on it next! Thanks for reading my post and thanks for the feedback, I appreciate it!

1 Like

This might be a useful reference for programming your own IK

1 Like

Wow this is amazing! But am I the only one who was confused about the MLA Citations lol? (I mean in my defense, it’s a Roblox thread not a scientific paper) Anyways great work! :​D

This is an amazing resource and ROBLOX Developers should take note just into the complex custom usability and to factor in the ability to fully Obfuscate this and make it entirely against hackers is entirely possible too.

I have seen this used in professional projects Authors such as Quenty designed entire custom characters for his boxing game, hence the same problem of negating hackers knowing too much about your character model is again powerful in itself.