CVCayden VoogelsGame development archive
Visit options

System reduced motion is always respected.

← Return to the archive

04 / Physics & game feel

FloppyPong

School Project

Control the point of suspension. Learn to work with everything hanging beneath it.

A kinetic Pong experiment built in Unreal Engine with C++ and Blueprint assembly. The mouse drives a tether anchor; the paddle is a separate physics body. Moving the anchor builds momentum instead of placing the paddle directly on the ball.

01 / The mechanic

The gap between intention and motion.

Slow movement lets the paddle follow and settle. A quick change of direction creates lag, rotation and overshoot. That delay turns a familiar Pong action into a problem of timing: prepare the swing before the ball reaches the paddle.

Anchor — moved by inputTether — tension when stretchedPaddle — free to lag and rotate
Conceptual diagram of the source mechanic, not a screenshot of the Unreal game.

02 / Inside Unreal

A free body, pulled off-centre.

FlailTetherComponent deprojects the mouse onto the play plane and moves a kinematic head. Its update path applies slack-tether forces to the paddle only when the tether exceeds its maximum length. Applying force at an offset attachment point creates torque as well as translation.

The paddle enables physics simulation and continuous collision detection. The visible tether is a non-colliding mesh: its appearance and its force model are separate systems.

The ball and the opponent

PongBall uses an Unreal physics sphere with high restitution, low friction and continuous collision detection. Native update code constrains the play plane, manages speed and boundaries, checks goal openings, updates scores and resets the serve.

The blue-side opponent uses a short ball-position prediction and a timed sweep of its target head. It is heuristic opponent logic, not learning AI. The native tick calls this path; its behavior in a particular arena still depends on Blueprint settings and resolved actors.

03 / This browser interpretation

Same central idea. A smaller experiment.

This playable study is newly authored browser physics, not an Unreal port. A 2D rigid paddle, gravity, an offset tension-only tether and substepped ball contacts communicate the central interaction without recreating the arena, score system or opponent.

Contact response uses the paddle’s linear and angular velocity. A faster swing can send the ball away faster. The source contains a custom velocity-transfer helper, but no native caller was found; this browser formula is not presented as the original game’s active collision response.

Unreal runtime tuning and Blueprint overrides have not been verified in this portfolio session. No exact engine patch version or finished competitive balance is claimed.

04 / Development record

What to show next.

Gameplay capture pending

A slow move, a full swing, a miss and recovery, then a ball contact and goal reset.

Future captures can sit alongside the tether settings, opponent sweep and ball lifecycle. No stock image is standing in for the game.

Source & contribution notes

Inspected source: FlailPong 5.8/Source/FlailPong/FlailTetherComponent.cpp, its header, PongBall.cpp, KineticPlayerControllerBase.cpp and GameCameraViewTargetSubsystem.cpp.

The audited Git history records cayden on tether work (c6d1287) and subsequent AI, arena and ball changes (a920c01). This supports those contributions; it does not establish sole authorship of the project’s bundled assets or tools.

FloppyPong. Project notes ready.