Stop the Logger – Scratch Game Whitepaper

“Stop the Logger” Whitepaper

Using the ADDIE Model for “Stop the Logger” Scratch Game Development

Avi Megiddo

April 2 – 9, 2023

OVERVIEW

This document is a whitepaper/documentation for a game created using the ADDIE model for instructional design. The game involves catching a tree logger or “arresting” the logger using a “catchable” button in Scratch. The game was inspired by a button script from years ago and the birds outside my window. The trees in the game are from PNGTree.com and PNGWing.com, and the code randomly chooses one, “plants” it in a random location on the screen, and grows every second with a bit of accounting for upward and outward growth, but not downward. 

Analysis:

I was inspired initially by the button script from years ago, where it moved away from the mouse pointer as you tried to click it. This inspired me to create a “catchable” button in Scratch, which I used in the development of the game. After thinking about what makes sense to “catch” and still be educational, I came up with catching a tree logger, or “arresting” the logger. 

I found an animated gif of a logger/lumberjack on Dribbble.com,  by searching for synonyms of logger/lumberjack/tree logger and ‘gif’, and used a web-based tool to make all the gif images have a transparent background. Importing them as a new sprite took one click, and that was the basis for the game.

I was also inspired by the birds outside my window while creating the functions, and used bird call sounds from ZapSplat.com to reward the player after 10 trees were alive. Additionally, a student’s project inspired me to use the number 20 for a “winning amount” of loggers to catch.

 

Design:

In terms of design, I made the “caught” version of the logger by taking an image from the logger gif, and copy+paste+flip horizontally to make the arms look like they were handcuffed. I also created handcuffs in Google Drawings and finalized the design of the handcuffed tree logger using the Scratch costume editor. When the user successfully clicks on the logger, I decided to show a funny utterance instead of educational content to reward the user. I used my resizing concept to make the logger shrink as he rose to the top of the screen to join his other caught logger friends. 

 

The trees were also made using the ‘clone’ feature in Scratch, and some of the hard challenges included managing the clones, creating actions upon starting as a clone, deleting at the right time, and stopping other scripts in a sprite upon certain actions/states of the game, such as trees equalling zero and 20 loggers being caught.

Development:

 

To develop the game, iteration was key. I revisited the code for 30 minutes to 2-hour sessions, adding features, debugging, iterating over the project, upgrading, and saving to the computer stable backup versions, about 10 times. 

A random tree is chosen every second, with a random location on the screen, size adjusted based on position, and growing every second with a bit of accounting for upward and outward growth, but not downward. I used the size of the tree to make trees smaller or larger, depending on how high their randomly chosen y-values are, using the formula (180 – y-position) times some coefficient.

A recent iteration/upgrade was to how the trees fall when they die. Initially, I just rotated a tree 90 degrees when the logger touches it, but the upgrade involves repeating 10 rotations of 9, and a random choice of clockwise / counterclockwise rotation.  Further, the tree moves down as it rotates, to simulate rotation from the root, not the middle.

Implementation:


During implementation, I continued to test the game and made adjustments as needed. I added scoring functionality, where the player earns one point for each logger caught and loses one point for each tree lost. I also used the stamp tool as a way to delete each caught logger clone. I made the game more challenging by having the trees grow faster and adding more loggers to catch over time.

Evaluation:

In terms of evaluation, I tested the game with several individuals to get feedback on the gameplay and design. Based on the feedback, I made further adjustments to the game to improve the user experience. Overall, the game has been well received and has provided an engaging way to learn about deforestation.

 

MILESTONES

  1. Getting the button to move away from the cursor at a custom speed, based on a custom distance.
  2. Finding and importing the logger .gif 
  3. Dynamic sizing based on height.
  4. Creating the “caught” logger.
  5. Tree growth and death upgrades.
  6. Changing frequency and speed of logger based on # of catches.
  7. Adding educational messages upon loss/win.
  8. Adding a trophy/badge and music upon win.

Code, Click, and Spin: The Digital Spinner

Bridging Computer Science, Design, Physics, and Math with Interactive Classroom Experiences

Welcome to the home of innovation, where the classic game spinner is reimagined for the digital age. Here, I combine the time-honored joy of anticipation with the precision of modern technology. This spinner isn’t just a tool; it’s a harmonious blend of design, mathematics, and computer science, all brought to life through the power of conversational coding with ChatGPT.

Check it out:

Features:

Programmatic Creation: Spinners are generated through Python code, leveraging ChatGPT’s conversational AI to refine the design and functionality. This ensures a seamless and efficient process from concept to creation.

Dynamic Spinner Size: The tool automatically adjusts the spinner’s size based on the participant list length. By parsing a comma or space-delimited string of names, it dynamically generates a spinner with the corresponding number of sectors, making it adaptable to various group sizes.

Mathematical Precision: Incorporates mathematical formulas to accurately determine the spinner’s winning sector based on degrees rotated. This not only enhances the fairness of the selection process but also introduces students to practical applications of geometry and arithmetic.

Engaging Sound Effects: The inclusion of sound effects and the potential for an AI-hosted voice add an auditory dimension to the experience, making the spinner more interactive and enjoyable.

Interdisciplinary Educational Tool: This project exemplifies interdisciplinary learning, combining elements of Language Arts (communicating ideas to AI), Computer Science (coding the spinner in Python and Scratch), MYP Design (creating a user-friendly interface), and Mathematics (applying geometric and arithmetic principles).

Accessibility and Integration: Designed to run in Google Colab, the spinner tool is accessible and easy to share, thanks to its integration with Google Drive. It requires no setup, making it readily available for educators and students.

Active Learning: Encourages active learning by allowing students to directly engage with coding concepts and see the immediate impact of their work. This hands-on experience is invaluable in reinforcing learning objectives and fostering a deeper understanding of the subject matter.

Conclusion:

The spinner is a bridge between the physical and digital.  This project is a testament to the power of interdisciplinary collaboration, demonstrating that with creativity, technical skill, and a bit of AI assistance, the possibilities for enhancing education are limitless.

My original Scratch project and code:
https://scratch.mit.edu/projects/970791967

My createSpinners Python code:

Spelling Bee in Scratch



Inspired by the NY Times Spelling Bee, I challenged myself to create a Scratch version of this game.
Rules: Words must be at least 4 letters long, and must contain the yellow center letter. Letters do not have to be adjacent to each other, and duplicating letter is allowed. I created the background hexagons with Google Drawings and Inkscape. In Scratch, I created a “dictionary” based on English word list from: http://www.mediafire.com/file/5cy3vcsag29ic43/Word_List.txt/file
I also created letter frequencies based the following sources:
https://www3.nd.edu/~busiforc/handouts/cryptography/letterfrequencies.html
https://en.wikipedia.org/wiki/Scrabble_letter_distributions
https://en.wikipedia.org/wiki/Letter_frequency

I got a great suggestion from Nirmala Sankaran, Co-Founder of HeyMath, to include the total possible words for a given board. This required iterating over the dictionary and checking if each word is valid for each board, given the game rules.

You can find the original code here: https://scratch.mit.edu/projects/603333011