Skip to content
moonbenchPublic

Latest commit

 

History

571 Commits

Folders and files

Repository files navigation

Catode32 - A virtual pet for your ESP32

catstars

This is an advanced virtual pet with a detailed behavior and status system, minigames, multiple locations, dynamic weather, in-game store (with earned credits), wireless playdates, vacations, and lots of toys and food to keep your pet happy.

And lots of cute art.

Take a look at the wiki for a lot more information about how to build the project, care for your pet, and use all the various systems.


Quick Highlights

Pet Features

Pet Care

Your pet needs your help to have a healthy, fulfilling, affectionate life.

There a 18 different stats that affect the quality of your pet's life. Your pet will help communicate some of these needs through vocalizations and behavior. You can also go to the pet stats screen in the game to see them all at any time:

Stats

Read the Pet Care page for more information about these stats, and helpful information for maintaining them and caring for your pet.

Pet Behavior

Your pet has an advanced behavioral system with dozens of behaviors. The behaviors allow your pet to express themselves, explore, and communicate and interact with you.

By keeping an eye on their behavior you can better understand their needs and wants.

screen10

Read more about understanding your pet's behaviors.

Minigames

There are several minigames to keep both you and your pet occupied.

Playing these games provides different stat rewards for your pet, depending on the game type. And they provide coins which you can spend at the in-game store to help care for your pet even better.

screen11

In-Game Store

Spend coins at the store to buy toys, food, snacks, vacations, services, and medicine for your pet.

In-game store

You can earn coins through the minigames, and sometimes your pet will find a few coins randomly when they're in the mood to do a little hunting.

Read more detailed store information.

Locations

Within your pet's home there are a few different spaces for them to hang out.

  • Living room
  • Bedroom
  • Kitchen
  • Outside (Back yard)
  • Treehouse

Some of these have special perks too.

There are also some vacation spots such as the park, forest, aquarium, and beach you can take your pet on trips to as well!

There's more location information on the wiki.

Weather

There's a dynamic weather system that progresses over time.

The weather has some effects on your pet. For example, you don't want to let them sit outside in the rain or their comfort will rapidly plummet!

Read more about the weather system.

screen25

Vacations

beachvacation

If you save up some coins you can take your pet on vacations.

You can take them to:

  • The park
  • A forest
  • The aquarium
  • The beach

Gardening

The game has a gardening mechanic where you can buy pots, seeds, tools, and fertilizer to add some plants to your pet's environment.

screen26

Having healthy plants around will give extra boosts to your pet's satisfaction.

Playdates

One really special thing you can do with your pet is let them go on playdates with other pets!

If two Catode32 devices are near each other and both access the social menu, then you can start wireless a playdate.

Both cats will appear on both devices, and the pets will interact and build social connections. Cats will start to remember friends they've spent a lot of time with.

Home Comfort

Your pet's device will use WiFi to get a rough sense of the world around it. If it starts to see the same wireless networks frequently then it will feel at home and will be more comfortable.

The intent is that a pet left at home is calmer, sleeps better, and plays more freely, while a pet taken somewhere unfamiliar becomes more anxious and restless.

Sickness

Your pet can become sick if they aren't taken care of. For example, if you feed them too many snacks in a row, leave them outside in the rain/snow, or don't maintain their fullness and cleanliness, then your pet may become increasingly sick.

Read more about sickness to learn more about helping them recover.

Setup

For information about the hardware requirements, the software requrements, or to learn how to configure and wire your ESP32, take a look at the wiki.

It also has detailed information for installing code and flashing your device.

Running the Game

Once everything is setup and the firmware is flashed, the game starts automatically on power-up or reset.

To flash a fresh build and drop into the serial monitor:

cargo run --release

Controls

  • D-pad: Navigate / Move camera
  • A: Select/confirm
  • B: Back/cancel
  • Menu button 1: Global menu options (always the same)
  • Menu button 2: Contextual menu options (based on the current scene)

Desktop Emulator

The game can also be run on your desktop. That allows you to experiment and play with the project without needing to setup a real ESP32.

Read the desktop version instructions for details on how to use the emulator.

screen08

Localization

The project supports several different languages. Specifically:

  • English
  • Dutch
  • Italian
  • Spanish
  • French
  • German

Take a look at the instructions for building with different languages for more details.

Development Workflow

For the fastest iteration, run the game directly on the desktop. See the Desktop Emulator section above for the command that matches your machine (Apple Silicon, Intel Mac, or Linux). The desktop build uses the same catode32-core crate that the firmware uses, so most gameplay changes can be tested without touching hardware.

When you need to test on the device itself, use cargo run from the workspace root. It builds the firmware crate (the default workspace member), flashes it via espflash, and opens a serial monitor:

cargo run --release

Debug builds work too and are faster to compile, but release builds are strongly recommended for on-device testing because the binary is much smaller and the game runs closer to full speed.

Scripts

[TODO] Add a rust version of the test_hardware script.

Contributing

It's helpful to open an issue prior to making a PR to allow discussion on the changes.

It's also helpful to keep PRs small and targeted.

spookycat

Releases

Packages

Contributors

Languages