Skip to content

🎮 Add an Interactive Space-Themed Mini Game to the 404 Error Page #136

Description

@krishkhinchi

Description

Overview

Kepler already features a visually polished 404 "Object Not Found in Orbit" page that matches the Mission Control aesthetic. While informative, the page is static and offers little engagement for users who accidentally navigate to an invalid route.

Inspired by the Google Chrome Dino Game, this issue proposes adding a lightweight, browser-based space-themed endless runner that users can play directly on the 404 page while deciding where to navigate next.

Unlike the Chrome Dino game, this mini-game should be fully aligned with Kepler's futuristic space theme. The player should control a spacecraft navigating through orbital debris and space hazards, reinforcing the project's focus on satellite operations and space traffic management.

The game should load instantly, require no external dependencies beyond the existing frontend stack, and remain optional so it does not interfere with the primary purpose of the 404 page.


Objective

Create a small, polished, and performant mini-game that transforms the 404 page into an engaging experience while maintaining Kepler's Mission Control design language.

The game should be simple enough to understand within seconds but enjoyable enough to encourage exploration of the project.


Game Concept

Instead of a dinosaur running through a desert, the player controls a satellite, spacecraft, or autonomous orbital drone flying through space.

The objective is to survive as long as possible while avoiding obstacles.

The longer the player survives, the higher the score.


Theme

Everything should match Kepler's branding.

Examples include:

  • Spacecraft instead of a dinosaur
  • Space debris instead of cacti
  • Asteroids and inactive satellites as obstacles
  • Stars and nebulae as the background
  • Orbit lines and telemetry effects
  • Cyan HUD elements
  • Mission Control UI styling
  • Space-themed sound effects (optional)

The game should feel like a natural extension of the dashboard rather than an unrelated arcade game.


Gameplay Requirements

The game should include:

  • Endless gameplay
  • Increasing difficulty over time
  • Score counter
  • High score saved in Local Storage
  • Pause and restart functionality
  • Collision detection
  • Smooth animations
  • Responsive controls

Suggested controls:

  • Space → Boost / Jump
  • Arrow Up → Fly Up
  • Arrow Down → Descend
  • P → Pause
  • R → Restart

Support both keyboard and touch controls for mobile devices.


Obstacles

Possible obstacles include:

  • Space debris
  • Defunct satellites
  • Rocket bodies
  • Asteroids
  • Solar flare bursts
  • Collision warning zones
  • Broken satellite panels
  • Orbital junk clusters

Obstacle speed should gradually increase as the score grows.


Collectibles (Optional)

To make gameplay more engaging, add collectible items such as:

  • Satellite batteries
  • AI cores
  • Navigation beacons
  • Fuel cells
  • Data packets
  • Shield boosts

Collecting these items can increase the score or provide temporary power-ups.


UI Requirements

Display a compact Mission Control HUD showing:

  • Current Score
  • High Score
  • Distance Traveled
  • Current Speed
  • Game Status (Paused / Running / Game Over)

When the player crashes, display a modal with:

  • Final Score
  • High Score
  • Play Again button
  • Return to Dashboard button

Technical Requirements

  • Build using React and TypeScript.
  • Use HTML5 Canvas or lightweight SVG rendering.
  • Avoid heavy game engines or unnecessary dependencies.
  • Maintain smooth gameplay at 60 FPS.
  • Store the high score in Local Storage.
  • Keep the game modular and reusable.

Suggested Folder Structure

frontend/
└── src/
    ├── games/
    │   └── OrbitalRunner/
    │       ├── Game.tsx
    │       ├── Player.ts
    │       ├── Obstacles.ts
    │       ├── Physics.ts
    │       ├── Collision.ts
    │       ├── Controls.ts
    │       ├── Score.ts
    │       ├── Renderer.ts
    │       └── constants.ts
    │
    ├── pages/
    │   └── NotFound.tsx
    │
    └── components/
        └── GameHUD.tsx

Performance & Accessibility

  • Game should load only on the 404 page.
  • Use requestAnimationFrame for rendering.
  • Respect prefers-reduced-motion by providing a simplified mode.
  • Ensure keyboard accessibility.
  • Avoid excessive CPU or memory usage.

Bonus Features (Optional)

  • Different spacecraft skins.
  • AI-generated motivational messages after each game.
  • Daily high score challenge.
  • Global leaderboard (future backend integration).
  • Random space weather events that affect gameplay.
  • Boss obstacle every 1,000 points.
  • Achievement badges (e.g., "Debris Dodger", "Orbital Survivor").
  • Hidden easter eggs referencing satellites, NASA, ISRO, ESA, or famous missions.
  • "Warp Mode" power-up for temporary invincibility.

Acceptance Criteria

  • A playable mini-game is integrated into the 404 page.
  • The game matches Kepler's futuristic space theme.
  • Controls are responsive on desktop and mobile.
  • Difficulty increases progressively.
  • High scores persist between sessions.
  • Players can restart the game or return to the dashboard.
  • The game performs smoothly without affecting page load time.
  • No console errors or performance regressions are introduced.

Labels

frontend enhancement 404-page game ui/ux easter-egg good first issue fun feature

Metadata

Metadata

Labels

ECSoC26Official label for ECSoC26 event contributions.ECSoC26-L2Level 2 contribution for the ECSoC26 event.assignedIndicates that the issue has been assigned to a contributor who is actively working on it.backendBackend developmentenhancementNew feature or requestfrontendFrontend developmentgood first issueGood for newcomersgood-first-issueGood for newcomerslevel:beginnerSuitable for first-time or beginner contributors.mentor:Krish-KhinchiAssigned mentor responsible for reviewing and guiding this contribution.size/MMedium-sized contribution.type:backendChanges backend services or server-side logic.type:featureIntroduces a new feature or enhancement.type:frontendChanges frontend or client-side code.type:uiUpdates user interface or visual components.websiteRelated to the project's website.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions