Jump to content

PastryCats — breed the saltiest cupcake-cat (if you want!)


Recommended Posts

Posted (edited)
PastryCats logo
~ PastryCats devlog series ~
A pastry-like cat-raising sim in a baking-themed universe ~ for the browser + mobile

Get invited for beta: pastrycats.com ~ Quick development snippets on Mastodon @coffee ~ You can also read this here: blog.pastrycats.com

We’re a two-partner team, merging our love for immersive stories, slow-burn progression, spreadsheeting our lives, and of course virtual pet sims into one!

To whet your appetite…

We want to bring something new to the virtual pet / raising sim genre! I hope to share our development of these features:

  • multi-breed cross-breeding (think recipes with 3 or more ingredients!)
  • collaborative pet care (à la collaborative documents) for breeding teams/groups
  • custom training buttons (as a basic example, picture a button that triggers a series of training actions in order)
  • spreadsheet-style views to help organize and analyze your pets (this will arise organically from players’ needs)

Crossbreed ingredient cats to make pastry cats with recipes!

This simple idea drives the gameplay for PastryCats, a half-breeding, half-baking (but not half-baked!) raising sim game. What are the wonderful creatures inhabiting this game? Sugar cats, butter cats, flour cats (and egg cats!), for starters. When you crossbreed all four cats, you get a cupcake cat 🧁🐈 There’s a tangle of fun complications to get that working — more on that in a future post.

Meet Butter-Me-Up, a butter cat with high bitterness

Butter cat art

 

The cat art is only temporary, as we’re exploring different avenues

As a butter cat, her “fur” is a layer of butter. She essentially sheds butter. Bitter butter. (Well, that’s an approximate explanation.) Grooming any pastrycat yields some form of pastry, mix, or ingredient.

https://blog.pastrycats.com/assets/img/devlog-0/buttercat-taste-profile.webp

Butter-Me-Up’s taste profile

Her taste profile consists of five tastes: sweet, umami, bitter, salty, tart (the names chosen to avoid too many s__ words, i.e. sweet/salty/sour/savory). The max each taste reaches is controlled by genetic predisposition. As you can see, she has a higher percentage of bitterness, and will likely breed a bitter cupcake cat!

In keeping with the theme of baking, percentages of taste matter in the context of competitions, especially those that account for purity of taste.

Not just a chimera

We want our pastrycats to have internal consistency, unlike a chimera of sewn-together parts. Beyond the alpha stage of PastryCats, the eponymous cats will have:

  • textures (such as airiness and crunch)
  • dominant flavor note (such as floury)
  • protein content

These characteristics will interweave with other mechanics, like personality, custom mixed feed, and competitions. (They will also be supported by lore, which is in-development!)

Cats with autonomy

It’s important for us to keep the pastrycats cat-like. That’s why caring for a pastrycat requires juggling their current level of interest per activity, their autonomy meter, and various other needs — or the cat will assert their independence and perform actions autonomously.

https://blog.pastrycats.com/assets/img/devlog-0/buttercat-daily-log.webp

A log of Butter-Me-Up’s day. The peach background color highlights autonomous actions

Giving the cat control of their activities is also a basic care action!

https://blog.pastrycats.com/assets/img/devlog-0/pastrycat-care-actions.webp

The “Free” action lets the cat choose their next activity

Next post… how our multi-breed cross-breeding system works

This is just a quick introduction/teaser. Hope to see you in the next post! Feel free to ask questions at any time 🙂

