# Rogue

**[Play Online](https://rogue.peterstockings.com/)**

A roguelike dungeon crawler built with TypeScript, Phaser, and Rot.js.

## Getting Started

Follow these instructions to get the project up and running on your local machine.

### Prerequisites

This project uses [Bun](https://bun.sh/) as its runtime and package manager. Ensure you have Bun installed on your system.

### Installation

Clone the repository and install the dependencies:

```bash
bun install
```

### Running the Game

Start the development server:

```bash
bun run dev
```

### Accessing the Game

Once the server is running, open your browser and navigate to the URL shown in the terminal. typically:

[http://localhost:5173](http://localhost:5173)

## Development Workflow

We strive to maintain a high quality of code. Please follow these guidelines when contributing.

### Making Changes

1.  **Create a Feature Branch**: Always create a new branch for your changes.
    ```bash
    git checkout -b feature/my-new-feature
    ```

2.  **Add Tests**: Ensure that new functionality is covered by unit tests.

3.  **Run Verification**: Before merging your changes, run the verification script to ensure type safety and pass all tests.
    ```bash
    bun run verify
    ```
### Running Tests

To run the test suite manually:

```bash
bun run test
```

## Project Structure

The source code is organized as follows:

-   `src/core`: Contains core game logic, configuration, and type definitions.
-   `src/engine`: Handles game systems like simulation, turn management, and world generation.
-   `src/rendering`: Manages visual aspects using Phaser, including the renderer and FOV.
-   `src/scenes`: Defines the different Phaser scenes (e.g., Game, Menu, Preload).
-   `src/ui`: Contains User Interface components and logic.

## Built With

-   [Phaser](https://phaser.io/) - HTML5 Game Framework
-   [Rot.js](https://ondras.github.io/rot.js/hp/) - Roguelike Toolkit
-   [Vite](https://vitejs.dev/) - Frontend Tooling
-   [TypeScript](https://www.typescriptlang.org/) - Typed JavaScript
-   [Vitest](https://vitest.dev/) - Unit Testing Framework
