SCRATCH: Caketron 3000

Byte-Sized Bakery: Building a Nostalgic Cake-Making Game

  • The foundation of this project stems from a nostalgia for childhood gaming experiences, particularly those centered around cooking and creation. Through my growing interest in coding, I discovered an opportunity to transform these memories into a digital reality. What began as curiosity about programming's possibilities evolved into a focused project combining nostalgic gameplay elements with modern development techniques.

  • My ideation process focused on thoughtfully combining key elements from both Pizzatron 3000 and Cooking Mama into a cohesive new experience. The core components were broken down into:

    Interactive Elements:

    • Created selectable toppings, frostings, and cake bases inspired by Pizzatron's ingredient counter

    • Developed a component system allowing for precise placement and combination of elements

    Visual Design:

    • Implemented a retro kitchen aesthetic drawing from Cooking Mama's warm, inviting environment

    • Integrated a personalized touch by animating my own headshot as the main character

    Game Mechanics:

    • Adapted Pizzatron's time-based order fulfillment system

    • Incorporated increasing difficulty through progressively complex cake orders

  • The development process followed a systematic approach:


    Asset Development:

    • Identified required visual components: custom avatar, kitchen backdrop, cake components, and packaging

    • Generated initial assets using ChatGPT's image-generation capabilities

    • Refined all visuals through Canva, with a focus on clean backgrounds and consistent sizing

    Game Structure Implementation:

    • Created an engaging introduction sequence with music integration

    • Developed player information collection system

    • Built a dynamic order generation system using control blocks to manage the timing

    • Implemented a 60-second gameplay timer with appropriate end-state handling

    Technical Integration:

    • Utilized control blocks to manage menu item rotation timing

    • Created a variable system to track and display customer requests

    • Implemented game state management for the intro, gameplay, and completion phases

  • Test: The testing phase focused on three critical gameplay segments:

    Initial Phase (0-30 seconds):

    • Verified limited component options (2 choices each for bases, frostings, and toppings)

    • Confirmed 3-second order display intervals

    • Tested basic order submission mechanics

    Advanced Phase (30-60 seconds):

    • Validated expanded component options (3-4 choices)

    • Verified accelerated 2-second order intervals

    • Tested increased difficulty progression

    Order Fulfillment System:

    • Confirmed box selection in corner triggers order submission

    • Tested counter increment functionality

    • Verified proper order clearing after submission

  • Through testing, several critical issues were identified and resolved:

    Component Movement:

    • Initial Bug: Components either remained static or moved too rapidly

    • Solution: Adjusted timing variables and implemented smoother transition controls

    • Result: Achieved balanced component movement speed

    Variable Display:

    • Initial Bug: Incomplete display of add/replace variables

    • Solution: Restructured variable initialization and display logic

    • Result: Ensured consistent display of all component options

    Visual Alignment:

    • Initial Bug: Cake components appeared misaligned

    • Solution: Implemented precise coordinate system for component placement

    • Result: Achieved visually coherent cake assembly appearance

    Difficulty Progression:

    • Initial Bug: Inconsistent transition between difficulty levels

    • Solution: Created separate control structures for each difficulty phase

    • Result: Smooth progression from basic to advanced gameplay

    Counter Functionality:

    • Initial Bug: Score counter not incrementing with boxed orders

  • Introduction and Game Start Actions:

    Backdrop and Initial Setup

    • Switch Backdrop: switch backdrop to [Baking Kitchen]

    • Show/Hide Sprites: show and hide

    • Go to Position: go to x: [ ] y: [ ]

      • Places sprites in the correct starting position on the screen.

    Game Variables and Lists

    • Set Variables: set [Timer] to [60] and set [New Order] to [ ]

      • Initializes game variables (Timer, New Order).

    • Pick Random Numbers: pick random [1] to [3]

      • Randomly generates order components (e.g., cake, frosting, topping).

    Game Loops

    • Repeat Loops: repeat until [condition]

    • Wait: wait [ ] seconds

    Interactive Player Prompts

    • Ask and Wait: ask [What's your name?] and wait

    • Say: say [Welcome to the game, <name>] for [2] seconds

      • Displays personalized text on the screen.

    Gameplay Instructions

    • Broadcast and Wait: broadcast [New Order] and wait

      • Sends a signal to start generating a new order.

    Feedback and Tips

    • Conditional Checks: if [condition] then

      • Checks if the player’s selection matches the order requirements.

    • Play Sound: play sound [correct] until done

      • Plays sound effects to provide feedback.

    Game Over Mechanism

    • Switch Backdrop: switch backdrop to [Game Over]

    • Hide Variables/Lists: hide variable [Timer] and hide list [New Order]

      • Cleans up the interface by hiding unnecessary elements.

    Timer and Order Completion Counter

    • Set Timer: set [Timer] to [60]

    • Set Variable: set [Completed Orders] to [0]

      • Resets the count of completed orders.

    • Change Variable: change [Completed Orders] by [1]

      • Increments the count each time the player completes an order.

    Specific Actions for Cake Assembly

    Select the Cake Base

    • Check User Input: if [Selected Cake] = [New Order]

      • Verifies if the player selected the correct cake base.

    Add Frosting

    • Conditional Logic: if [Selected Frosting] = [New Order]

      • Ensures the frosting selection matches the order.

    Add Topping

    • Compare Values: if [Selected Topping] = [New Order]

      • Verifies the player’s topping selection.

    Box the Completed Order

    • Broadcast and Wait: broadcast [Order Up!] and wait

      • Signals that the current order is ready for assembly

    • Change Variable: change [Completed Orders] by [1]