Art & Music - Module 9: Designing Games (Spring 2025)

"Creating Art & Music" is an introductory course designed to introduce creative activities in the context of art and music. Thus far the course has been taught at the middle school, high school, community college, and university level (with appropriate adaptations for each level). Each week this fall, students in the course are posting their projects in this strand of the Snap! forum. Here is s a link to the course materials:

Art, Animations & Music

In this week's module, we will begin exploring how to create games in Snap!. Since games tend to be more complex, this module will extend across multiple weeks, as we develop concepts, create first drafts, and then refine mechanics and features.

As a jumping off point, please review the documents on the course page for the module on Designing Games. This includes links to several games of varying complexity as well as text documents showing how they were built.

The games included are:

Side Scrollers
Simon
Pong
Battleship
Pacman

Feel free to review past versions of this module or other projects published in Snap for additional game ideas.

Once everyone has outlined a game they want to create and described the elements they want to include, we'll work on creating those elements and assembling them into a fully functioning game.

The concept of my game will be similar to Doodle Jump. So, it'll essentially be a 2D platformer where players have to jump up to certain platforms to progress. Here are some of the mechanics I hope to implement in the game:

  • Points system
  • Movement (moving left and right)
  • Scrolling background (vertical)
  • Collision detection with platforms
  • Auto-Jump system
    In the original game, there is no win condition, however players try to get as many points as possible. The losing condition will be when the player falls off the platform/map and dies. I think that the most challenging parts of this will be generating the right amount random platforms and controlling the scrolling of the game. I haven't created any sample code yet, but I saw some examples from others similar to this game I hope to expand on.

For my final project, I want to continue focusing on creating music. My goal is to create close to a 1 minute song that has a drum track, a main melody, and a harmony. I want to push myself in creating rhythms with different instruments that complement each other nicely. Some potential areas of difficulty I predict include timing my different tracks so that they play simultaneously and also setting realistic expectations for what I am able to create with my code. I want to use some of my code lines from Week 8, but am going to use a different melody track because the timing started to become wonky after adding the saxophone melody line last week.

The game concept that I have in mind includes a similar concept to that of Donkey Kong, but a little different. The plan is to assign the player 3 "lives" that get decremented any time they run into an enemy or obstacle while trying to reach the "top" of the game (win condition). The game also will include a rising lava pool that will ensure that players will go upwards instead of just moving laterally. The game will include "ladder" type mechanics that will allow players to go upward through different floors that lead to the top. Some game mechanics that I will need to implement include a rising lava stage, a way to implement upward movement based on a ladder sprite, enemies automated to move a certain amount left or right to make approaching a ladder harder, and also a way to decrement "lives" every time an enemy is touched. The scoring system will mainly just be keeping track of "lives" and the win condition will be reaching the top marked by another sprite like a flag. A player loses once all three lives are depleted or if they touch the lava at any point during the game. I predict that some difficulty will arise when trying to implement the ladder portion of the game and creating code that allows for upward movement only when a player is in contact with a ladder.

My game idea was a sort of top-down survival game; the gist of its gameplay would be fending off procedurally-generated enemies which home on the player's location. There will be a score/exp tracker, and crossing a threshold will grant the player permanent buffs, such as a heal, more damage, larger area-of-effect, movement speed, or an extra life. Here is the project link (it will continue to be updated).

Mechanics:

  • Top-down, omnidirectional movement
  • A means of attacking
  • Buff + level up system
  • No win condition defined yet; loss condition defined as losing all lives

Potential difficulties:

  • Procedural generation of enemies + removal of defeated enemies

My final project idea was to create a song but in the lieu of the class going into video games I think I want to create something that is more upbeat and that could be categorized as either a battle theme or a victory theme or sorts. Regardless of the idea, it is meant to serve as game music, it is not in collaboration with anybody specifically but I will be taking inspiration from video game OSTs such as the final fantasy victory themes or Pokemon battle themes. I expect to either create some sort of full orchestral piece with brass, woodwinds, and strings or I may make my life simpler by focusing on one instrument as my main focus with other supporting instruments.

