Skip to content
Merged
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
44 changes: 44 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Deploy

# Publishes https://micro-cosmos.web.app:
# / the game on `main`
# /prototype/ the original prototype on the `prototype` branch
on:
push:
branches:
- main
- prototype
workflow_dispatch:

concurrency:
group: deploy-hosting
cancel-in-progress: true

permissions:
contents: read

jobs:
deploy:
runs-on: ubuntu-24.04
steps:
# Always build the site from main; a push to `prototype` just refreshes /prototype.
- uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0

- uses: oven-sh/setup-bun@v2

- name: Install dependencies
run: bun install --frozen-lockfile

- name: Build site (game + /prototype)
run: bash scripts/build-site.sh

- name: Deploy to Firebase Hosting
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: ${{ secrets.GITHUB_TOKEN }}
firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_MICRO_COSMOS }}
projectId: micro-cosmos
channelId: live
11 changes: 11 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Generated and vendored files
.github/
node_modules/
dist/
build/
media/
src-tauri/target/
src-tauri/gen/
bun.lock
*.webp
*.png
5 changes: 5 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"singleQuote": true,
"printWidth": 140,
"trailingComma": "all"
}
62 changes: 31 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

### Engulf. Endosymbiose. Divide. Become multicellular.

A real-time cellular survival game for desktop and browser: part agar.io, part Factorio-inside-a-cell, part *Journey to the Microcosmos*, drawn in a Kurzgesagt-style flat palette.
A real-time cellular survival game for desktop and browser: part agar.io, part Factorio-inside-a-cell, part _Journey to the Microcosmos_, drawn in a Kurzgesagt-style flat palette.

