Releasing PETI Version 0.5.0: The Hygine and Audio Update

Last Updated: 2025-03-18 00:00:00 -0500

Today in the lab, we’re doing some celebrating. I set myself a goal back around the turn of winter that PETI version 0.5.0 would release before Spring had Sprung. And now, with just about a full day to spare, I am announcing that release on time. This marks the fisrt time that a PETI release has been even close to its original promised timeframe and also was quite possibly the most straightforward update I’ve cut. Most of what we wanted to add is basically just new animation, and thanks to the last several refactors of the display code, adding new animation is just straightforward string manipulation now.

I’ve already posted about adding PWM Audio to the codebase, which was probably the most complex part of this update. With this change made though, I’ve managed to prove the concept of reverse-compatibility between the intended future audio hardware coming on the Revision D development kit, and the base functionality of the current Revision C. It sets us up for intended future functionality coming in the 1.0 release at the latest - the ability to define tunes as sequences of arbitrary notes. It won’t quite be the ability to play arbitrary audio and it’ll be limited to a single channel, but it’s still pretty cool.

The other big new feature is of course a rather funny gameplay mechanic: now, the pet can poop, and you can bathe it. The poop mechanic is tied to the tick-down of the hunger bar through some logic that shifts the weights on a roll of the RNG, meaning that it’s not strictly deterministic, which I’ve found to be fun. It’s probable that these weights get shifted around some in future updates.

All the rest has been small quality of life improvements; the pet will now alert when it goes to sleep, we draw nicer status icons, which now follow the pet around as it moves on the screen thanks to a change in how we do metanimations, and text menus will now kick out to the home screen if you hang out on them for too long.

You can grab the source code as well as a precompiled PETI.out binary here or by git pulling the v/0.5.0 branch, whose latest commit at the time of writing was the final release commit.

What’s Next?

There’s sort of two directions to go in from here:

  1. We should really get around to ordering the Revision D boards - now that their final shape is truly known - and restocking our Tindie shop, and;
  2. Pressing on to version 0.6.0.

My current plan is to try and shoot the moon and get 0.6.0 out as soon as the turn of summer, so around the end of June. This update is the Health and Disease Mechanics update, which will see us adding the ability for the pet to get sick, to communicate that it is sick, and for the player to treat the pet. It also sees the use of the Health Byte (which stores certain information about the pet’s overall health) as a determining factor in the evolution mechanism, which means that we can take a more nuanced approach when picking between the Low Care, High Care, and Secret Evolutions.

It is, however, exactrly that straight-forward. No major derailments to go gut part of the display functionality again or need to spend time defining the expansion SPI protocols. 0.6.0 and 0.7.0 are actually the only feature releases slated before the release of 1.0, and while there’s plenty of QoL stuff to pack in and FUTURE tags to resolve before 1.0 can actualy be cut, conservatively that means that by this time next year we might finally be talking about a 1.0 release, which would also mean it’s time to start talking about the standalone toy hardware designs.


If you wanted to show your support financially for Arcana Labs projects like PETI, but don’t need a virtual pet development kit, your best avenue is through the pathways detailed on our support page.

Comments

Using your Fediverse account, you can respond to this article's Mastodon Post. Embracing the spirit of decentralization inherent to the Fediverse, you can use your account on any compatible platform to post. Clicking the "load comments" button below will make your browser request all of the non-private comments and display them below.

This was built based on this reference implementation.