# lifecycler

[_bevy game jam #5 submission_](https://itch.io/jam/bevy-jam-5)

![logo](https://assets.cxreiff.com/github/lifecycler.png)

An aquarium that runs in your terminal!

A decoration/fidget-toy that lets you watch your fishes' lifecycle while you code. Test drive of my plugin [bevy_ratatui_render](https://github.com/cxreiff/bevy_ratatui_render), a plugin that lets you render a bevy application to the terminal using [ratatui](https://github.com/ratatui-org/ratatui)/[ratatui-image](https://github.com/benjajaja/ratatui-image).

## play with cargo

If you have [cargo](https://github.com/rust-lang/cargo) installed, you can simply run the following:

```sh
cargo install lifecycler --locked
```

...and then to launch the game:

```sh
lifecycler
```

## controls

|                    |                            |
|--------------------|----------------------------|
| Left Click or Drag | Dispense a food pellet.    |
| Space Bar          | Toggle day/night modes.    |
| M                  | Mute/unmute sound effects. |
| Q                  | Quit the game.             |

## note

The resolution is determined by the character-wise dimensions of your terminal- so zoom out in your terminal for more detail, zoom in for a more pixelated look.

## other install methods

### distro packages

#### AUR

Arch Linux users can also install [from the AUR](https://aur.archlinux.org/packages/lifecycler) using an [AUR helper](https://wiki.archlinux.org/title/AUR_helpers):

```sh
paru -S lifecycler
```

### manually

Alternatively you can manually download an executable from the [itch.io page](https://cxreiff.itch.io/lifecycler) or [github releases](https://github.com/cxreiff/lifecycler/releases).

If you manually installed the executable, you will have to include the path to launch it (e.g. `./lifecycler` if in the same directory).

On macOS you may need to Right-Click > Open With, selecting a supported terminal, and then selecting Open in order to bypass code signing (I haven't figured out code signing yet).

## issues

I am still hunting down platform-specific problems with rendering and input- if you run into one, please open an issue!

## compatibility

This requires that your terminal:

1. Supports 24bit color.
2. Has reasonably efficient rendering.

This includes a decent variety of terminals, but I have personally confirmed good results in the following:

- Alacritty
- Kitty
- WezTerm
- iTerm2

## gifs

![day mode](https://assets.cxreiff.com/github/lifecycler_day.gif)![night mode](https://assets.cxreiff.com/github/lifecycler_night.gif)