![Version](https://img.shields.io/badge/version-0.2.0-8eea54?style=flat-square&labelColor=0b2632)
![Tauri](https://img.shields.io/badge/Tauri-2-24c8db?style=flat-square&labelColor=0b2632)
Expand Down Expand Up @@ -35,35 +35,35 @@ The opening is deliberately quiet: a close-up of a lone cell, a few drifting glu

Thirty-three species, each with its own behavior and a Field Journal entry grounded in real biology. They hunt, flee, graze and infect each other without you.

| | Organisms |
| --- | --- |
| **Food** | Glucose, cell debris, DNA fragments, lipid droplets, cocci, bacilli, spirilla, diatoms, Euglena, gastrotrichs |
| **Endosymbionts** | α-proteobacteria (→ mitochondria), cyanobacteria (→ chloroplasts) |
| **Hunters** | *Didinium* charges, *Lacrymaria olor* coils its neck and strikes, *Amoeba proteus* engulfs anything smaller, *Paramecium* fires trichocysts |
| **Traps** | Hydra tentacles with nematocysts, the near-invisible *Collotheca* funnel, Stentor and rotifer feeding vortices |
| **Armor and terrain** | *Arcella* (only its aperture is vulnerable), indestructible tardigrades (brush them for Dsup protection), pollen grains |
| **Mini-boss** | Neoplasms: glucose-hoarding tumor masses that split when wounded |
| | Organisms |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **Food** | Glucose, cell debris, DNA fragments, lipid droplets, cocci, bacilli, spirilla, diatoms, Euglena, gastrotrichs |
| **Endosymbionts** | α-proteobacteria (→ mitochondria), cyanobacteria (→ chloroplasts) |
| **Hunters** | _Didinium_ charges, _Lacrymaria olor_ coils its neck and strikes, _Amoeba proteus_ engulfs anything smaller, _Paramecium_ fires trichocysts |
| **Traps** | Hydra tentacles with nematocysts, the near-invisible _Collotheca_ funnel, Stentor and rotifer feeding vortices |
| **Armor and terrain** | _Arcella_ (only its aperture is vulnerable), indestructible tardigrades (brush them for Dsup protection), pollen grains |
| **Mini-boss** | Neoplasms: glucose-hoarding tumor masses that split when wounded |

Infection follows the design bible's **aliveness spectrum**:

| Agent | Mechanic |
| --- | --- |
| Prions | Misfold an organelle; the misfolding spreads to neighbors. A lysosome burst performs autophagy. |
| Viroids | Swarm photosynthetic cells and siphon ATP. Shake them off. |
| Satellite RNAs | Inert alone; amplify the next virus that infects you. |
| Viruses | Adenovirus (lytic), retrovirus (integrates as a dormant provirus that stress can reawaken), TMV (plant cells only), bacteriophage (bacteria only), Mimivirus (amoebae, including you). Docked virions can be shaken off with a dash before they inject. |
| Virophages | Allies. Absorb them and release the swarm against giant viruses. |
| Intracellular bacteria | Hitchhike inside infected prey and colonize your cytoplasm. |
| Agent | Mechanic |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Prions | Misfold an organelle; the misfolding spreads to neighbors. A lysosome burst performs autophagy. |
| Viroids | Swarm photosynthetic cells and siphon ATP. Shake them off. |
| Satellite RNAs | Inert alone; amplify the next virus that infects you. |
| Viruses | Adenovirus (lytic), retrovirus (integrates as a dormant provirus that stress can reawaken), TMV (plant cells only), bacteriophage (bacteria only), Mimivirus (amoebae, including you). Docked virions can be shaken off with a dash before they inject. |
| Virophages | Allies. Absorb them and release the swarm against giant viruses. |
| Intracellular bacteria | Hitchhike inside infected prey and colonize your cytoplasm. |

Five biomes (Sunlit Shallows, Biofilm Reef, Lysis Bloom, Abyssal Sediment, Neoplastic Rift) set light for photosynthesis, glucose density, currents and spawn tables. An ecosystem director escalates pressure with time, distance and generation: viral storms, prion fog, phage bursts, glucose blooms, current surges and neoplasm hunts.

## The microscope is a mechanic

Press <kbd>Q</kbd> to switch illumination. Each light shows different things.

| Darkfield | Fluorescence |
| --- | --- |
| ![Darkfield](docs/screenshots/darkfield.webp) | ![Fluorescence](docs/screenshots/fluorescence.webp) |
| Darkfield | Fluorescence |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ![Darkfield](docs/screenshots/darkfield.webp) | ![Fluorescence](docs/screenshots/fluorescence.webp) |
| Scattered light outlines every edge on a black field. Reveals transparent agents (prions, viroids, satellites) and the bristles of traps. | Real probe colors: DAPI-blue nuclei, MitoTracker-green mitochondria, red chlorophyll, magenta lysosomes, orange membrane dye. Reveals infected prey and proviruses, but excitation light costs ATP (phototoxicity). |

Brightfield is the vivid illustrated default. Zooming into the **Cell Architect** shifts the grade toward an electron micrograph.
Expand All @@ -83,17 +83,17 @@ Your cell's size follows from what it contains: every organelle is real biomass

## Controls

| Input | Action |
| --- | --- |
| <kbd>W</kbd><kbd>A</kbd><kbd>S</kbd><kbd>D</kbd> / arrows, or hold the mouse | Swim |
| <kbd>Space</kbd> | Pseudopod dash: shakes off docked viruses, breaks grips |
| <kbd>1</kbd>–<kbd>5</kbd>, right click | Lysosome burst, toxicyst volley, RNA interference, encyst, release virophages |
| <kbd>Q</kbd> | Cycle brightfield, darkfield and fluorescence |
| <kbd>Tab</kbd> | Cell Architect |
| <kbd>R</kbd> | Divide |
| Hold <kbd>E</kbd> | Identify specimens |
| Mouse wheel, <kbd>[</kbd> <kbd>]</kbd> | Magnification |
| <kbd>Esc</kbd> | Pause (also automatic when the window loses focus) |
| Input | Action |
| ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| <kbd>W</kbd><kbd>A</kbd><kbd>S</kbd><kbd>D</kbd> / arrows, or hold the mouse | Swim |
| <kbd>Space</kbd> | Pseudopod dash: shakes off docked viruses, breaks grips |
| <kbd>1</kbd>–<kbd>5</kbd>, right click | Lysosome burst, toxicyst volley, RNA interference, encyst, release virophages |
| <kbd>Q</kbd> | Cycle brightfield, darkfield and fluorescence |
| <kbd>Tab</kbd> | Cell Architect |
| <kbd>R</kbd> | Divide |
| Hold <kbd>E</kbd> | Identify specimens |
| Mouse wheel, <kbd>[</kbd> <kbd>]</kbd> | Magnification |
| <kbd>Esc</kbd> | Pause (also automatic when the window loses focus) |

Dash, the Cell Architect and microscope light unlock during the first objectives.

Expand Down
Loading
Loading