“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, students in the course are posting their projects in this strand of the Snap! forum. Here is s a link to the course materials:
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.
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.
https://snap.berkeley.edu/snap/snap.html#present:Username=artiehumphreys&ProjectName=Pong
For my project, I’m going to start with classic pong, but make different gamemodes, like typical two-player pong, AI opponents with varying difficulties, and even online multiplayer with the help of cloud variables, like supported in this post: Even faster cloud var blocks! . If that doesn’t work, I may try implementing something on my own. But for now, I think that this gives me enough to work with over the next week. I may also add some music, and even an enemy entity that does something when touching the ball to spice things up.
For my game, I want to try to recreate Bloons tower defense. In order to do this, I will need to create code to enact the towers with the ability to upgrade them. Similarly I will need to include interactions between the towers and the balloons. Finally, I will need to make the balloons be able to move. The win/loss condition will be X amount of rounds with increasing balloons, and winning will be surviving for the entirety of all the rounds. I anticipate the greatest difficulty coming from making the interactions between the objects. I plan on incorporating a background music, popping sounds when the balloon is popped, and sprites from online.
I would like to make my game based on a minigame with Stardew Valley. That game is titled “Journey of the Prairie King” and is a one-screen shooter survivor game. I want to include clones of enemies that change their X and Y values on the screen depending on where the player character will be. I would also like to make it so the player can move up, down, left, and right, and shoot in the direction that they are facing. I would implement a life system, and potentially more than one stage if I have enough time to do so.
I want to make a game like Geometry Dash. It’s basically a game where you are trying to get a character (block) to the finish line by passing a bunch of obstacles. I want to include a character that constantly moves to the left and it can move up or down. I would 2 barriers at the bottom of the screen and top of the screen with obstacles on them. If the character touches an obstacle, the game would be over. I plan on incorporating background music and game over sounds.
I think I will attempt to make Catan. I will need to implement a user interface and a moveable game board, dice logic, placing elements at a user’s command, drawing cards, etc. The game works based on a player reaching 10 victory points first, so that will be the win condition.
I expect the most difficult in placing pieces correctly and for following the game logic. For example, you can’t place two settlements within 2 adjacent spots so implementing that logic might be difficult.
For sound I will probably just add effects for when you place a road, settlement, city, get a victory point, draw a dev card, and win the game.
I look forward to this project, I expect it to be challenging but think it will be fun to work through it.
I plan to attempt making the dinosaur game from Chrome. The concept is that the dinosaur is running through the desert and has to jump over cactus’s and duck under birds. The game mechanics I will need to implement are the side scrolling of the background and obstacles, the jump and duck features, and the game over when the dinosaur collides with one of the obstacles. The scoring system is based on how long the player survives and the game ends when the player collides with one of the obstacles. I’m not sure where difficulties will arise but my best idea is that it will be difficult to make the obstacles more random and less repetitive. I will need to create the character, background, sound effects for jumping, and the obstacles (cacti & birds).
I started working on the project, and here is what I have so far. Worked on figuring out the mechanics to take input from the keyboard and react to it.
This is my sample code for recognising cursor shapes as vertical, horiontal, and diagonal lines. I plan to do a version of the Google doodle Halloween cat game. The cat fights ghosts that are each identified by a shape. The player uses the mouse to draw the shapes and defeat the ghosts. I would need to implement a mechanic to recognise cursor paths as shapes, as well as individual ghost sprites that gradually drift closer to the character sprite and disappear when their shape/shape sequence is drawn. Each ghost would count as a point and for simplicity, I would probably make this endless until loss. The most difficult part would probably be the cursor shapes. I would need spooky background music and sound effects for each shape/when ghosts die.
I plan on recreating the game 2048. The overall concept is essentially using the arrow keys to combine numbered tiles on a grid. When two tiles with the same number combine, then it becomes one tile with double the original value with the end goal being to get to the 2048 tile. The game mechanics I want to implement will be the 4x4 grid, movement of tiles, how to combine tiles, and how to create a new tile during each turn. A player wins when they get to the 2048 tile and they lose if they do not get to 2048 or the board is full (no more movement space). I think the difficult areas will be making sure the combine works properly (ex: works for all directions and only happens once) and also how to keep track of the types of tiles on the board. Some assets I may incorporate will be sprites of different colored tiles, a background for the board, and sound effects for movements.
For my project I want to make a game where you shoot a bow and arrow at a target and get points for being closer to the center of the target. The game will be based off of the Game Pigeon archery game and the archery game from Wii Sports Resort.
So far I have been working on aiming the bow by moving a crosshair sprite around the screen with some delay and random noise.
Some of the mechanics I’ll need for this game are first, a battleship sprite that is able to move left and right as well as shoot. For this, I plan to use the arrow keys and spacebar as inputs for these actions. Next, and possibly the most difficult part of this project, is creating the alien sprites and making them move in unison. Additionally, I will need to program a way for the aliens to randomly drop down from the top of the screen and follow the classic alien movement. The aliens will also need a mechanism to shoot down at the battleship. Lastly, I will need to implement a way to end the game if the last remaining ship is hit either by the alien or one of the alien’s shots.
The scoring system will follow classic Galaga, with 50-160 points rewarded for destroying basic aliens, 1600 for boss Galagas, and 10,000 for perfect challenge stages. The game will end when all of the ships (acting as a life mechanism) are destroyed.
I expect the most difficult part of this game design to be the alien movement mechanism. I need a way for them all to move in sync, unless randomly selected to drop down towards the ship. I will achieve this by simply creating the proper movement for one alien sprite, then cloning the sprite in a way that makes all cloned sprites move in unison.
I plan to incorporate the Galaga sounds of the shooting and the explosion when the ship is hit. If time permits, I may also use what we learned in our “creating music” section of the course to overlay a unique soundtrack that fits the theme of the game.
For my project, I want to recreate the coin-catching game where the player controls a bucket at the bottom of the screen using the left and right arrow keys. Coins with different values randomly fall from the top of the screen, and the player gains points by moving the bucket to catch them. At the same time, bombs also fall from the ceiling, and if the player catches a bomb, their score decreases. The game becomes more challenging as time goes on, with coins gradually falling faster and bombs appearing more frequently. The player needs to react quickly and carefully choose which falling objects to catch or avoid. The player loses the game if their score drops below zero. To win the game, the player must successfully collect enough coins to reach a total score of 100 points.
For my game, I plan to recreate Doodle Jump. I think the mechanics of the game would be relatively simple (hopefully) and I also want to make sure that the graphics I use are cohesive and have clear boundaries. I would need to have randomly placed platforms placed throughout the map and for the screen to follow the doodle. The doodle would be controlled by the arrow keys (left and right). Things that I need to figure out: how to get the doodle to automatically jump once touching a platform + not having the screen following the doodle after it falls off a platform → unable to have the “lose” condition if this happens. I think these points will most likely be the hardest parts of my project. If I am able, I’d like to have a bounce sound effect each time the doodle touches a platform.
Week 10: I have tried implementing the ghosts with the assigned lines. I wonder if there is a more efficient way to make them move, as well as to randomise what side they start on. I feel like the game is pretty easy right now so I feel that I could add things to make it harder. I also need to make better graphics.
I have implemented the character movement, the enemy movement, the pellet shooting, and even a level transition. While a lot of these mechanics are currently clunky and more for a proof of concept, the overall gameplay is already demonstrated with what I currently have.
Week 10: Snap! Build Your Own Blocks
I implemented a scoring mechanism and fixed a few bugs with collision detection and improper physics. I have a good idea of how to implement difficulties, so that won’t take long at all. I want to look deeper into the online multiplayer side of things, however.
For my project I am adapting the classic vector game Asteroids. I thought the idea of making a top-down shooter was an interesting challenge and I had fun with this short prototype, particularly with handling the parallax effect with background stars and galaxies moving at different speeds as the player “moves”. The player themselves actually stays at (0,0) for the entirety of the game and the environment moves around them instead, and with some basic trigonometry this was acheivable. I designed several of the asteroids off of real examples, including contact binaries and an asteroid with a small moon.
The arrow keys move you and space shoots.
Further work will include creating smaller asteroids that break off the main ones when they explode, and adding powerups which enhance your player’s speed and shooting ability. I still need to workshop the lives mechanic.
For my Week 10 progress, I decided I want to implement 2048 Cupcakes version, so I created costumes based on the value of the cupcakes. I also started implementing the draw grid board, which creates a cleared board to be the starting point of the game. I plan on continuing to implement the board functionality and then working on the move functions.