Giter Site home page Giter Site logo

amueller8 / cupcake-conveyor Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 4.24 MB

"Casual Creator" written in Processing that allows the user multiple ways to express their own creativity via decorating cupcakes on a conveyor belt or freeform cupcake decorating.

JavaScript 100.00%
casual-creator computational-creativity game javascript processing

cupcake-conveyor's Introduction

Cupcake Conveyor

About

Cupcake Conveyor is a casual creator with 2 different creation modes. One is the conveyor belt frosting mode, where you can bake cupcakes that come by on a conveyor belt and then select frosting colors for cupcakes as they come by. You can create fun scrolling patterns as the cupcakes go by, and if you come up with anything very pleasing, you can pause the conveyor belt to take a screenshot!

The other mode is decorating mode, where you can frost a plain cupcake and also add magic color-changing sprinkles.

The conveyor option is great for people who don't feel like they are artists-- they can still inform a creative process without much mouse-dragging! The decorating mode is great for freestyle artists, and each screenshot you take will be different due to the sprinkles flashing colors.

(The conveyor option was loosely inspired by this game I played in childhood, Hey Girls Muffin Maker (have linked to a hosting site). That game gave negative feedback if you messed up though-- which could be humorous, but I wanted to let the user evaluate their own cupcake-making. My version of the game is simplified, and just lets the creator create.

What are users casually creating?

Users are casually creating cupcakes in a variety of ways!

How are they kept engaged and excited to create?

Users have a couple of decorating options in case one becomes boring. They can toggle back and forth! They also can play with pausing the conveyor belt to create new visuals.

How does this help people make something they are proud to share?

There are a couple of options, one that is a little more regimented (conveyor mode) and one that is freeform. So if someone doesn't feel comfortable or maybe is unable to use a mouse well (eg physical disability) they can still participate and create something "polished", or someone can put themselves out there and try freehand cupcake decorating!

Conveyor Mode

After clearing the entry screen: Screen Shot 2022-12-14 at 10 08 29 AM

5 baked cupcakes! Screen Shot 2022-12-14 at 10 08 48 AM

Decorating Mode

Screen Shot 2022-12-14 at 10 10 05 AM

Link to Play

See it on openprocessing.org here;

You can also paste this code into a processing script yourself, although I coded it in their browser IDE.

Personal Meaning

This idea was inspired by a game I loved as a child (linked above), it was very satisfying to decorate cupcakes on a conveyor belt. That game was far more complex, but telling people I was working on this brought me lots of joy! It reminded me of hanging out with my sisters as we all watched each other play computer games (definitely nostalgia). It also was very fun to create something "cute": I sometimes shy away from stuff like this as a woman in CS because I don't want to feel like I'm playing into a stereotype of being too girly, but this was really fun and I'm so glad I didn't feel personal pressure to do something more stereotypically intellectual/lofty.

Next steps going forward may be to fix some of these bugs and add in a few features that didn't fit with the scope of finals/timeline but that I would love to include (dropping frosting animation, for example).

Challenges

I had never used Processing.Js before and I was in for a big learning curve in terms of figuring out animations, etc. I also had initially scoped out more than I could handle which was very frustrating. I had to scale it back appropriately so that I could still include both modes (initially I had spent hours working on an animation for frosting dropping down out of the icing bag, a la Holly Hobby Muffin Maker, but although I had the falling part working very well, setting the X coordinates appropriately within the time loop proved to be elusive with the few strategies I tried). It was a good lesson in scope, for sure.

Bugs

I turned a bug into a feature-- with the frosting bag, although you could cycle through 4 colors, the 4th color was coming out as a no-fill no stroke shape. So I made that "no frosting". My intuition is that is is something with how I update num_frosting_changes (number of clicks on the frosting bag) versus how often the draw loop is updated, but I spent a good hour debugging and didn't quite resolve it so turned it into a feature.

Also, I hard code the icing start color as pink, so even if you start with the frosting bag as blue/purple, when you bake the cupcake it will come out pink. This was to keep consistency among the start colors: I had considered a global array of start colors for each cupcake but decided to scrap it (seemed like a lot of for loops/etc) in the interest of finishing out the rest of features.

Resources

In additon to the processing.js documentation, I found these resources helpful:

https://discourse.processing.org/t/how-to-save-a-previous-mouse-position/24434/2
The above resource helped with saving mouse positions for the frosting/sprinkles. I was having a frustrating experience with a single ellipse moving around the screen because the mouseX/mouseY and loop were updating and drawing so often, nothing got left behind. (ie the circles hadn't been redrawn before).. https://bjango.com/articles/processingperfectloops/
The above resource I used for the timeLoop feature of the conveyor belt, to keep the conveyor squares and cupcakes all moving continuously.

cupcake-conveyor's People

Contributors

amueller8 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.