Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions holly-knight/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
node_modules
dist
.DS_Store
server/public
vite.config.ts.*
*.tar.gz
Binary file added holly-knight/AuroraDash-demo-gameplay.mp4
Binary file not shown.
114 changes: 114 additions & 0 deletions holly-knight/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# ❄️ AuroraDash

![Project Status](https://img.shields.io/badge/status-active-success.svg)
![License](https://img.shields.io/badge/license-MIT-blue.svg)
![Tech](https://img.shields.io/badge/built%20with-React%20%7C%20TypeScript%20%7C%20Canvas-blueviolet)

> **"It works on my machine... and it flows in my mind."**

## 📖 The Story: A Developer's Escape
**AuroraDash** is a high-fidelity, atmospheric endless runner inspired by the meditative vibes of *Alto's Adventure*.

We know the struggle: The sprint is ending, the `console` is full of red text, and burnout is creeping in. AuroraDash was built for that exact moment. It is a procedural winter sanctuary where you trade high-pressure deadlines for shimmering auroras and soothing soundscapes.

Steer your rubber-duck-powered sleigh through a world of `syntax errors` and `404` boulders. It isn't just a game; it's a rhythmic, chill escape designed to help developers find their "flow state."

---

## 🎮 Theme Interpretation: "Games o|x"
**Theme:** Architecting a game-themed experience.

We interpreted the theme by architecting a digital cure for developer fatigue.
* **Visual Architecture:** We engineered a custom rendering engine that prioritizes hypnotic, fluid motion (parallax snow, aurora gradients) to act as a visual palate cleanser.
* **The Metaphor:** The gameplay mirrors the developer experience. The obstacles are the bugs we fight daily, but the movement is the grace we strive for. We didn't just build a runner; we architected a **Zen Mode** for your browser.

---

### 🎥 Gameplay Demo

[Watch the AuroraDash Gameplay Video](./AuroraDash-demo-gameplay.mp4)

[Youtube](https://youtu.be/C3NT7L_8EvA)

---
## 🕹️ Gameplay Mechanics & Power-ups

Navigate the snowy terrain and use your developer toolkit to survive:

### ☕ The Boost: `Coffee`
> *Signifies: The Flow State*
Collecting a `Coffee` cup triggers a temporary speed boost. It simulates that caffeine-induced burst of productivity where code writes itself, allowing you to glide effortlessly past obstacles.

### 🛡️ The Protection: `Firewall`
> *Signifies: Security & Stability*
Picking up the shield item activates a `Firewall`. This protective layer wraps your character in a secure shell, allowing you to crash through exactly one `404 Boulder` or `Syntax Error` without breaking the build (ending the run).

### 👾 The Obstacles
* **`404` Boulders:** Large, immovable rocks representing missing resources.
* **Syntax Spikes:** Sharp coding errors that must be jumped over.

---

## 🚀 Tech Stack

We utilized a modern, type-safe stack to ensure performance and developer experience:

* **Frontend:** `React 18`, `TypeScript`, `Vite`
* **Game Engine:** `HTML5 Canvas API` (Custom implementation for fluid physics)
* **Styling:** `Tailwind CSS`
* **Animations:** `Framer Motion` (UI Transitions)
* **State Management:** `TanStack React Query`
* **Icons:** `Lucide React`

---

## ⚙️ Installation & Setup

Follow these steps to get the game running locally.

**Prerequisites:** Node.js (`v18+`)

1. **Clone the Repository**
```bash
git clone https://github.com/codev-aryan/codejam-v6.git
```

2. **Navigate to the Project Directory**
The game lives inside the `holly-knight` folder.
```bash
cd codejam-v6/holly-knight
```

3. **Install Dependencies**
```bash
npm install
```

4. **Start the Development Server**
```bash
npm run dev
```

5. **Launch**
Open your browser and navigate to `http://localhost:5173`.

---

## 👥 The Team

* **Aryan Mehta (Team Leader)**
* *Role:* Project Architect & Lead Developer
* *Contrib:* Core game loop, `Canvas` physics engine, and procedural generation logic.

* **Ishaan Sahi**
* *Role:* UI/UX & Game Logic
* *Contrib:* Interface design, power-up mechanics (`Coffee`/`Firewall` logic), and developer-themed assets.

---

## 📜 License

This project is Open Source under the **MIT License**.

* **Audio:** Custom procedural audio via `Web Audio API`.
* **Inspiration:** *Alto's Adventure*.
16 changes: 16 additions & 0 deletions holly-knight/client/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
<link rel="icon" type="image/png" href="/favicon.png" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Architects+Daughter&family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Fira+Code:[email protected]&family=Geist+Mono:[email protected]&family=Geist:[email protected]&family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans:ital,wght@0,100..700;1,100..700&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Lora:ital,wght@0,400..700;1,400..700&family=Merriweather:ital,opsz,wght@0,18..144,300..900;1,18..144,300..900&family=Montserrat:ital,wght@0,100..900;1,100..900&family=Open+Sans:ital,wght@0,300..800;1,300..800&family=Outfit:[email protected]&family=Oxanium:[email protected]&family=Playfair+Display:ital,wght@0,400..900;1,400..900&family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Mono:ital,wght@0,100..700;1,100..700&family=Roboto:ital,wght@0,100..900;1,100..900&family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&family=Source+Serif+4:ital,opsz,wght@0,8..60,200..900;1,8..60,200..900&family=Space+Grotesk:[email protected]&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
<title>AuroraDash</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Binary file added holly-knight/client/public/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions holly-knight/client/requirements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## Packages
framer-motion | Smooth UI transitions for game states and overlays

## Notes
Game logic uses HTML5 Canvas API in a React component
Game runs at 60fps using requestAnimationFrame
Audio assets are procedurally generated or standard HTML5 Audio
High scores are persisted via /api/scores
29 changes: 29 additions & 0 deletions holly-knight/client/src/App.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { Switch, Route } from "wouter";
import { queryClient } from "./lib/queryClient";
import { QueryClientProvider } from "@tanstack/react-query";
import { Toaster } from "@/components/ui/toaster";
import { TooltipProvider } from "@/components/ui/tooltip";
import Home from "@/pages/Home";
import NotFound from "@/pages/not-found";

function Router() {
return (
<Switch>
<Route path="/" component={Home} />
<Route component={NotFound} />
</Switch>
);
}

function App() {
return (
<QueryClientProvider client={queryClient}>
<TooltipProvider>
<Toaster />
<Router />
</TooltipProvider>
</QueryClientProvider>
);
}

export default App;
Loading