My biggest difficulty I forsee is being able to create a catchy 'jingle'-like melody if the purpose would be to have it loop at least ~2-3 in a single stage or battle.

https://snap.berkeley.edu/snap/snap.html#present:Username=ekim1211&ProjectName=final(%3F)%20project

03/31/2025 - ended up going with a more victory fanfare theme. Added chords and a simple bass line but for some reason the last 4 beats are being omitted or there is a weird skip in the chords. I tested different note durations but for some the last note in the list is being omitted in within my chords so i isolated it to it's own whole note and it still doesn't work. Otherwise I like the chord progression with the trumpet so far.

For my final project I want to create a game that is similar to mario, so the player can move left, right, and jump, and there will be a scrolling screen. It will be a platformer and in order to win, the player will have to cross the “finish line” at the end. I will use my sprites from the animation assignment and the player will have an attack ability. They player will start with three lives and there will be enemies within the game that can harm the player. If the player loses all three lives before reaching the end, they will lose. I hope to implement two different kinds of “enemies”. One type that is stationary (like platforms that can harm the player if they land on it) and more active/moving enemies. I imagine adding moving enemies will be the most difficult part of this idea.

For my final project, I want to create a side-scrolling game where they have to avoid objects. The player will have the ability to move up and down using their mouse to avoid objects. They will get three chances (lives) in case they run into an object. Once all the lives are lost, the game ends. I want my game to be similar to "Flappy Bird" where a bird (the sprite) avoids the green pipes but instead of using the space bar to jump, the player uses their mouse.

I think my most difficult part will be implementing the three lives and the addition of new objects from the side scrolling.

