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.
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!:
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.
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