Movement
The player character will be a ball and have a spherical collider.

A lot of the movement for the player is inspired by Marble Blast Ultra or Marble It Up!, which my research on can be found here, but it does not need to be a total replication. The main goal is easy and intuitive but precise movement and rolling over all else.
The player character should have decent weight to interact with objects but movement should not feel heavy or sluggish.
Movement input should roll or move the ball in the direction of player input on the horizontal plane. This should always be relative to the camera, e.g pushing “forwards” or “up” on the joystick should always move the ball forwards, away from the camera.

The player should also have some air control, aka a small amount of force should push the ball in the desired direction when the ball is in the air. The ball should also start to spin in the direction of input in the air.


Momentum from rolling/spinning in the air should transfer to speed in that direction when landing in a satisfying way:

Please refer to my Unity prototype for inspiration on player movement & for a general gist. Only use this as inspiration as the player movement in the prototype is not as satisfying as it could be!
Abilities
The player starts a level with and has a maximum of four ability charges. One ability cast takes away a charge. This is measured by a bar at the bottom-left corner of the screen.
Charges can be refilled by collecting Energy Shards scattered throughout the levels. One shard will refill one charge, and an Energy Cluster will refill the entire bar.
Casting an ability has several phases:

- Selection Phase: When the Ability Button is tapped the player sees a preview of what they will be affecting, whether that is one object, multiple, or the area of effect. Objects affected will be highlighted with a thick outline.
Time slows down at the beginning of this phase.
The Cancel Button will cancel the ability from being cast. - Adjustment Phase: When the Ability Button is pressed again and held, the abilities target position or object is locked in, and the player can change the strength and/or direction of the ability using their movement input.
The players movement control will be paused during this period but this should be fine as time would be slowed down greatly. - Casting Phase: When the Ability Button is released the ability is cast.
Possession
This is the ability the player starts with.
Possess any object and move it directly. Objects will be pushed and rolled at the same time like when controlling Eta, but cannot jump.
This will mainly be used for moving objects into place to then platform off of, but there could be plenty of interesting gimmicks for this like squeezing through tight spaces or increasing the weight on a platform for a puzzle.
Gravity
Changes the force of gravity in a set area of effect.

The area of effect will have a small circular radius and extend infinitely up and down up until it hits a floor or ceiling. The area of effect will be shown both during the Selection phase and after until the ability’s effect ends.
When in Adjustment phase the set gravity will be represented by a spatial arrow in the area of effect, with arrow direction corresponding to gravity direction and length corresponding to gravity strength.
This ability’s effect will last for 10 seconds.
Velocity
Sets the current velocity of the selected object at the current moment.
If no object is hovered over, select the player or whatever object they are currently possessing.
When in Adjustment phase both the magnitude and direction of velocity can be affected and will be represented by an arrow coming from the object. The direction will by default be facing the same direction as the camera.

The size of the arrow corresponds to magnitude (similar to Breath of The Wild) and grows as the player pushes in that direction.
Friction
Sets the friction of a surface.
The selected surface may be any non-vertical surface, so any slopes and floors can be affected. The surface will be highlighted in the Selection phase, both with an outline as well as lines indicating the friction amount.

The lines on the surface will vary from soft, low-frequency waves to harsh high-frequency waves as friction increases.

When in Adjustment phase the up and down directional input will correspond to friction, with “Up” directional input corresponding to high friction and “Down” directional input corresponding to low friction.
This ability’s effect will last for 20 seconds.
Elasticity
Sets how bouncy a surface is.
Any surface may be selected. It will be highlighted in the Selection phase.

The circles on the surface appear larger as elasticity increases. At lowest elasticity they become dots.

When in Adjustment phase the up and down directional input will correspond to elasticity, with “Up” directional input corresponding to high elasticity, meaning objects will bounce more off of it and “Down” directional input corresponding to low elasticity, meaning objects will not bounce off of the surface.
This ability’s effect will last for 20 seconds.