KeySmash is a series of arcade video games that uses a virtual musical keyboard as the control interface. Each game is played with one or more virtual musical keyboards, all sharing one screen.
Video of two players playing KeySmash Battle at Dirty Rectangles event in Toronto 15 February 2024.
Sound is an important part of the game series. I want the players to feel as if they have a joined a chaotic piano jam session, where the music is an output of the gameplay.
Photo of an earlier iteration of KeySmash Battle that uses two computer keyboards are set up facing each other, with the game screen placed in the middle.
So far, I have created two games for this series: KeySmash Battle and KeySmash Blocks.
KeySmash Battle is a two player game inspired by Pong. The goal is to be the first player to hit the other player’s field 10 times.
A ball bounces back and forth from one player’s field to the other. Each player controls a paddle that protects their field. The players move their paddles horizontally by playing musical notes on their virtual musical keyboard.
Musical notes sound as the players play their keyboards to move their paddles—almost as if a free form jam session is happening as both players try to protect their field.
KeySmash Blocks is a one player game inspired by Breakout. The goal is to break all the visible blocks before losing all your lives.
Similar to KeySmash Battle, KeySmash Blocks uses a horizontally-moving paddle that is controlled by the virtual musical keyboard. The player moves the paddle to bounce the ball back towards the blocks.
Sounds is an important element here as well. Notes are emitted as the player plays their keyboard to move the paddle, as if they are sitting down to compose whacky music bound by the rules of the game.
Role | Name |
---|---|
Programming Language | TypeScript |
Game Development Framework | Phaser 3 |
Music Synthesizer Library | Tone.js |
The architecture of the software is based on OOP
(Object Oriented Programming). A core Game
class was created that then was extended to create each game. For example KeySmash Battle and KeySmash Blocks are games extended from the same Game
class. This reduces the re-write and boilerplate code, and has made the project easier to expand and manage.
Here are some similar projects to KeySmash relating to Programming.
Want to chat about a project
or just want to say hi?