How do i make custom collision system similar to Team Fortress 2

I want to make a custom physics movement system similar to Team Fortress 2 in relation to players collision. Are there any tips and guides to how i can make a custom collision box (bounding box) for characters that’ll interact with other playes and the environment?

-Goals

  1. Have a custom collision system. Preferably a bounding box similar to Team Fortress 2 where it’s just a box that’s always upright and doesn’t rotate, it also has to be able to change size from bottom to top when jumping and top to bottom when it’s crouching, if in an area where it can’t stand (like a vent) the bounding box must still be in it’s crouched size.
  2. Have players character in the bounding as visual. Players with whatever accessories and clothing they’re wearing must be visible, they’re just there for visuals and they can’t be collided with since that’s gonna be the bounding box job. It must be possible to have that character use custom animations that are stored in-game if it had any.
  3. Be able to equip gears. Gears must be equipable and they have no collision, they must not interact with the environment.
  4. Players character must be able to rotate but bounding box doesn’t. Preferably with the legs only moving after the players head moved a certain amount though that isn’t necessary.
  5. Custom hitbox and pose. Hitbox is placed on the player character, and the pose would just be a t-pose if there’s no custom animations or they somehow broke.

Video For Reference:

More information could be added in edits

If you have to ask for an entire system, you’re not skilled enough as a developer to attempt this. Simply do smaller projects first, and learn Roblox scripting. You won’t get anywhere without learning the small things.

Im asking for any guides or tutorials, not for someone to make it for me. i found a few scattered forum posts but no videos related to it (except the one in the post but it’s just a showcase)

Right, which you can learn the basics of all these things on youtube, i.e just look up “custom character movement” or “custom hitboxes roblox”.

Like I said before, if you have to ask for it, you’re likely not skilled enough to do it, and you’re just going to frustrate yourself over and over again while attempting to do it.

I agree with you, but, even though it is frustrating to not be able to do something, taking on a big project as a beginner can be really rewarding. I’m not very skilled myself, but I have come a long way in a reasonably short time by just attempting to do something big. Responding to the question, I would recommend creating a part welded to the humanoid root part and updates its size according to the height of the character. To do this, you can use

model:GetExtentsSize().Y

You can check Chickynoid’s CollisionModule, the Sweep function is similar to a blockcast, though you need to create the entire world in the form of data for the module beforehand, and you can only have one box size (unless you figure out a way to have more), it gives stuff similar to what a trace would return in Source games so you can kind of use this if you’re copying Source Engine movement for any reason.

And there’s an implementation of Source movement, except ladders, surfing and some other things there (it uses a different collision module which is less efficient though)

This wouldn’t be very good, while a decent beginner implementation, it’s not advisable to create a part for hitboxes, but rather use vector math to determine where corners are.

Use either character controller of fork chikenoid (pain.mp3) or wait for character authority update to release (best option)