[Need feedback] FPS movement system

Hello everyone. I’m working on an fps game and have roughly finished the movement portion of the framework (except sprinting, thats still in the works). I would love some feedback from all of you regarding the smoothness and fluidity of the movement! Here’s the showcase (There’s no audio yet):

Thank you!

1 Like

actually this is better than I thought. I do like the rotation when aiming it feels smooth.

1 Like

Thank you! Do you see any things that could be improved?

maybe add some rotation to the Z axis, also maybe it does go up too much.

1 Like

What goes up?? And I’ll also add some rotation to the z-axis, thanks for the suggestion!

at the start of the video when you start walking, the gun moves too high in my opinion. more subtle movement is what I am refreing to

Ahh alright, I’ll adjust the offsets so it doesn’t have as much vertical movement

1 Like

This FPS movement system looks awesome! It’s realistic and cool! How long did it take for you to make this FPS movement system? I rate it 9/10! What game will you use it in?

1 Like

Thank you for the review! It took about 3 weeks to do the entire thing, not counting breaks. The game is going to be a campaign style fps. Any suggestions to improve the feel?

Sorry for the bump, but I’m still looking for feedback / constructive criticism

Bumping, still searching for feedback

Bumping for the last time, still haven’t received enough feedback

Its… basic.

All I can really see is the gun moving up and down while walking, rotating (changing its yaw) left or right depending on move direction and having a simple rotation when looking around.

I’d recommend changing roll instead of yaw when moving left or right, and variating the movement when walking as right now its just bland.

Here’s the sine functions I used in my game, which is similar to what you already have, which provides left and right movement:

local Time = tick()
local sine = math.sin(Time * 10)
local sine2 = math.sin(Time * 5)
local bobbing = CFrame.new(sine2 * 0.05, sine * 0.05, sine * 0.01)

local modelPos = (camera.CFrame * bobbing)

Right now though, I am working on fine-tuning a slightly more complicated system:

local swayAngle = math.sin(Time * 10 * sprintMultiplier) * math.rad(0.25 * (intensity * 1.3))
local verticalOffset = math.sin(Time * 14 * sprintMultiplier) * 0.025 * intensity
local rollAngle = math.sin(Time * 8 * sprintMultiplier) * math.rad(1 * (intensity * 1.3))

local modelPos = camera.CFrame
		* CFrame.new(0, verticalOffset + script.upOffset.Value, 0)
		* CFrame.Angles(math.rad(Turn1), swayAngle + math.rad(Turn), rollAngle + math.rad(Turn * 0.5 + Turn2))

My “more complicated” all I really mean is that it changes more rotation than position which I’d say gives a better visual.

1 Like

I do change both rotation and position, but I think rotation is too diluted, hence why you only see movement instead of rotation. I’ll be sure to make the rotation pop out more. As for the roll vs yaw, I playtested many popular fps games (GUTP, Phantom Forces, etc.), and they all seemed to include yaw. As for the z-axis movement, yeah I completely forgot about it :sweat_smile:. I’ll add that as well. Thank you for your feedback! Also planning to make the movement more bouncy and quick.