Git Product home page Git Product logo

ci-ms2-pentifall's Introduction

Pentifall

The project, Pentifall, is my refreshing take on the classic block-dropping puzzle genre, paying homage to the beloved game, Tetris. However, it introduces a unique twist by utilising Pentominoes, shapes formed by five square blocks, as opposed to the traditional Tetrominoes made up of four. This change is inspired by the original puzzle games that were the foundation for Tetris, intending to present a heightened challenge due to the increased block size.

By leveraging the complexity of Pentominoes, Pentifall aims to captivate players with intricate puzzle-solving scenarios and push their strategic capabilities to the limit. It's designed to cater to those who appreciate the simplicity of the original game, yet crave a further test of their skill and adaptability.

Regarding copyright, while Tetris Holding, LLC does have certain rights, these specifically cover the aspects of Tetrominoes, the 10x20 board size, and also the distinct colouring patterns used for Tetrominoes. Pentifall carefully navigates these intellectual property rights. I use Pentominoes instead of Tetrominoes and the board size and block colours in my game are entirely distinct, ensuring no infringement occurs.

The visual representation of the game is an often-overlooked element of copyright law in games. In fact, courts have ruled in the past that visual aspects, including specific colour schemes, can be considered proprietary. With Pentifall, I've been conscientious in this regard, devising a unique aesthetic that separates it from Tetris while maintaining the captivating nature of the puzzle genre. For an example of how a judge has ruled on this matter, please refer to this article: Defining Tetris: How Courts Judge Gaming Clones

Pentifall

User Experience Design (UXD)

Strategy

User Stories

First Time Visitor Goals

  • As a First Time User, I want to easily understand the main purpose of the game and learn more about its unique concept.
  • As a First Time User, I want to be able to easily navigate the game interface, access instructions and start playing immediately.
  • As a First Time User, I want to have a responsive gaming experience, allowing me to play on my desktop or mobile device seamlessly.
  • As a First Time User, I want to find ways to follow the game's updates on different social media platforms.

Returning Visitor Goals

  • As a Returning User, I want to experience new challenges and levels in the game that help me further enhance my problem-solving skills.
  • As a Returning User, I want to be able to share my scores and compete with other users to increase the game's interactivity and excitement.
  • As a Returning User, I want to be able to easily contact the game developer to provide feedback or report issues.

Frequent Visitor Goals

  • As a Frequent User, I want to check if there are any updates, new levels or features added to the game.
  • As a Frequent User, I want to keep track of my progress and improvements in the game over time.
  • As a Frequent User, I want to subscribe to the game updates so that I receive notifications about any major changes, new challenges or game-related news.

Site Owner Goals

  • As a Site Owner, I want to create an engaging and responsive game that provides a unique spin on classic puzzle mechanics.
  • As a Site Owner, I want to inform users of any new updates, features or changes in the game, keeping them engaged and excited.
  • As a Site Owner, I want to explore potential revenue avenues, such as in-app purchases or partnerships with game-related entities.
  • As a Site Owner, I want to increase the exposure of the game on social media platforms, building a broader community of puzzle game enthusiasts.
  • As a Site Owner, I want to receive feedback and communication from the users, allowing for game improvement and community engagement.
  • As a Site Owner, I want to establish a bond with the users, allowing them to know the person behind the game, building trust, and a sense of community.

Competition

Tetris: The timeless classic that started the falling block puzzle genre. Its simple mechanics, combined with its engaging gameplay, have made it a staple in the gaming world. It continues to appeal to a broad range of players, offering both casual and competitive gaming modes.

Strengths:

  • Wide recognition: The game is a household name and synonymous with the falling-block puzzle genre.
  • Simple yet addictive gameplay: Its mechanics are easy to understand but hard to master, which keeps players engaged.
  • Multi-platform availability: It is available on almost all gaming platforms, allowing for a broad player base.

Weaknesses:

  • Limited innovation: The game has largely remained the same since its inception, which might make some players seek more innovative alternatives.
  • No multi-player: The classic version lacks real-time multiplayer capabilities, which are in high demand today.

