Back to Eliza

๐Ÿฅš Elizagotchi - Virtual Pet Game

packages/examples/elizagotchi/README.md

2.0.16.0 KB
Original Source

๐Ÿฅš Elizagotchi - Virtual Pet Game

A Tamagotchi-style virtual pet game running on elizaOS with NO LLM required!

๐ŸŽฎ Features

  • Classic Tamagotchi Gameplay: Feed, play, clean, sleep, and care for your pet!
  • No LLM Required: Uses custom model handlers for game logic (like tic-tac-toe example)
  • Life Stages: Egg โ†’ Baby โ†’ Child โ†’ Teen โ†’ Adult โ†’ Elder
  • Personality System: Care quality affects your pet's personality
  • Cute SVG Art: Pixel-art style graphics with smooth animations
  • Responsive Design: Works on desktop and mobile

๐Ÿš€ Quick Start

bash
# From the monorepo root
cd examples/elizagotchi

# Install dependencies
bun install

# Start the dev server
bun run dev

Open http://localhost:5174 in your browser!

๐ŸŽฏ How to Play

ActionDescription
๐Ÿ” FeedKeep your pet fed. Don't overfeed!
๐ŸŽฎ PlayMake your pet happy (uses energy)
๐Ÿงน CleanClean up messes and bathe your pet
๐Ÿ˜ด SleepRest when tired (turn off lights first)
๐Ÿ’Š MedicineCure sickness
๐Ÿ’ก LightToggle lights on/off for bedtime

Tips for a Happy Pet

  1. Check regularly - Stats decay over time
  2. Keep it clean - Poop accumulates and can make your pet sick
  3. Balance rest - Don't let energy get too low
  4. Don't overfeed - Wait until hunger is low before feeding
  5. Light management - Turn off lights before putting to bed

๐Ÿ—๏ธ Architecture

This example demonstrates elizaOS's ability to run agents without an LLM:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    React UI                              โ”‚
โ”‚              (Elizagotchi App)                           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Game Engine                                             โ”‚
โ”‚  โ”œโ”€โ”€ State Management (PetState)                         โ”‚
โ”‚  โ”œโ”€โ”€ Stat Decay & Time-based Updates                     โ”‚
โ”‚  โ”œโ”€โ”€ Action Handling (feed, play, clean, etc.)           โ”‚
โ”‚  โ””โ”€โ”€ Evolution System                                    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  elizagotchiPlugin (Custom Model Handlers)               โ”‚
โ”‚  โ”œโ”€โ”€ models[TEXT_LARGE] โ†’ game logic                     โ”‚
โ”‚  โ””โ”€โ”€ models[TEXT_SMALL] โ†’ game logic                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  AgentRuntime (elizaOS Core)                             โ”‚
โ”‚  โ””โ”€โ”€ useModel() โ†’ routed to game engine, NOT an LLM!    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ File Structure

elizagotchi/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ App.tsx              # Main React component
โ”‚   โ”œโ”€โ”€ App.css              # Styling (kawaii aesthetic)
โ”‚   โ”œโ”€โ”€ main.tsx             # Entry point
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ PetSprite.tsx    # SVG pet graphics for all stages
โ”‚   โ”‚   โ””โ”€โ”€ GameElements.tsx # Poop, hearts, icons, backgrounds
โ”‚   โ””โ”€โ”€ game/
โ”‚       โ”œโ”€โ”€ types.ts         # TypeScript types
โ”‚       โ”œโ”€โ”€ engine.ts        # Core game logic
โ”‚       โ””โ”€โ”€ plugin.ts        # elizaOS plugin with model handlers
โ”œโ”€โ”€ index.html
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ vite.config.ts
โ””โ”€โ”€ README.md

๐ŸŽจ Pet Life Stages

StageDescriptionDuration
๐Ÿฅš EggYour pet is incubating1 minute
๐Ÿ‘ถ BabyNewly hatched, needs lots of care3 minutes
๐Ÿง’ ChildGrowing up, developing personality5 minutes
๐Ÿง‘ TeenRebellious phase, needs discipline10 minutes
๐Ÿ‘จ AdultFully grown, stable personality30 minutes
๐Ÿ‘ด ElderWise and experiencedUntil natural end

๐Ÿ˜Š Mood System

Your pet's mood is determined by their stats:

  • Happy ๐Ÿ˜„ - All stats above 80%
  • Content ๐Ÿ™‚ - All stats above 60%
  • Neutral ๐Ÿ˜ - Normal state
  • Sad ๐Ÿ˜ข - Happiness below 35%
  • Hungry ๐Ÿฝ๏ธ - Hunger below 40%
  • Dirty ๐Ÿงน - Cleanliness below 30%
  • Sick ๐Ÿค’ - Health issues

โš™๏ธ Technical Details

No LLM Pattern

Like the tic-tac-toe example, Elizagotchi uses custom model handlers:

typescript
const elizagotchiPlugin: Plugin = {
  name: "elizagotchi",
  priority: 100,
  models: {
    [ModelType.TEXT_LARGE]: elizagotchiModelHandler,
    [ModelType.TEXT_SMALL]: elizagotchiModelHandler,
  },
};

When runtime.useModel() is called, instead of hitting an LLM API, our game engine processes the command and returns game state updates.

Browser-Based Storage

Uses in-memory state for the browser demo. Can be extended to use PGlite for persistence.

๐Ÿค Contributing

Contributions are welcome! Some ideas:

  • Add more pet evolution paths
  • Implement minigames for playing
  • Add sound effects
  • Create different pet species
  • Add achievements/milestones

๐Ÿ“œ License

MIT License - Part of the elizaOS project.


Made with ๐Ÿ’• using elizaOS