Recurrence Posted May 19 Share Posted May 19 (edited) ~ 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 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. 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. 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! 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) The cupcake recipe, visualized Edited May 28 by Recurrence Add link and fix images 1 Quote Link to comment Share on other sites More sharing options...
judda Posted May 20 Share Posted May 20 I absolutely love this concept! I can't wait to see what comes next. 1 Quote Link to comment Share on other sites More sharing options...
Recurrence Posted May 28 Author Share Posted May 28 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: 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! (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. 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… …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. 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! 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…. 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) for mixes: look at the previous 2 generations (allows 4 direct components) both parents must be direct components all indirect components are allowed nothing else is allowed 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) 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?) 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) 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.) 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.