obby-game-roblox is an original, browser-based obstacle-course ("obby") game built in the spirit of Roblox obbies — fast, loud, social and a little chaotic — but delivered as its own first-party product rather than as a game hosted on Roblox. The product intent is to let a player drop straight into a course, run, jump and climb through a sequence of obstacles, hit checkpoints, and reach the finish, with a landing surface that sells speed and dare in one glance and a play surface that gets out of the way and lets the course be the star.
The audience is kids, teens and casual players who grew up on Roblox obbies: players who want an immediate, adrenaline-plus-bravado challenge ("can you make the jump?") without installing anything or signing up for a platform. The user (Madani) delegated the build to the assistant; the open questions about browser vs. downloadable delivery and about whether players author courses or the designer authors levels were not answered, so this document resolves them only to the minimum needed to make the accepted core journey — a player plays through an obstacle course and reaches its finish — usable, and keeps everything else out of current scope.
obby-game-roblox is a single first-party web application with two current destinations:
The only accepted active human persona is the Player. There are no other human roles in current scope. The application itself is the system actor that runs the course simulation, tracks the player's progress through obstacles and checkpoints, keeps the timer, and determines when the player has fallen, respawned or finished.
Current delivery is a browser-based game with custom first-party UI. Both destinations are reachable without an account: the accepted journey is a single-session play-through of a course, and nothing in the authoritative requirements establishes durable, privately owned, resumable player state that would require application-owned identity. There is no course-authoring surface, no multiplayer or social layer, no leaderboard persistence requirement, no downloadable client, and no Roblox hosting in current scope.
The product is an original obby, not a Roblox experience. It is delivered as a web application the player opens in a browser: the Landing page is public and anonymous, and the Play page is likewise open to any player without an account. The game's defining state — the player's position on the course, the checkpoints reached, the running timer and the finish — lives for the duration of a play session and is owned by the application while that session runs.
The current horizon covers exactly the accepted core: an anonymous player discovers the game on Landing, starts a course, plays through its obstacles, passes checkpoints, recovers from falls by respawning, and reaches the finish with an observable result. Course authoring by players, downloadable distribution, accounts, social features and persistent leaderboards are not part of the current horizon; they are recorded only as future considerations in Section 11 and must not appear as current pages, controls or acceptance criteria.
Not applicable — no reference directive in this request declares a content_source.
Information and state. The Landing page is the anonymous public entry surface. It presents the game's identity and its obstacle-course premise, communicates the dare ("can you make the jump?"), and offers a direct route into play. It carries no player-specific state and requires no identity.
Primary action. Start playing — the yellow "PLAY NOW" pill with black text and a black arrow, which takes the player to the Play page and begins a course.
Supporting actions and content.
clamp(56px, 13vw, 168px), each line spanning the full viewport width, the second line set in outline and rotated −3deg, overlapping a solid red rectangle that bleeds off the right edge; a black hazard-tape band runs horizontally behind the type at 40% height.Domain entities. Course (name, difficulty tag, obstacle count, checkpoint count), obstacle, checkpoint.
Component responsibilities.
prefers-reduced-motion.States.
Information and state. The Play page is a full-viewport playable obstacle course with a flat HUD. It shows the current course name, a running timer in tabular numerals, the player's progress through checkpoints, and the player's current lives/attempt state. All HUD text sits in opaque rectangular panels with 3px black borders — never directly over the 3D scene.
Primary action. Play the course: move and jump the player character through the obstacles toward the finish.
Supporting actions and content.
Domain entities. Course (name, obstacle sequence, checkpoint positions, finish), player character (position, velocity, grounded state), checkpoint (reached / not reached), timer (elapsed), lives/attempts, run result (finished, elapsed time, checkpoints reached).
Component responsibilities.
States.
FR-1 — Original obby, not a Roblox-hosted game (explicit) As a Player, I should play an original obstacle-course game that is its own product rather than a game hosted on Roblox, so that the experience is a distinct first-party obby.
FR-2 — Discover the game on Landing (required_inference) As a Player, I should land on a public page that tells me what this obby is and dares me to play, so that I know what I am about to attempt and can start immediately.
FR-3 — Start a course (required_inference) As a Player, I should start a course from Landing with a single action, so that I go from the poster straight into play.
FR-4 — Move and jump through obstacles (explicit) As a Player, I should move and jump my character through a sequence of obstacles, so that I can attempt the course.
FR-5 — Reach checkpoints (explicit) As a Player, I should reach checkpoint flags along the course, so that my progress is recorded and I do not lose everything when I fall.
FR-6 — Fall and respawn (required_inference) As a Player, I should fall off the course and respawn at my last checkpoint, so that a mistake costs me progress but does not end the run.
FR-7 — See the timer and course state (explicit) As a Player, I should see the course name, a running timer and my progress in an opaque HUD, so that I always know where I am and how long I have taken.
FR-8 — Reach the finish and see the result (required_inference) As a Player, I should reach the finish of the course and see that I finished with my elapsed time, so that the run has a clear, observable outcome.
FR-9 — Quit a run (explicit) As a Player, I should be able to quit a run from the top bar, so that I can leave a course and go back.
Product context. The Player is a kid, teen or casual player who grew up on Roblox obbies and expects a fast, loud, immediate challenge. They arrive with no account and no setup: they open the product in a browser and want to be playing within seconds. They judge the game on whether the dare is legible at a glance and whether the course is fun to attempt and retry.
Primary goal. Play through an obstacle course and reach its finish.
Distinct accepted responsibilities.
Relevant inputs and decisions. Movement and jump input; the choice of course (PLAY NOW or a course card); the decision to retry after a fall or to quit.
Interactions with other accepted participants. The Player is the only accepted human persona. The application is the counterparty: it runs the course, records checkpoints, keeps the timer, triggers the respawn and determines the finish. There is no other human participant in current scope.
Observable success. The Player reaches the finish, the timer stops, and the run result is shown; or the Player quits and returns to Landing able to start again.
Constraints and provenance. This persona is required_inference from the Planning Scope: the product is an obstacle-course game, so the primary human role is someone who plays through courses. No biography, demographics, permissions or account requirements are asserted.
Muse and headline. Paula Scher — Typography as a playground you can fall off. Obby culture is poster culture: giant stacked words, hard colour blocks, hazard-tape energy, zero politeness. Scher's typographic maximalism gives the game a loud, ownable identity while her flat, hard-edged system stays cheap to render and never competes with the 3D course itself.
Colour tokens (light mode).
| Role | Hex | Usage |
|---|---|---|
| Background (warm paper) | #F2EDE3 | Poster ground |
| Surface | #FFFFFF | Card and panel fills where needed |
| Text | #111111 | All display type and rules |
| Primary (Scher red) | #E63329 | Solid full-bleed bands only, never a soft tint |
| Accent (hazard yellow) | #F5C518 | Single hot accent: CTAs, checkpoint flags, the PLAY pill |
| Muted | #6E6A63 | Secondary text |
| Category (flat teal) | #1F8A8C | Course difficulty tags and section rules only |
Proportion: ~60% paper, 25% black type/rules, 10% red blocks, 5% yellow. No gradients, no translucency, no shadows.
Typography.
clamp(56px, 13vw, 168px) Anton; section heads clamp(40px, 7vw, 88px); sub-heads 28/24px Archivo 800; body 17/16px Archivo 400 with 1.55 leading; micro-labels 12px caps.Shape language. Hard edges only: 0px radius everywhere except 999px pill buttons. Solid colour blocks, 4px and 8px black rules, diagonal hazard bands (45deg repeating-linear-gradient in black/yellow) as section dividers, and rotated type blocks that deliberately break the column. The play surface is a flat HUD: rectangular panels with 3px black borders, no blur, no glass.
Layout. Poster grid: 12-column base at 1280px, 6-column at 768px, single column at 375px. Landing opens with a full-bleed type composition, then alternating full-bleed colour bands (red band = "how it works", black band = course list, paper band = leaderboard) separated by hazard-tape rules. Play is a full-viewport canvas with a black top bar (course name left, timer centre in tabular numerals, quit right) and a bottom-left control legend card; all HUD text sits in opaque panels so it never sits on the 3D scene.
Imagery. Typography is the image. Course cards are flat colour blocks with the course name set huge in Anton and a small isometric line-drawn course thumbnail (black 2px strokes on the card colour). Small pixel-free pictograms for checkpoints, timer and lives drawn as flat black/white glyphs. No photography, no 3D renders on the marketing surface — the only dimensional imagery is the playable course itself.
Readable-text rule. Headlines, wordmarks, labels, numbers, card text and controls stay entirely inside the viewport and their container at 375px, 768px and 1280px, wrapping or scaling to fit, and no other element covers any part of them. Imagery, decoration and motion may be cropped, bled off an edge, rotated, overlapped or cut as the direction asks, as long as it covers no readable text or control. The ticker may cross the viewport edge by design; under prefers-reduced-motion it becomes a usable static arrangement (wrapping rows or horizontal scrolling) so each item can be brought fully into view.
"The poster you fall off." The Landing page is a single asymmetric Scher poster on warm paper #F2EDE3. The words DON'T / FALL are set in Anton at clamp(56px, 13vw, 168px), each line spanning the full viewport width; the second line is set in outline and rotated −3deg, overlapping a solid #E63329 rectangle that bleeds off the right edge. A black hazard-tape band runs horizontally behind the type at 40% height. Bottom-left: a yellow #F5C518 pill "PLAY NOW" with black text and a black arrow, under a 12px caps line "85 OBSTACLES · 3 CHECKPOINTS · NO MERCY". Bottom-right: three flat course cards peeking from the right edge, cut off by the viewport as a promise of more. Nothing is centred — the composition is a poster, not a SaaS hero. The signature move is that the type itself is the playground: the outline word and the red block read as a ledge and a gap, so the poster performs the dare it is selling. The concept recomposes only accepted Landing content and controls; it adds no behaviour, page or destination.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: flat
Landing Hero Motion Brief.
In-game motion. Checkpoint flags pop with a 120ms scale; the death/respawn flash is a single 140ms red full-screen frame. Under prefers-reduced-motion these resolve to their final state without the scale or flash animation.
prefers-reduced-motion, the ticker becomes a wrapping static list and all reveals resolve to final state.Assumptions.
Constraints.
Future considerations (not current scope). Player course authoring, downloadable distribution, accounts and persistent leaderboards, and multiplayer/social features are recorded only as open possibilities; they must not appear as current pages, controls or acceptance criteria.
#F5C518 pill with black text and a black arrow that launches a course from Landing.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!