SAMUEL // LEVEL DESIGNER STOCKHOLM, SE

← Back to portfolio

Project breakdown

RyftIn development

A fast-paced, first-person movement platformer with a synthwave theme — mantle, double jump, dash, wallrun, slide and grapple, all drawing from one shared resource pool. Built by a 6-person team (Team 9 — Moving Crew: 3 designers, 3 programmers) in Unreal Engine 5 with AngelScript, starting as a FutureGames project (GP4) and now continuing past graduation, with a Steam page coming soon. I owned onboarding and level design.

Ryft first-person gameplay in dev mode, VHS-filtered synthwave corridor with a speedzone and grapple reticle
In-engine, dev-mode HUD on — a speedzone corridor with a live run timer
26playtests run across production
8movement mechanics taught in onboarding
10→6Intro levels, consolidated after feedback
Steamstore page coming soon

Onboarding — teaching a moving target

My main responsibility was level design and onboarding: the levels players move through, and the tutorial sequence that teaches mantle, double jump, dash, wallrun, slide, grapple, speedzones and the shared resource system quickly and without frustration.

Onboarding-style greybox level with mantle, grapple, wallrun and speedzone elements, synthwave skybox in the background
Onboarding greybox — mantle, grapple, wallrun, speedzone
Greybox cluster of platforms with wallrun bands, grapple points and a speedzone trail
A denser cluster — wallrun, grapple and speedzone stacked together

My approach was driven by playtest data rather than my own assumptions. Over production the team ran around 26 playtests, with testers ranging from people who describe themselves as bad at jumping in games to competitive platformer players. I didn't run the sessions myself, but the documented results — a consistent format with observations per tester — were the main input for every onboarding change. That mattered because the movement itself kept changing: as the dash got faster, general speed increased and jump inertia shifted, gaps that needed a dash in an early build could suddenly be crossed with a double jump, and distances that felt fair at one speed became too easy or too punishing at another.

Iteration, with evidence

Two concrete examples of playtest notes turning directly into design changes.

The dash tutorial that skipped itself

Onboarding-4 was built to teach the dash — but playtest notes later showed it could be finished without ever using one, because the double jump had since gained far more momentum than when the level was first designed.

Fix: widened the gap so a double jump still works, but is noticeably slower than a dash — turning the level into a lesson that faster times come from using the right mechanic, not just reaching the other side.

Ten Intro levels became six

Multiple testers independently flagged Intro-8 as a difficulty spike and the distances in Intro-10 as too marginal for a tutorial sequence.

Fix: the original ten Intro levels were consolidated into six, with more forgiving distances, and tutorial text and mantle surfaces adjusted to reinforce each mechanic individually.

What's still unsolved

Not every onboarding problem got fully solved, and the grapple cost is the clearest example. Testers repeatedly didn't understand how it worked — tutorial text shown mid-action got missed, the VHS post-processing filter made it hard to read, and passive resource regeneration confused the resource tutorial in Onboarding-2. I worked through these step by step (calmer placement, showing text earlier), but grapple cost communication remained unclear to many testers until late in the project. I see it as the weakest point of the onboarding, and it's the first thing I'd rebuild with more time.

Greybox level with multiple grapple points linked by pink cable lines, wallrun bands on either side
Grapple points and their range, the thing the cost indicator was meant to clarify

Where I'd take it next

Ryft is built for two audiences at once — casual players who enjoy the movement and competitive players chasing leaderboards — and the playtests show that split clearly: competitive testers loved the speed and shortcuts, while lower-skilled testers struggled with timing and the difficulty spikes in early levels. My own proposal for closing that gap: a small, explorable adventure world between episodes (after every ten levels or so) with no resource limits and no timer — players can just use every ability freely and enjoy the movement — paired with mixtapes that lean less on time pressure and more on running a level and doing something cool along the way. Competitive players keep their timed challenges; casual players get a reason to stay without the leaderboard looking over their shoulder.

Progression — medals, remixes, mixtapes

Each level is judged by medal (Bronze through Platinum, with a Ruby tier for the best), and each medal unlocks a different layer: a timer, a ghost replay, a leaderboard, or a remix. Remixes stack positive and negative modifiers onto a level — a score multiplier climbs as you combine heavier negatives with the modifiers you want — and mixtapes are curated sets of levels with their remix modifiers already chosen.

Greybox layout of a larger level with wallrun surfaces, speedzones and grapple points
A later, larger-scale level — more mechanics stack as medals unlock

What I'd do differently

I produced fewer levels than I originally planned — the constant movement changes and incoming playtest feedback kept pulling focus back into iterating on existing levels and the onboarding instead of building new ones. In hindsight that was the right call: at jury day we could only show a small part of the full level set anyway, and the onboarding was what actually landed well. Next time, I'd push the team to agree earlier on which movement values are frozen before level design starts, and build levels more modularly so distances can be adjusted quickly when those values do change.

← Back to portfolio