→ Next post (devlog #1)

Cupcake recipe visualized

 

The cupcake recipe, visualized

Edited by Recurrence
Add link and fix images
  • Like 1
Link to comment
Share on other sites

Devlog #1 — Multi-breed cross-breeding, recipe-style

Baking recipes as a model for cross-breeding: this idea forms the core of PastryCats, hence it was the first we programmed and polished. Keep in mind sugar cats, buttercream cats, and cupcake cats are all considered “breeds”. We split the breeds into three categories (with increasing rarity!):

  • ingredients, the basic building blocks (like eggs and cream, even if in reality cream is derived from milk, but we may expand on this fact in the future)
  • mixes, combinations that are not considered “finished” products, hence wouldn’t be served at a bakery (buttercream = butter + sugar)
  • pastries, combinations that you would serve at a bakery (like tiramisu and cupcakes, even if cupcakes can be further crossed to make chocolate cupcakes)

← Intro post (devlog #0)

Here’s a cupcake’s pedigree visualized with emojis. It features a sugar cat, butter cat, flour cat, and egg cat, respectively, as the grandparents:

Cupcake recipe visualized

When two cats are bred, we determine the final breed of each kitten according to strict specifications, while also allowing flexibility from the simple fact that recipes can fail.

Sample recipes:

  • buttercream = butter + sugar
  • cupcake = sugar + butter + flour + egg
  • chocolate cupcake = chocolate + cupcake
  • macaron = buttercream + egg + sugar + almond

Let’s get some terms straight to make the rest of the explanations clear. All components to the right of the equal sign are considered direct components. Contrast those with indirect components, which constitute the union of all the ingredients that are transitively components of direct components. For example, the indirect components of a chocolate cupcake are sugar, butter, flour, and egg (but not chocolate — that’s a direct component).

Let’s bake a cupcake! Or, a meandering journey to create an algorithm to match recipes

Here’s how I stumbled into our present algorithm. To skip straight to the rules, see the headings below.

Let’s whip up a simple cupcake!

Pedigree of a valid cupcake with sugar, egg, flour, butter as the grandparents

(For this pedigree to work, note that pairings which don’t match a recipe result in one of the parents.)

We lack the Michelin chops to pull off noodle-filled dessert cupcakes, so no noodle cats permitted in our cupcake cat’s pedigree. Let’s issue an ultimatum: no unrelated cats in our recipe. How far back should we check? Three generations for pastries seems reasonable, allowing eight direct components; two generations for mixes, allowing four direct components.

Pedigree of an invalid cupcake due to the presence of noodle

What about indirect components — like sugar, butter, flour — in a chocolate cupcake? Kind of a necessity, otherwise a pedigreed cupcake could not hope to breed something interesting, hence the pedigree chart on the left. So indirect components can happily contribute to a pedigree, but…

Pedigrees of a valid chocolate cupcake with parents chocolate and cupcake, and an invalid chocolate cupcake due to having a flour parent

…a chocolate cupcake with flour as a parent? Opinionated, yes, but somehow that strikes the wrong tone. Let’s disallow indirect components as parents.

It would be dead simple to propagate cupcakes endlessly, if they bred true, so let’s further disallow purebred cupcakes. For a recipe to match, the parents must be direct components. (Hmm, but what a shame for cupcake x cupcake to never result in a cupcake, right? We’ll fix that.)

So cupcake ingredients are fairly common — in fact, identical to the recipe for pound cake. With our desire for an ever-expanding recipe book, this poses a problem: how can we differentiate pastries with maddeningly identical ingredients? A future feature may involve external or additional conditions (picture location-specific breeding, the presence of certain genes, and so on), but a simple temporary solution is to pick randomly when multiple recipes match.

And prioritize pastry recipes over mixes since pastries are complicated to breed, and possibly more coveted. It would be unpleasant for the following pedigree to always result in buttercream.

Pedigree of a valid cupcake despite the previous 2 generations also matching buttercream

What about that cupcake x cupcake conundrum? Introducing failure! All breeding attempts can result in recipe-matching failure, producing either a copy, direct component, or indirect component. So you can bake a cupcake out of pure cupcake parents, but to keep it challenging, it’s a rare one!

Pedigree of a valid cupcake with 2 cupcake parents

Breeding on hard-mode

Remember how pastry recipes consider three generations, and mix recipes consider two generations? This allows for nightmarishly difficult pastries with 14 (!) direct components, and mixes with 6 direct components. Let’s imagine the fantasy recipe: butter-choc mix = buttercream + chocolate cupcake + sugar + butter + chocolate + cupcake….

Pedigrees of an imaginary 14-ingredient pastry where all direct components are represented as numbers, and a "butter-choc mix" whose parents are buttercream and chocolate cupcake

No failures allowed. Can you imagine breeding the hypothetical 14-ingredient pastry? Whew!

Concrete rules for matching a recipe

To summarize the above:

  • all direct components are in the immediate pedigree
    • for pastries: look at the previous 3 generations (allows 8 direct components)

      Pedigree of a valid cupcake with sugar as a parent, butter as a grandparent, and flour and egg as great-grandparents

    • for mixes: look at the previous 2 generations (allows 4 direct components)

  • both parents must be direct components

Pedigrees of a valid chocolate cupcake with parents chocolate and cupcake, and an invalid chocolate cupcake due to having a flour parent

  • all indirect components are allowed

Pedigree of a valid chocolate cupcake with emphasis on the indirect components, the ancestors of the cupcake parent

  • nothing else is allowed

Pedigree of an invalid cupcake with buttercream as a grandparent (from great-grandparents butter and sugar)

Rules for finalizing a breed

  • if multiple recipes match, one is selected at random so plan your pedigrees wisely
  • pastry recipes will match before mixes (if the breeding is considered successful, mixes won’t even be checked)

Pedigree of a valid cupcake despite the previous 2 generations also matching buttercream

  • all recipes have a chance of failing: this guards against the possibility that every two components match a recipe (what if every possible cross of sugar, butter, flour, and egg created some mix/pastry such as buttercream?)

Pedigree of an invalid cupcake with buttercream as a grandparent (from great-grandparents butter and sugar)

  • failure (or lack of a match) results in either a copy, a direct component, or an indirect component of a parent (likelihood is ingredients > mixes > pastries)

Pedigree of a valid cupcake with 2 cupcake parents

Now that I’ve listed out all the rules and examples, it might be time for me to revisit our tests…. Incidentally, pastries can’t at present “fail” into a mix (so no cupcake-matching pedigree can produce, say, buttercream). Something to be added….

This sounds needlessly complicated….

Yet fun! I’m toying with the idea of adding tools to “preview” all possible outcomes of a particular pairing of cats. Perhaps it only displays outcomes that the player has unlocked? (So if you’ve never bred a cupcake before, it won’t be easy to check if your pairing can produce a cupcake.) Another expansion on this idea is to adjust failure chances. Maybe your first cupcake will be the most punishing to breed (and require a recipe success), after which the success rate goes up?

UI Design Frenzy

(All those unfortunate gray circles are an artifact of Sketch’s comment system.)

A screenshot of the UI designed in Sketch app

Pictured above is a screenshot of our Sketch file, where I design the UI components piecemeal (with a chaotic sense of organization). Each UI component is iterated on until I am satisfied, upon which it receives the 🐈‍⬛ stamp of approval. Afterwards, my all-seeing cat god (read: loyal frontend implementer) does her thing, then bestows the 🐈 stamp of completion. I keep all the rejects mixed up with approved versions, because in time, rejects prove to be gems for another purpose.

I fully expect UI overhauls are in short order, upon opening up the game to people that are not myself or my partner. Hopefully, I’ve created a system where primary actions are self-explanatory for most, and elements that may require learning are less essential. It’s a careful balance to strike between self-evident UI, aesthetics, and screen real-estate. (Make it “too obvious”, and it may result in generic UI or UI that occupies large screen space.)

Of course, short tutorials, tooltips, and a high degree of customization will likely ease the problem of UI confusion. Also, the cat’s care page doesn’t begin so cluttered: features are unlocked as their age/training progresses to vary the gameplay over time, provide a sense or progression, and not overwhelm players on their first cat.

Next time… cat autonomy in greater detail!

The peach background indicates autonomous actions taken by Butter-Me-Up

Butter-Me-Up's daily log

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...