For my game, I want to make a Guitar Hero-type game. If syncing exactly to music turns out to be too difficult, I could also do something similar to Dance-Dance Revolution, which would have a little more allowance for being out of sync. I need to implement the signals appearing on the screen, and either scrolling sideways or falling down. I also need to make it so that the player can press a button and it will activate as the signal crosses it. For scoring, to simplify it I will probably just either do hit (player presses correct button when the signal is within a certain range) or miss (player doesn't press the button, or presses the wrong button). I think syncing up the signals with the player button presses might be difficult, as well as syncing music and playing notes if I decide to go with the Guitar-Hero game.
https://snap.berkeley.edu/snap/snap.html#present:Username=lilymutzig&ProjectName=Final%20Game%20Project

For my game I want to make a sort of maze to complete with enemies on the way. I believe making it a maze and not a normal mario-esque background will make it much easier to create. However, to make it a little more complicated, I want the characters to land on a spinner that changes their directions. So when you click the up arrow, it will now be now, etc. I think this is the area I expect to see the most difficulty, but I think it will be something I can handle and figure out. The scoring system will be a simple, you made it alive or you didn't, with potentially some harder courses. For game mechanics, I think I am going to have them use the arrows on their keyboard to have them move around the screen. I will need to make a code saying if they touch the wall, then they cannot move. So that way that stay inside the lines of the course.

I want to make a top-down survival style game, with open world aspects to it. The user will control a character using the keyboard to move around a map, where the scene is a "room" and the user can travel between rooms and explore the world through doors at the borders of the scene. At every room there will be enemies that spawn in and if they touch you, you will lose health, dying if you get hit enough. I might make the enemies increase in number the more rooms you go through, or the more time passes. Depending on how the implementation of this base structure goes, I will also add more features, such as abilities to sprint or stun/kill enemies. I also will play around with how the enemies move around, right now I am thinking of having them make some random movements in a general direction towards the player. Time permitting, I also want to play around with making a soundtrack and sound effects for the game. For a win condition, I am thinking of having the user reach a final room after passing through a certain amount of rooms, that has some victory object to touch. Dealing with the movement in a way that makes a satisfying game to play I think will be the hardest part.

For my final project, I want to continue with my idea of a version of blackjack. The main premise will be the same as blackjack, where you continually get cards to get as close to 21 without going over. For the player, I will stick to the base rules at first, like hitting, staying, and doubling down. With time permitting, I will try to implement splitting and insurance as I believe that these will be more difficult to add into my game. From the dealer's side, I'll make the rules the same where they have to hit until they get at least a 17 and bust if they go over 21. I may also add background music and other sound effects, like a "womp womp" when the player busts. The scoring of the game will be based around how much money the player has, with the player losing when they hit 0.

Last time, I considered making an obstacle-avoidance game, but I came up with a more interesting idea and decided to change my project.

It falls into the category typically known as "Merge" games. Examples include Merge Dragons, 2048, and color-sorting beverage games. I plan to create a simpler version with a different approach. The game will have a restaurant theme, where players drag and merge two identical food items to create the next-level dish. The goal is to reach the final-stage food to win.

One potential difficulty in developing this game is ensuring that only matching food items at the same level can be merged and, if merged successfully, adding a new lower-level food item into an empty space.

(Originally, I wanted to implement 2048, where players combine identical even numbers to ultimately reach 2048. However, handling the algorithm for shifting all numbers in a given direction based on player input and correctly merging them felt too complex. As a result, I decided to go with a simpler version.)

For my final project I'm deciding between making a game like Pac-Man or Flappy Bird. Either game I decide will feature animated sprites, sound effects, and a scoring system to track player progress.

Game Mechanics

  • Pac-Man:

    • Arrow key movement for navigating the maze.
    • Enemies that follow different movement patterns (random generization).
    • Collectible dots that increase the score.
  • Flappy Bird:

    • Gravity pulls the bird downward; clicking/tapping makes it flap upward.
    • Continuously scrolling background with procedurally generated pipes.
    • Collision detection to determine when the game ends.

Scoring System & Win/Loss Conditions

  • Pac-Man:

    • Players gain points for collecting dots.
    • The game is won by collecting all dots or lost by touching an enemy too many times.
  • Flappy Bird:

    • The player earns points for each obstacle passed.
    • The game ends when the bird collides with an obstacle or falls off the screen.

Potential Challenges in Game Creation

  • Animating Sprites: I will need to use costumes to animate movement.
  • Collision Detection: Detecting when the player touches walls, enemies, or obstacles can be tricky. I am nervous about the code being delayed.
  • Jumping: I'm nervous I won't know how to make the bird jump/fly (Would this be a situation where I put the bird at an (x,y) coordinate and then have it move steps forward?)
  • Sound Timing: Ensuring sound effects play at the right time without lag.

I'm still deciding which I like more, and which will be more feasible given the time we have for this assignment. If anyone has any ideas/advice/suggestions that would be awesome!

Here is my code so far! So far I've made the 3 sprites (open pacman, closing, and closed). I used a previous example to help me make the grid for the pacman. I am having trouble figuring out how to code using the arrow keys for navigation, but that's my next step! Then I will add the dots and ghosts.

Here is my project so far: Snap! Build Your Own Blocks

I'm using a lot of inspiration from the following project: Snap! Build Your Own Blocks

Here is my game so far. I don't know how to flip the direction of the character, I know how to change the orientation but I want to flip it so it faces the other way. Also, I am struggling to get the character to stay inside the lines, I tried to make a code so that he would stop if he hit the wall but it is not working. But, I think I have made some decent progress.
https://snap.berkeley.edu/snap/snap.html#present:Username=abbymeckes&ProjectName=Designing%20Games&editMode&noRun

This is my project so far. I've added basic movement, but some of it looks a little choppy (specifically the run jump because the player stays in the air too long). I want to work on refining some of the movement and also work on having more of the level show up when the player moves to the right.

this is my project so far: Snap! Build Your Own Blocks. so far, i am setting up the initial card values and am working on letting the user hit or stand.

This is my video game so far: here. I set up some background scenes and character sprites, and so far have basic functionality for the character running around and switching between scenes.