platformer gameplay · UI · systems

Cumulo-Climb

image coming soon key art

ABOUT THIS PROJECT

A pixel-art climb through the clouds, playable in the browser.

Every summer DGA builds one game together, and this was 2026's: A browser platformer about getting higher, made in Unity over roughly 590 commits by a rotating club team. I moved across three areas rather than owning one, which is the honest description of how a volunteer summer project actually works.

Combo rules that only reward the weak point

Landing on a fresh cloud adds flat points; only a landing on the cloud's weak point calls RegisterBoost, which bumps the combo and scores points times combo. The first version awarded combo on every landing and the score inflated on its own, so the two breaking cases are explicit: the player remembers the last cloud he stood on and jumping off it again calls LoseCombo, and so does a jump that misses the weak point. The combo timer only ticks while grounded, so time in the air never costs a combo, only hesitation on a cloud does.

image coming soon combo scoring

Riding a moving cloud

The ground check is an OverlapBox that returns the collider it hit, and its attachedRigidbody is cached as the cloud under the player. While grounded and not mid-jump the player's vertical velocity copies the cloud's, so he rides it instead of sliding off as it drifts. Movement is assembled into one velocity vector each FixedUpdate, gravity, horizontal acceleration via MoveTowards, jump cut and cloud ride, and written to the rigidbody once, so no two systems fight over the body.

image coming soon riding a cloud

Animation tree and pickups

The animator reads a moving flag derived from horizontal velocity or being airborne, and rising versus falling from the sign of vertical velocity, so the sprite cannot drift from what the body is doing; the earlier version fired animations at the call site and did. Boots and wings swap the sprite set through one SetBoots call. A stun disables the Animator outright and shows a left or right stunned sprite by facing, because a state tree cannot be trusted not to override a one-off pose. The boost afterimage is a coroutine that spawns fading ghost sprites at an interval for a set duration.

image coming soon boots and wings

One game manager owns the state

A PreStart, Playing, Paused and GameOver enum on a single GameManager. Player input and the cloud raycasts check CanControl against it, so nothing moves on the title screen, which used to let you die before pressing start. Death sets timeScale to zero and writes the high score to PlayerPrefs. Settings remember whether they were opened from the pause menu so closing returns to the right screen, and the EventSystem selection is cleared on the way in so a slider selected by click is not flipped again by the keyboard on the way out. Also the UI panels, fonts and the borders that keep it readable when the window resizes.

image coming soon pause menu