The Ultimate 3D Virtual Pet Creator
ASCII art pets rendered in stunning 3D with bloom post-processing, cinematic particles, AI-powered chat, and a dark cyberpunk UI.
Features โข Quick Start โข Tech Stack โข Species โข Architecture โข Contributing
- Canvas-based ASCII textures โ ASCII art rendered to canvas with glow/shadow, applied as 3D textures for perfect readability
- Post-processing pipeline โ Bloom + Vignette for cinematic, neon-lit aesthetics
- Dynamic lighting โ Intensity adapts to pet mood (bright when happy, dim when sad)
- 30 floating particles โ Octahedrons with mood-matching colors orbit your pet
- Starfield background โ 600 procedural stars with fade and drift
Each with hand-crafted ASCII art, distinct color palettes, rarity levels, and AI personality profiles.
| Species | Rarity | Personality |
|---|---|---|
| ๐ฆ Phoenix | Legendary | Wise, poetic, dramatic |
| ๐ Dragon | Epic | Proud, protective, formal |
| ๐ฆ Unicorn | Rare | Graceful, dreamy, kind |
| ๐ค Robot | Rare | Logical, helpful, data-driven |
| ๐บ Wolf | Uncommon | Stoic, loyal, observant |
| ๐ฆ Owl | Uncommon | Wise, thoughtful, nerdy |
| ๐ฆ Fox | Uncommon | Clever, witty, mischievous |
| ๐ป Ghost | Uncommon | Mysterious, playful, spooky |
| ๐ฑ Neko | Common | Playful, curious, sassy |
| ๐ข Slime | Common | Bubbly, innocent, excitable |
| ๐ข Turtle | Common | Patient, calm, slow |
| ๐ฐ Bunny | Common | Hyperactive, adorable, giggly |
- Talk to your pet using LLM (z-ai-web-dev-sdk)
- Responses are character-driven โ each species has a unique personality
- Pet mood and stats influence dialogue naturally
- Conversations persist per session
- ๐ Feed โ Restore hunger (5 tokens)
- ๐ฎ Play โ Boost happiness (8 tokens)
- ๐ช Train โ Gain XP & health (12 tokens)
- ๐ Heal โ Restore health (6 tokens)
- ๐ด Rest โ Recharge energy (4 tokens)
- ๐ค Pet โ Show affection (3 tokens)
- Token tracking โ Every interaction costs tokens, visible in real-time
- Action counter โ Track total interactions per session
- XP & leveling โ 50 XP per level with progress bars
- Mood system โ Ecstatic โ Happy โ Neutral โ Sad โ Critical
- Dark cyberpunk aesthetic with 1px border radius throughout
- 3-column layout โ Pet list | 3D viewport | Info panel
- Tabbed bottom panel โ Switch between Actions and Chat
- Framer Motion animations โ Smooth transitions everywhere
- Responsive design โ Works on desktop and mobile
- Node.js 18+ or Bun
- Git
# Clone the repository
git clone https://github.com/smouj/asciicritters.git
cd asciicritters
# Install dependencies
bun install
# Set up database
bun run db:push
# Start development server
bun run devOpen http://localhost:3000 to see your pets.
# .env
DATABASE_URL="file:./db/custom.db"asciicritters/
โโโ src/
โ โโโ app/
โ โ โโโ page.tsx # Main UI (3-column layout)
โ โ โโโ layout.tsx # Root layout + fonts
โ โ โโโ globals.css # Dark theme + CSS variables
โ โ โโโ api/
โ โ โโโ species/route.ts # GET /api/species
โ โ โโโ pets/
โ โ โโโ route.ts # GET/POST /api/pets
โ โ โโโ [id]/
โ โ โโโ route.ts # GET/DELETE /api/pets/:id
โ โ โโโ action/route.ts # POST /api/pets/:id/action
โ โ โโโ chat/route.ts # POST/DELETE /api/pets/:id/chat
โ โโโ components/
โ โ โโโ pet/
โ โ โ โโโ ASCIIPetCanvas.tsx # Three.js 3D renderer
โ โ โโโ ui/ # shadcn/ui components
โ โโโ lib/
โ โโโ pets/
โ โ โโโ types.ts # Pet, Species, Chat interfaces
โ โ โโโ species.ts # 12 species definitions + ASCII art
โ โ โโโ generator.ts # Deterministic pet generation
โ โ โโโ rng.ts # Mulberry32 PRNG
โ โ โโโ index.ts # Barrel exports
โ โโโ db.ts # Prisma client
โโโ prisma/
โ โโโ schema.prisma # Pet + PetAction models
โโโ public/
โ โโโ og-image.png # GitHub social preview
โโโ LICENSE # MIT
โโโ CONTRIBUTING.md
โโโ CODE_OF_CONDUCT.md
โโโ SECURITY.md
โโโ README.md
Each pet is generated using a Mulberry32 pseudo-random number generator seeded from the user ID. This means:
- The same user always gets the same pet for a given species
- Stats, rarity, and name are all reproducible
- No external randomness source needed
- Fair distribution with weighted rarity rolls
// From src/lib/pets/rng.ts
function mulberry32(seed: number): () => number {
return function () {
let t = (seed += 0x6d2b79f5);
t = Math.imul(t ^ (t >>> 15), t | 1);
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
};
}๐จ Click to view all ASCII art
__ __
/ \ / \
/ .. \ / .. \
/ /\ \ / /\ \
/ / \ \ / / \ \
/ / \ \/ / \ \
/ / /\ \ /\ \ \
/ / / \ / \ \ \
/__/__/____\_____/____\___\
\ \ | | / /
\____\ | | /____/
\| |/
| |
_| |_
__====-_ _-====__
_--^^^#####// \\#####^^^--_
_-^##########// ( ) \\##########^-_
-############// |\^^/| \\############-
/############// (@::@) \\############\
/#############(( \\// ))#############\
/###############\\ (oo) //###############\
/################\\ / VV \ //################\
/###################\\ \\//###################\
/\_/\
( o.o )
> ^ <
/| |\
(_| |_)
" "
This project is licensed under the MIT License โ see the LICENSE file for details.
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-pet) - Commit your changes (
git commit -m 'Add new species: Octopus') - Push to the branch (
git push origin feature/amazing-pet) - Open a Pull Request
- Multi-pet collection view
- Pet trading between users
- Animated ASCII art (frame sequences)
- Sound effects for actions
- Pet evolution/evolution system
- Achievement badges
- Leaderboard (highest level pets)
- Custom ASCII art upload
- Mobile native app (React Native)
- Multiplayer features (battles, trading)
Built with โค๏ธ by the ASCIICritters Team
โญ Star us on GitHub ยท ๐ Report a Bug ยท ๐ก Request a Feature