Tetr: This is an online multiplayer version of Tetris. Its primary selling point is the ability to play against other players in real-time, offering both casual and competitive modes.

Strengths:

  • Real-time multiplayer: It allows players to compete against each other in real-time, a feature that is not common in many Tetris-like games.
  • Customisable experience: Players can adjust various game settings to their preference.

Weaknesses:

  • Complexity: The various customisable settings may seem overwhelming to new or casual players.
  • Less well-known: Compared to Tetris, it has lower brand recognition and popularity.

Pentix (1986): Pentix is a variant of the classic Tetris game, developed and released in 1986. Like Tetris, it's a falling block puzzle game. The key distinction lies in its use of Pentominoes - geometric shapes composed of five square blocks - as opposed to Tetrominoes (four square blocks) used in classic Tetris. This increases the complexity of the gameplay and makes it more challenging for players. It was one of the first major adaptations of the Tetris concept.

Strengths:

  • Unique mechanics: Utilising Pentominoes increases the complexity of the game, offering a new layer of challenge for players.
  • Early innovator: Being an early variant of Tetris, it has historical significance in the evolution of falling block puzzle games.

Weaknesses:

  • Dated graphics: As a game from 1986, the visual presentation can be considered outdated compared to modern games, potentially less appealing to younger audiences.
  • Lower recognition: Despite its innovative gameplay, it's not as well-known as Tetris or other similar games, resulting in a smaller player base.
  • Limited platforms: Being an older game, it might not be available on modern gaming platforms, limiting its accessibility.

Strategy Tradeoffs

Pentifall Tradeoff Table

Pentifall Surge Tradeoff_Graph

Scope

Sprint 1

Sprint 1 Features

  • Build a responsive falling puzzle game
  • Educate users on how to play the game - Inform users about the controls
  • Option to play with or without music - Including a music option can enhance the overall gaming experience and keep player's more engaged.

Sprint 1 Requirement Types

  • Languages: HTML, CSS & Javascript
  • Text
  • Audio

Sprint 2

Sprint 2 Features

  • Community building through competition - Introducing score-sharing and leadboards can foster a sense of community and competition among players.
  • Social media presence - An active social media presense can help keep the community engaged, provide updates and attrack new users.

Sprint 2 Requirement Types

  • Languages: HTML, CSS & Javascript
  • Text
  • Audio

Sprint 3+

Sprint 3+ Features

  • Adaptive difficulty levels - Catering to a wide range of players, from beginners to puzzle game veterans, by introducing different difficult settings can enhance user engagement.
  • Interactive tutorials - A tutorial mode can help new usders understand the gameplay mechanics.
  • Game updates and new challenges - Regularly updating the game with new levels or challenges can keep players engaged and returning.
  • Monetisation - In-app purchases, such as aesthetic upgrades or additional challenges.

Sprint 3+ Requirement Types

  • Languages: HTML, CSS & JavaScript
  • Text
  • Audio

Structure

Touchpoints - Responsive Website

Pentifall Surge Information Architecture

Skeleton

Pentifall Wireframes

Start Screen Start Screen

Game Screen Game Screen

How To Play Screen How To Play Screen

Game Over Screen Game Over Screen

Surface

Fonts

All text - Press Start 2P I'm going with Press Start 2P for all of my text as it lends itself well to a game.

Colours

Drawing significant inspiration from the classic Game Boy, I was intrigued by the distinctive green screen. This design choice was made to ensure optimal visibility for black colors. Despite my extensive search, I was unable to find a precise hexadecimal color code for this unique shade of green. Nevertheless, I opted for #9bbc0f.

For accurately capturing the colors of the physical Game Boy, I used the Eye Dropper tool on an image of the Game Boy. This approach provided me with a faithful representation of the console's iconic color palette.

Technologies Used

Languages
  • HTML
  • CSS
  • Javascript
Websites, Software & other Tools

Features

Navigation

All navigation is controlled with buttons. From the *Start Screen* you are able to navigate to: - The *Game With Sound* - The *Game Without Sound* - *How To Play Page* that displays

