Concept:
The game is a simplified and modified version of the mini game snowy spin in the steam game Pummal Party. The game is an arena game in which each player controls a snowball. To win the game, the players will try to knock other players’ snowballs out of the arena or collect coins. Each game will contain 3 rounds. The player who wins two rounds out of three wins the game. There will be a scoreboard displaying the current score and current coin number of each player.
User Interaction :
- The game starts with an instruction screen, waiting for user input to begin.
- Each player controls their snowball using keyboard inputs:
- Player 1: WASD keys
- Player 2: Arrow keys
- Players navigate the arena, collecting items and attempting to knock opponents out.
- The game consists of 3 rounds, with the winner being the first to win 2 rounds.
- After game completion, players can choose to start a new session.
Features:
- A snowball class:
Pressing the keyboard applies a force to the ball in the direction of the keyboard control. The ball will accelerate until it reaches maximum speed. When collision between the balls is detected, each ball will move according to the physics of the elastic collision. The ball can collect the items along the path of its movement. The ball will “fall” if the ball is out of the arena.
- A game class:
That will display the arena, the balls, and the items. The arena will be a perfect circle.
- A item class:
Items are randomly generated around the arena every (possibly) 10 seconds. The players can collect items by moving their balls to the item.
- Players win a round by knocking the other player out of the arena or collecting 3 gold coins. Players win a game by winning 2 rounds out of 3.
- Background music and/or sound effects of ball colliding and players collecting items
- Power ups :
- Increase / Decrease size of snowball
Increase / Decrease speed of snowball
- Coins
Code Design:
- Snowball Class:
- Properties: position, velocity, size, player ID
- Methods: move(), accelerate(), checkCollision(), collectItem()
- Game Class:
- Properties: arena, players, items, current round, scores
- Methods: startGame(), updateGame(), checkWinCondition(), nextRound()
- Item Class:
- Properties: type, position, effect
- Methods: spawn(), applyEffect()
- Arena Class:
- Properties: size, shape
- Methods: draw(), checkBoundaries()
- Main game loop:
- handleInput()
- updateGameState()
- checkCollisions()
- drawScreen()
- playAudio()
Potenial Obstacles:
- Collision detection and physics
- Implementing smooth player controls