Skip to content

Latest commit

 

History

History
232 lines (166 loc) · 10.2 KB

Functionnal_Specification.md

File metadata and controls

232 lines (166 loc) · 10.2 KB

Functional Specification

Author Léna De Germain
Created 9/26/2024
Last Modified 10/21/2024

Table of content

I. Overview

Project aims to recreate the game "Frogger" with our style using FPGA board / Go Board coding in Verilog.

A. What is Frogger

Frogger is an arcade action game developed by KONAMI and released in 1981. In the original game, the aim was to direct some frogs to their homes by dogging on a busy road. Frogs need to avoid cars to still alive and get back to their homes.

To do this, the player must first move through the game zone, here a busy road, avoiding cars that move at different speeds. The Frog restarts at the beginning of the level if he hits a car or with a GAME OVER.

In our history, the original game was positively received as one of the greatest video games ever made. It was followed by a lot of copies and clones. It was named as "Frogger Series". For the biggest famous copies, we have a version from Parker Brothers, the 1982 Atari 2600, which sold 4 million copies, or in 2005, 20 million copies of various games of "Frogger" were sold.

B. How to play

The player can control the frog using a joystick, allowing movement in all directions. In our version, the buttons on the FPGA board will be used to move the frog.

The game starts with the frog positioned at the bottom of the screen, and the goal is to advance to the top to complete the level. Along the way, the player must avoid various obstacles moving horizontally across the screen.

Frogger can be played solo, but it's also possible to play with two players, taking turns.

example of frog example of frogger in game

II. Goals and constraints

A. Prototypes Goals

  • Recreate the road (background for traditional Frogger)
  • Implement a frog
  • Implement car for obstacles
  • systhem of level
  • Implement keybindings with switchs present on the card to move with frog
  • Possibility to reset the game

B. Final game Goals

  • Add sprite's frog
  • Add many car's sprite
  • Add Win Page
  • Add menu
    • Save game
    • Change Frog's appearance
    • Show up the level & the maximum level reached
    • Have a Register of Different Bonuses
  • differents themes
    • halloween's theme
    • Christmas' theme
    • ALGOSUP's theme

C. Constraints

  • The game board has for resolution a VGA display like 640x480 and it's reparted on a 20x15 grid.
  • The level must be displays on the 2-digit 7-segment display of the Go Board.
  • To move the player we need to use the four buttons on Go-board (SW1, SW2, SW3, SW4)
  • the player have only one life
  • There must be at least 8 levels in the game. As the level increases, so does the difficulty of the game.

III. Requirements / Base Mechanics

Requirements Usefullness
Name We have done a vote to find a name, The majority adopted "FroggyRanck"
Main character A character played by player
Main character's design A basic character design for a basic level, a character design for special levels, dimensions are 32x32 pixels
Obstacles a character for Obstacles avoided by player
Obstacles' design A basic design for a basic level, a design for special levels, the obstacle's dimensions are 32x32 pixels but the width can vary
Playground A space without physique/collision for a play area

A. The Frog Mechanics

The buttons on the FPGA board are used to control the frog and reset the game to the beginning. The frog can only have one space at a time, after the frog hits an obstacle or finish the level, the frog returns to the bottom of the screen.

Button Direction
SW1 forward
SW2 backward
SW3 right
SW4 left
SW1 & SW2 & SW3 & SW4 reset the game

frog sprite

frog

Optional Feature

frog_sprite frog_sprite_left frog_sprite_right frog_sprite_back

B. The level

The player can view their level on the Go Board using the 2-digit 7-segment display. If the game is reset or the frog is hit by a car, the level indicator resets to 1 (at the beginning). But if the frog reaches the top of the screen, their level increases by one. We've been asked to make the game a 20x15 grid, the screen being 640x480, and one grid corresponds to 32x32 pixels (640/20 = 32, 480/15 = 32).

C. Car Mechanics

Mostly the obstacle is vehicles like a car and they appear from the left or the right of the screen and move horizontally on the screen. When the level increases there a more cars at different speeds to make the game more difficult. At the begining, only one car can appears on a horizontal row and the number increase for each levels passed. They can have a lot of design or the width can be changed.

Car Sprite

car-1

Optional Feature

car-2 truck

D. Added Mechanics (Optional Feature)

1.Life Systhem

The frog has four lives, and the player can see the number of lives remaining on the FPGA board. The four LEDs on the FPGA board represent the frog's lives. Each time the frog hits an obstacle, one LED turns off, indicating the loss of a life. The lives are reset after a game over (i.e., when all four LEDs are turned off).

2. Menu

Menu is useful to save or make a pause on game, we could also add some possibility like this :

Menu's Possibility button
Open Menu and Close Menu SW1 & SW2
Save Button SW1
Show up the level & Score SW2
Possibility to change Frog's Appearance SW3
Have a Register of Different Bonuses SW4

3. Score

Score able to compare two player if they want to know which one have the bigest score

Action number of points won
finish a level + 100 points
Take a gift + 20 points
Take Poison Gift - 20 points
hit a obstacle reset the score at 0

4. Bonus

The bonus can appear randomly on the screen at frequency 5%, he can only have one bonus by level.

Bonus Effect
Gift increase your score by 20 points
Poison Gift reduce the score by 20 points
StopTime stop the obstacle for 3 seconds
Level Reboot return to start of level
Star make the character invincible for 3 seconds
Left arrow slows down obsctacles
Right arrow speed up obsctacles

4. Themes

To more diversity, we have decided to add different themes to have another game experience.

Level Themes Changement
4 lvl Halloween The frog is replaced by a ghost and the obstacles become pumpkins.
8 lvl Christmas the frog become a lutin and the obstacles are replaced by reindeer
2 lvl ALGOSUP obstacles replaced by Elone and the frog become Frank

IV. Non-functional Requirements

To code, in particular, but also to run the game, we need to meet few requirements.

Non-Functional Requirement Utility Run / Code
Windows/MacOS We do all that we need on their computer's system. Code
FPGA board We program the game on this board, the Go Board from Nandland.com Run & Code
Verilog It's the language used to program the game. Code
Screen with VGA port To observe the result of our code, we project it on a VGA Screen. We've been asked to make the game a 20x15 grid, the screen being 640x480, and one square corresponds to 32x32 pixels (640/20 = 32, 480/15 = 32). Run & Code
Cable double VGA port It's cable is used to connect the FPGA board to VGA Screen Run & Code

V. Deliverable

Our client, ALGOSUP, asked us to deliver documents and the final product on a precise date.

Date Deliverable
10/07/2024 Functional Specification Deadline
10/14/2024 Technical Specification Deadline
10/21/2024 Code Deadline
10/21/2024 Test Plan Deadline
10/21/2024 User Manual Deadline
10/25/2024 Presentation

VI. Glossary

Term Definition Source
FPGA Board / Go board Field Programmable Gate Arrays (FPGAs) are integrated circuits used to program and launch games. arm
Verilog Verilog is a hardware description language used for computer simulation and synthesis. This is what we used to code the FPGA board. ScienceDirect
VGA display / VGA Port For “Video Graphics Array”, is a connection interface for transmitting analog video signals. It was designed by IBM and introduced in some computers and monitors in 1987. LCD COMPARE
2-digit 7-segment display A seven-segment display is a form of electronic display device for displaying decimal numerals that is an alternative to the more complex dot matrix displays. Wikipedia