From the How To Play Page you are able to navigate to:

  • The Start Screen

From the Game Over Page you are able to navigate to:

  • The Start Screen

You able to use these buttons either with a mouse, the keys used in the game (that are mapped to the ScriptBoy buttons) and the buttons on the ScriptBoy (actual buttons only work on touchscreen)

Start Screen

Game - Pentifall

A falling puzzle game where the objective is to fit pentominoes together so that you fill rows. When you fill a row (maximum 5 at a time), a line will be cleared and you will recieve points that increase depnding on how many you clear with one block. It includes multiple features:
  • Input your name - Controlled by validation so that names use letters and are within a certain size.
  • Play with or without music - There is a main theme song which loops; a rendition of the Korobeiniki Russian folk song.
  • Scoreboard - Showing level and score.
  • Next pentomino preview - so player can plan their moves.
  • Ghost pentomino - You can see where your current pentomino is going to land based on it's current trajectory.
  • Move pentomino left and right.
  • Rotate pentomino clockwise and counter-clockwise.
  • Increase pentomino fall speed.
  • Make pentomino drop instantly
  • Pause game
  • Mute

Game Screen

  • Game over screen - Displays the players name, score and the board as it was when the game goes to a fail state. Players can then navigate back to the start screen.

Game Over Screen

How To Play Page

Display the controls based on screen size.

How To Play Screen

Bugs

Known Bugs

  1. Unitended game over state - You can move a pentomino to the side of the board before it's showing and 'hook' it on one of the edges.
  2. Pentomino ghost consistency - Pentomino ghost is a lighter colour for 1 game step and then becomes the consistent colour that I've set.
  3. Pentomino preview - Pentomino preview display blocks at different sizes, this should be standardised.
  4. Text glitch - When the select button is pressed there is an odd text glitch on the start button text.
  5. Cycling through menu items with keys or d-pad is cycling through hidden buttons.
  6. Pressed a button on the gameOverScreen plays the game over sound.
  7. Left and Right sound isn't played for each movement when keys are held down, or pressing in quick succession. This is also the case when rotating the pentomino quickly.

Fixed Bugs

Responsivenes, Validation, Performance & Accessibility

Responsivenes

Responsiveness was tested by using Responsive Design Checker. The screen can be seen on all screen sizes and if the user scrolls a bit on mobile devices then the buttons are visible to be touched.

Validation

All HTML passed the w3C HTML Validation.

HTML Validation

w3C Validator - Markup - Index

All CSS passed the w3C CSS Validation.

CSS Validation

w3C Validator - Markup - Home

All JS passed the JSHint validation.

JS Validation

There are only warnings regarding the use of certain techniques that require ES6.

Performance & Accessibility

I used WAVE Web Accessibility Evaluation Tool and it passed with 0 errors.

I also used Google Lighthouse and it was in the high greens for performance, accessbility and best practises.

Google Lighthouse

Lighthouse Desktop Navigation Test Google Lighthouse - Initial Screen - Desktop

Lighthouse Mobile Navigation Test Google Lighthouse - Initial Screen - Mobile

Lighthouse Mobile Snapshot Test (I added this so that I can test the site whilst the game is running) Google Lighthouse - During Game - Snapshot

Application Testing

All Screen Sizes

Start Screen

Expected - When the site loads, the start screen should be presented. It should have an input, Play with Sound button, Play without Sound button & How to Play Button displayed on the screen. At the bottom right of the screen should be a sound off icon as the isSoundOn flag initially set to False. Below the screen should be the physical buttons. Testing - Tested the feature by loading the app. Result - The feature responded as expected.

Expected - Inputting a name shorter than 3 characters or using numbers should throw up a relevant error. If both errors are met, then both errors should be displayed and the game shouldn't start. Testing - Tested the feature by inputting a name shorter than 3 characters and inputting non-letters. Result - The feature responded as expected.

Game Screen

Expected - The music should loop Testing - Tested the feature by playing the game. Result - The feature responded as expected.

Game Over Screen

