Custom Pets

Create your own digital companions

Design unique sprites, animations, and behaviors for your desktop pets. Share your creations with the community and bring your imagination to life!

Quick Start Guide

Get up and running with custom pets in just a few steps

🍎 macOS

Full Support
  1. Click on a pet you like and export it
  2. Modify the JSON file and sprites as you see fit
  3. Double check filename conventions
  4. Zip everything together
  5. Drag and drop the zip into the app
  6. Share your work on Discord!

🪟 Windows

Limited Support

Windows currently has limited support:

  • No export functionality
  • No drag and drop system
  • Some capabilities not supported

Workaround: Access the PetAssets or Species folders directly to add, modify, or delete content.

Setup Requirements

📱

Updated App

Make sure you have the latest version of Pets Therapy installed on your Mac.

🎨

Sprite Editor

Any tool for designing sprites works. We recommend Aseprite for pixel art.

Species Definition

Every custom pet is defined by a JSON configuration file

What defines a Species?

  • Unique ID: A distinctive identifier for your pet
  • Capabilities: Behaviors and physics properties
  • Animations: Visual states and movements
  • Attributes: Speed, scale, FPS, and other properties

Example JSON Structure

{
  "id": "ape",
  "dragPath": "drag",
  "fallPath": "drag",
  "fps": 10,
  "zIndex": 0,
  "scale": 1,
  "tags": ["jungle"],
  "movementPath": "walk",
  "speed": 0.7,
  "capabilities": [
    "AnimatedSprite",
    "AnimationsProvider",
    "AnimationsScheduler",
    "AutoRespawn",
    "BounceOnLateralCollisions",
    "Draggable",
    "FlipHorizontallyWhenGoingLeft",
    "Gravity",
    "LinearMovement",
    "PetsSpritesProvider",
    "Rotating",
    "ShowsMenuOnRightClick"
  ],
  "animations": [
    {
      "id": "front",
      "position": "fromEntityBottomLeft",
      "requiredLoops": 5
    }
  ]
}

⚠️ Important Naming Rules

  • Species ID: Do not include _ (underscore) in your species.id
  • Animation ID: Do not include _ (underscore) in your animation.id
  • Reason: Underscores separate species from animation names (e.g., ape_eat = ape + eat)

Pet Capabilities

Capabilities define how your pet behaves and interacts with the environment

Standard Capabilities

Most pets use this recommended set:

AnimatedSprite BounceOnLateralCollisions FlipHorizontallyWhenGoingLeft Gravity LinearMovement Draggable

Special Capabilities

Unique behaviors for specific pet types:

  • GetsAngryWhenMeetingOtherCats: Grumpy Cat's special behavior
  • WallCrawler: Allows crawling along screen borders (snails)
  • RandomPlatformJumper: Enables jumping to other windows

Animation System

Create engaging animations that bring your pets to life

Animation Properties

  • ID: Determines which sprite set to use
  • Position: Where the animation appears
  • Required Loops: How many times the animation repeats
  • Size: Custom sizing (optional, see sloth's lightsaber)

Required Animation

Every species must have at least a "front" animation, which is used on the homepage and pet details.

Other Important Properties

movementPath: Sprite set for movement (usually "walk" or "fly")
dragPath: Sprite used when pet is dragged (usually "drag" or "front")
fallPath: Sprite used when pet is falling (v2.48+, optional)
speed: How fast the pet moves
fps: Animation frame rate (max 20 fps, recommend 10 fps)

Sprite Creation

Learn the file naming conventions and structure for your pet sprites

File Naming Convention

Each sprite file must follow this exact pattern:

{species.id}_{animation.id}-{index}.png

Examples:

ape_front-1.png ape_front-2.png ape_walk-0.png sloth_swag_lightsaber-0.png

Important Rules:

  • Indices can start from 0 or 1, but must be sequential
  • Names are case-sensitive
  • Use PNG format only
  • No gaps in the sequence

Animation Duration

All animations for a species must use the same FPS (frames per second).

  • Maximum FPS: 20 (for battery conservation)
  • Recommended FPS: 10 (100ms per frame)
  • Setting: Change the fps property in your JSON

App Integration

How to export, import, and manage your custom pets

🔄 Export Pets

Go to the Info view in the bottom navigation bar to find and use the export functionality.

📥 Import Pets

Go to the Info view in the bottom navigation bar and drag your ZIP file to the designated drop area.

Resources & Community

Get help, inspiration, and share your creations

💬

Discord Community

Share your creations and get help from other creators

Join Discord
🎨

Aseprite Files

Download source files for reference and inspiration

Browse Files
📋

Complete Examples

View JSON files for all original species

View Examples

Download Now

Mac App Store