Expected - Gameover screen should display the inputted name, Final Score, Final Level and a Start Screen button. In the background the gameboard should be displayed as it was before the user entered the gameover state. Testing - Tested the feature by hitting the top of the game board which triggers the gameover state. Result - The feature responded as expected.

Expected - Keys shouldn't be active in this screen. Testing - Tested the feature by pressing/touching keys. Result - There is a bug related to sound (See Known Bug 6), so it seems like the keys are still active.

Desktop

Tested on a 2560x1440 screen.

Start Screen

Expected - Hovering the cursor over the buttons should change the colour. Testing - Tested the feature by using the cursor to hover over the buttons. Result - The feature responded as expected.

Expected - Clicking the Play with Sound button should start the game with sound and the sound off icon should disappear. Testing - Tested the feature by clicking the Play with Sound button. Result - The feature responded as expected.

Expected - Clicking the Play without Sound button should start the game without sound and the sound off icon should disappear. Testing - Tested the feature by clicking the Play without Sound button. Result - The feature responded as expected.

Expected - Clicking the How to Play button should display How to play Screen. Testing - Tested the feature by clicking the How to Play button. Result - The feature responded as expected.

How To Play Screen

Expected - The desktop controls should be displayed. Testing - Tested the feature by clicking the How to Play button. Result - The feature responded as expected.

Expected - Clicking the Start Screen button should return the user back to the start screen. Testing - Tested the feature by clicking the Start Screen button. Result - The feature responded as expected.

Game Screen

Expected - Pressing the right and left arrow key should move the pentomino respectivly. A sound should be played if the sound is on. Testing - Tested the feature by pressing the right and left arrow key. Result - The feature didn't respond as expected due to a bug related to sound (See Known Bug 7).

Expected - Holding the right and left arrow key should move the pentomino respectivly. A sound should be played if the sound is on. Testing - Tested the feature by pressing the right and left arrow key. Result - The feature didn't respond as expected due to a bug related to sound (See Known Bug 7).

Expected - Pressing the up arrow key should rotate the pentomino counter-clockwise. A sound should be played if the sound is on. Testing - Tested the feature by pressing the up arrow key. Result - The feature didn't respond as expected due to a bug related to sound (See Known Bug 7).

Expected - Pressing the down arrow key should rotate the pentomino clockwise. A sound should be played if the sound is on. Testing - Tested the feature by pressing the down arrow key. Result - The feature didn't respond as expected due to a bug related to sound (See Known Bug 7).

Expected - Pressing the spacebar should speed up the pentomino fall. Testing - Tested the feature by pressing the spacebar. Result - The feature responded as expected.

Expected - Holding the spacebar should speed up the pentomino fall. Testing - Tested the feature by holding the spacebar. Result - The feature responded as expected.

Expected - Pressing the shift key should instantly place the pentomino. Testing - Tested the feature by pressing the shift key. Result - The feature responded as expected.

Expected - Pressing the CTRL key should pause the game and the sound should stop. Testing - Tested the feature by pressing the CTRL key. Result - The feature responded as expected.

Expected - Pressing the M key should mute the game. The relative sound icon should be displayed. Testing - Tested the feature by pressing M key. Result - The feature responded as expected.

Game Over Screen

Expected - Clicking the Start Screen button should return the user to the the Start Screen. Testing - Tested the feature by clicking the Start Screen button. Result - The feature responded as expected.

Mobile

Tested on a Galaxy S8 screen.

Start Screen

Expected - Using the dpad the cursor over the buttons should change the colour to signify what is currently selected. Testing - Tested the feature by using the dpad to select menu elements. Result - The feature technically works but there is a bug (See Known Bug 5).

Expected - Pressing the x button should start the game or show controls if the button is currently selected. Testing - Tested the feature by using the dpad to select each button and then pressed x to select that button. Result - The feature responded as expected.

Expected - Touching the Play with Sound button should start the game with sound and the sound off icon should disappear. Testing - Tested the feature by touching the Play with Sound button. Result - The feature responded as expected.

Expected - Touching the Play without Sound button should start the game without sound and the sound off icon should disappear. Testing - Tested the feature by touching the Play without Sound button. Result - The feature responded as expected.

Expected - Touching the How to Play button should display the How to play Screen. Testing - Tested the feature by touching the How to Play button. Result - The feature responded as expected.

How To Play Screen

Expected - The mobile controls should be displayed. Testing - Tested the feature by clicking the How to Play button. Result - The feature responded as expected.

Expected - Touching the Start Screen button should return the user back to the start screen. Testing - Tested the feature by touching the Start Screen button. Result - The feature responded as expected.

Game Screen

Expected - Touching the right and left dpad should move the pentomino respectivly. A sound should be played if the sound is on. Testing - Tested the feature by touching the right and left arrow key. Result - The feature didn't respond as expected due to a bug related to sound (See Known Bug 7).

Expected - Touching the up dpad should rotate the pentomino counter-clockwise. A sound should be played if the sound is on. Testing - Tested the feature by touching the dpad. Result - The feature didn't respond as expected due to a bug related to sound (See Known Bug 7).

Expected - Touching the down dpad should rotate the pentomino clockwise. A sound should be played if the sound is on. Testing - Tested the feature by touching the down dpad. Result - The feature didn't respond as expected due to a bug related to sound (See Known Bug 7).

Expected - Touching the Y action button should speed up the pentomino fall. Testing - Tested the feature by touching the Y action button. Result - The feature responded as expected.

Expected - Continuously touching the Y action button should speed up the pentomino fall. Testing - Tested the feature by holding the Y action button. Result - The feature responded as expected.

Expected - Touching the X action button should instantly place the pentomino. Testing - Tested the feature by touching the X action button. Result - The feature responded as expected.

Expected - Touching the Start button should pause the game and the sound should stop. Testing - Tested the feature by touching the Start button. Result - The feature responded as expected.

Expected - Touching the Select button should mute the game. The relative sound icon should be displayed. Testing - Tested the feature by touching the Select button. Result - The feature responded as expected.

Game Over Screen

Expected - Touching the Start Screen button should return the user to the the Start Screen. Testing - Tested the feature by touching the Start Screen button. Result - The feature responded as expected.

Deployment

I have deployed this website on GitHub Pages. To do this yourself, follow the steps below:

  1. Log in to your GitHub account and navigate to the repository you wish to deploy.
  2. Click on the "Settings" tab.
  3. In the left-hand navigation menu, click on the "Pages" button.
  4. Under "Source", click on the dropdown that says "None" and then select "main".
  5. Wait for a few seconds and the page should automatically refresh.
  6. In GitHub Pages, you can see the link to your published site.

To make a clone of this repository, follow these steps:

  1. Login to your GitHub account.
  2. Go to the repository by visiting the link: Charlie McGoldrick Github - Pentifall Repo.
  3. Click the "Code" button and then use the copy button next to the link to copy the link.
  4. In your IDE of choice, open a new terminal and use the following clone command: git clone <https://github.com/CharlieMcGoldrick/ci-ms2-pentifall>.
  5. You will now have a copy of the repository in you local version.

To fork this repository, follow these steps:

  1. Log in to your GitHub account.
  2. Go to the repository you want to fork, which is located at: Charlie McGoldrick Github - Pentifall Repo.
  3. In the top-right corner of the repository page, click on the "Fork" button
  4. GitHub will prompt you to select where you want to fork the repository. Choose your personal account or organization.
  5. Wait for the forking process to complete. Once it's done, you will be redirected to your forked repository under your GitHub account.

NOTE: Any changes pushed to the main branch automatically show up on the website.

Credits

The following credits are used to inspire colour ideas, create the favicon, source royality free sound or inspire techniques used in this project.

Acknowledgements

  • Thank you to Katherine Evans for creating a Viola and Piano rendition of the Korobeiniki folk song.
  • Thank you to my mentor; Graeme Taylor and Code Institute (including the Slack community), for the great support, advice, and guidance.
  • Thank you to my friends and family for their patience and understanding whilst working on this project.

ci-ms2-pentifall's People

Contributors

charliemcgoldrick avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.