diff --git a/advanced-game-design-team/Game readme template.md b/advanced-game-design-team/Game readme template.md new file mode 100644 index 00000000..0330646c --- /dev/null +++ b/advanced-game-design-team/Game readme template.md @@ -0,0 +1,43 @@ +# Repo Name + +[Provide basic instructions to build and run. Try to make them platform agnostic, and link to relevant documentation. If applicable, make note of any additional dependencies not covered by a normal SplashKit installation.] + +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. Build using `skm clang++ *.cpp -o game-name` while in the project folder. +3. Run using `./game-name` while in the project folder. + +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ + +## Technical overview + +- **Language:** C++ / C# +- **Current scope:** Small / Medium / Large _[How much stuff does the project currently do? Is there lots of code covering many different game systems? Quantity of project files and their average length is a good guideline.]_ +- **Code quality:** Poor / Fair / Good / Excellent _[Poor = does not meet minimum quality standards (should be rare!). Excellent = Not necessarily perfect, but very good - good enough that the program's implementations can be used as reference.]_ +- **Gameplay implementation:** Incomplete / Complete _[Complete games may still have room for further expansion by adding new levels / mechanics etc, but have a complete start-to-finish gameplay loop implemented.]_ + +## Gameplay overview + +[Note the number of supported players and describe the game's genre and core gameplay loop. Try to be reasonably succinct - not _every_ mechanic has to be in this summary.] + +[Include game controls in a format like below. If the game supports more than 1 player, list the controls for each player.] + +### Player 1 Controls + +| Action | Key | +|---------------|--------------| +| Move Forward | Up arrow | +| Rotate Left | Left arrow | +| Rotate Right | Right arrow | +| Fire | Left CTRL | + +## Other notes + +[Add concise, valuable information such as links to supporting programs like level editors, or additional documentation. Don't add verbose information here - save new documentation in `/docs/` and link to it if you have detailed information you want to pass on. Leave as "N/A" or remove section if there's nothing to add.] + +## Screenshots + +[Provide 1-3 screenshots of the game. These screenshots should capture the game's core gameplay - avoid adding screenshots of menu screens etc.] + +## Credits + +[Make best effort to include the original author or original team of authors, plus anyone who made a massive contribution (like a full refactor) later on. Not all authors need to be explicitly credited here, as git will track that for us. Can remove section if credit is difficult to figure out even after snooping git histories.] diff --git a/games/2dRacer/README.md b/games/2dRacer/README.md new file mode 100644 index 00000000..54b0db69 --- /dev/null +++ b/games/2dRacer/README.md @@ -0,0 +1,34 @@ +# 2D Racer (Advanced) + +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. OPTIONAL: Build using `skm dotnet build` while in the project folder. +3. Build and run using `skm dotnet run` while in the project folder. + +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ + +## Technical overview + +- **Language:** C# +- **Current scope:** Small +- **Code quality:** Fair +- **Gameplay implementation:** Incomplete + +## Gameplay overview + +A racing-themed vertical dodge game supporting 1 player. The player must avoid collisions with other cars while they drive along a road. + +### Player 1 Controls + +| Action | Key | +|-------------|-------------| +| Turn Left | Left arrow | +| Turn Right | Right arrow | + +## Other + +- There are two sub-projects within this project: "basic" and "advanced". The advanced version supercedes the basic version, and is what is described in this readme. +- Additional documentation from the original author is available in [2D_Racer.rmd](docs/2D_Racer.rmd) and [2D_Racer.docx](docs/2D_Racer.docx). They were written as if the game were complete, so could be considered more of a to-do list rather than a description of the current implementation. + +## Screenshots + +![](docs/screenshot-01.png) \ No newline at end of file diff --git a/games/2dRacer/2D-Title.jpg b/games/2dRacer/docs/2D-Title.jpg similarity index 100% rename from games/2dRacer/2D-Title.jpg rename to games/2dRacer/docs/2D-Title.jpg diff --git a/games/2dRacer/2D_Racer.docx b/games/2dRacer/docs/2D_Racer.docx similarity index 100% rename from games/2dRacer/2D_Racer.docx rename to games/2dRacer/docs/2D_Racer.docx diff --git a/games/2dRacer/2D_Racer.rmd b/games/2dRacer/docs/2D_Racer.rmd similarity index 100% rename from games/2dRacer/2D_Racer.rmd rename to games/2dRacer/docs/2D_Racer.rmd diff --git a/games/2dRacer/docs/screenshot-01.png b/games/2dRacer/docs/screenshot-01.png new file mode 100644 index 00000000..68de4b72 Binary files /dev/null and b/games/2dRacer/docs/screenshot-01.png differ diff --git a/games/HomemadePong/README.md b/games/HomemadePong/README.md new file mode 100644 index 00000000..bd229a2e --- /dev/null +++ b/games/HomemadePong/README.md @@ -0,0 +1,50 @@ +# Homemade Pong + +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. Build using `skm clang++ *.cpp -o homemade-pong` while in the project folder. +3. Run using `./homemade-pong` while in the project folder. + +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ + +## Technical overview + +- **Language:** C++ +- **Current scope:** Small +- **Code quality:** Fair +- **Gameplay implementation:** Near-complete + +## Gameplay overview + +A basic pong clone requiring 2 players. Players control paddles vertically to block a ball from crossing their edge of the screen. The ball gains speed as the game continues. + +### Player 1 Controls + +| Action | Key | +|-------------------|------------------| +| Move paddle up | Up arrow | +| Move paddle down | Left arrow | + +### Player 2 Controls + +| Action | Key | +|-------------------|------------------| +| Move paddle up | Up arrow | +| Move paddle down | Left arrow | + +### Other Controls + +| Action | Key | +|-------------------|------------------| +| Change background | SPACE | + +## Other notes + +- BUG: at high ball speeds the paddle's collision check with the ball fails and the player can no longer block the ball. + +## Screenshots + +![](docs/screenshot-01.png) + +## Credits + +Originally created by Anthony George in 2022-T2. diff --git a/games/HomemadePong/docs/screenshot-01.png b/games/HomemadePong/docs/screenshot-01.png new file mode 100644 index 00000000..84650bc5 Binary files /dev/null and b/games/HomemadePong/docs/screenshot-01.png differ diff --git a/games/Pingpong/README.md b/games/Pingpong/README.md index b46fea31..3aba5ea4 100644 --- a/games/Pingpong/README.md +++ b/games/Pingpong/README.md @@ -1,105 +1,51 @@ -# ARCADE PING PONG +# Ping Pong -## How to Install +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. Build using `skm clang++ *.cpp -o ping-pong` while in the project folder. +3. Run using `./ping-pong` while in the project folder. -- Install [Splashkit](https://www.splashkit.io) to your computer -- Enter to your terminal and open the project folder -- Enter command `skm clang++ program.cpp player.cpp game.cpp obstacle.cpp ball.cpp -o kkc` to build the file -- Enter command `./kkc` to play the game -- Press ENTER button to start the game +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ -> Arcade Machine Mechanisms -### **Player 1** +## Technical overview -| Input | Description | -| --- | ----------- | -| W Key | Player 1 dicer goes UP | -| S Key | Player 1 dicer goes DOWN | -| A Key | Player 1 dicer goes LEFT | -| D Key | Player 1 dicer goes RIGHT | -| R Key | RESTART | +- **Language:** C++ +- **Current scope:** Small +- **Code quality:** Fair +- **Gameplay implementation:** Near-complete -### **Player 2** +## Gameplay overview -| Input | Description | -| --- | ----------- | -| Up Key | Player 2 dicer goes UP | -| Left Key | Player 2 dicer goes LEFT | -| Right Key | Player 2 dicer goes RIGHT | -| Down Key | Player 2 dicer goes DOWN | -| ESC Key | Exit The Game | +A vaguely soccer-themed pong clone requiring two players. Players control paddles freely within their side of the board to prevent the ball from crossing into their goal. +### Player 1 Controls +| Action | Key | +|-------------------|-------------------| +| Move paddle up | W Key | +| Move paddle left | S Key | +| Move paddle down | S Key | +| Move paddle right | D Key | +| RESTART | R Key | -# Documentation +### Player 2 Controls -## _Introduction_ +| Action | Key | +|-------------------|-------------------| +| Move paddle up | Up Arrow | +| Move paddle left | Left Arrow | +| Move paddle down | Down Arrow | +| Move paddle right | Right Arrow | +| Exit The Game | ESC Key | -I will provide an overview of the design process for a C++ based Ping Pong game -using the Splashkit SDK. The game follows the rules of Air Hockey and allows two players to -compete against each other. The cursor is allowed to move horizontally, and player one controls -their movement using the WASD keys, while player two uses the arrow keys. The game is -designed for an HD screen resolution of 1280x720. +## Other notes -## _Asset Structure_ +- Documentation from the original author is available in `/docs/`. +- BUG: it's possible to move the ball into paddle (or vice versa), causing issues with collision handling. -To ensure consistency and reusability, a basic default structure was used for every asset in the -game. The Asset.h file contains the asset's structure, bitmap enumeration, and functions that -are shared across libraries. The Asset.cpp file includes the asset's constructor, update_game -function, draw_game function, and other in-game functions. - -## _Game Design_ - -The design process began with drawing the background bitmap using Canva. A football-themed -background was chosen for this game. The dimensions of each asset were calculated, and -horizontal and vertical obstacles were drawn as boundaries. A free bubble bitmap was selected -for the ball asset. - -![Alt text](image.png) - -## _Asset Creation_ - -The game assets were created following the design specifications. The background bitmap was -drawn on the screen, and obstacle assets were created for the upper, left, right, and bottom -borders. These assets were then called in the game to create the complete background. -The ball asset was designed next, with the specifications that it would spawn at the center with -a random angle and speed. Player assets, represented as cursors or blocks, were also -designed and called in the game. - -![Alt text](image-1.png) - -## _In-Game Rule and Physics_ - -After creating all the assets, the in-game rules and physics were implemented. The -out_of_map() function was designed to check if the ball is out of the left or right screen, -indicating that the opposing player has scored. The collision() function was created to handle all -collisions, both horizontally and vertically, with the ball. - -## _Testing Debugging_ - -Throughout the development process, extensive testing and debugging were conducted. -Several issues were encountered, particularly with the collision part of the code. These issues -were addressed and resolved to ensure smooth gameplay. - -## _Final Design_ - -After debugging, the game screen was redesigned using Canva backgrounds. This step -enhanced the visual appeal of the game and provided a more immersive experience for the -players. - -![Alt text](image-2.png) - -## _Conclusion_ - -In conclusion, a C++ based Ping Pong game was successfully designed using the Splashkit -SDK. The game follows the rules of Air Hockey and allows two players to compete against each -other. The cursor movement is enabled horizontally, with player one using the WASD keys and -player two using the arrow keys. The game assets, including the background, obstacles, ball, -and player cursors, were created and implemented following the design specifications. In-game -rules and physics, such as scoring and collision detection, were also incorporated. Extensive -testing and debugging were conducted to ensure a smooth gameplay experience. The final -design included visually appealing Canva backgrounds, enhancing the overall aesthetics of the -game. +## Screenshots +![](docs/screenshot-01.png) +## Credits +Originally created by Pratham Gupta in 2023-T2. diff --git a/games/Pingpong/docs/README-old.md b/games/Pingpong/docs/README-old.md new file mode 100644 index 00000000..b46fea31 --- /dev/null +++ b/games/Pingpong/docs/README-old.md @@ -0,0 +1,105 @@ +# ARCADE PING PONG + +## How to Install + +- Install [Splashkit](https://www.splashkit.io) to your computer +- Enter to your terminal and open the project folder +- Enter command `skm clang++ program.cpp player.cpp game.cpp obstacle.cpp ball.cpp -o kkc` to build the file +- Enter command `./kkc` to play the game +- Press ENTER button to start the game + +> Arcade Machine Mechanisms +### **Player 1** + +| Input | Description | +| --- | ----------- | +| W Key | Player 1 dicer goes UP | +| S Key | Player 1 dicer goes DOWN | +| A Key | Player 1 dicer goes LEFT | +| D Key | Player 1 dicer goes RIGHT | +| R Key | RESTART | + +### **Player 2** + +| Input | Description | +| --- | ----------- | +| Up Key | Player 2 dicer goes UP | +| Left Key | Player 2 dicer goes LEFT | +| Right Key | Player 2 dicer goes RIGHT | +| Down Key | Player 2 dicer goes DOWN | +| ESC Key | Exit The Game | + + + +# Documentation + +## _Introduction_ + +I will provide an overview of the design process for a C++ based Ping Pong game +using the Splashkit SDK. The game follows the rules of Air Hockey and allows two players to +compete against each other. The cursor is allowed to move horizontally, and player one controls +their movement using the WASD keys, while player two uses the arrow keys. The game is +designed for an HD screen resolution of 1280x720. + +## _Asset Structure_ + +To ensure consistency and reusability, a basic default structure was used for every asset in the +game. The Asset.h file contains the asset's structure, bitmap enumeration, and functions that +are shared across libraries. The Asset.cpp file includes the asset's constructor, update_game +function, draw_game function, and other in-game functions. + +## _Game Design_ + +The design process began with drawing the background bitmap using Canva. A football-themed +background was chosen for this game. The dimensions of each asset were calculated, and +horizontal and vertical obstacles were drawn as boundaries. A free bubble bitmap was selected +for the ball asset. + +![Alt text](image.png) + +## _Asset Creation_ + +The game assets were created following the design specifications. The background bitmap was +drawn on the screen, and obstacle assets were created for the upper, left, right, and bottom +borders. These assets were then called in the game to create the complete background. +The ball asset was designed next, with the specifications that it would spawn at the center with +a random angle and speed. Player assets, represented as cursors or blocks, were also +designed and called in the game. + +![Alt text](image-1.png) + +## _In-Game Rule and Physics_ + +After creating all the assets, the in-game rules and physics were implemented. The +out_of_map() function was designed to check if the ball is out of the left or right screen, +indicating that the opposing player has scored. The collision() function was created to handle all +collisions, both horizontally and vertically, with the ball. + +## _Testing Debugging_ + +Throughout the development process, extensive testing and debugging were conducted. +Several issues were encountered, particularly with the collision part of the code. These issues +were addressed and resolved to ensure smooth gameplay. + +## _Final Design_ + +After debugging, the game screen was redesigned using Canva backgrounds. This step +enhanced the visual appeal of the game and provided a more immersive experience for the +players. + +![Alt text](image-2.png) + +## _Conclusion_ + +In conclusion, a C++ based Ping Pong game was successfully designed using the Splashkit +SDK. The game follows the rules of Air Hockey and allows two players to compete against each +other. The cursor movement is enabled horizontally, with player one using the WASD keys and +player two using the arrow keys. The game assets, including the background, obstacles, ball, +and player cursors, were created and implemented following the design specifications. In-game +rules and physics, such as scoring and collision detection, were also incorporated. Extensive +testing and debugging were conducted to ensure a smooth gameplay experience. The final +design included visually appealing Canva backgrounds, enhancing the overall aesthetics of the +game. + + + diff --git a/games/Pingpong/docs/screenshot-01.png b/games/Pingpong/docs/screenshot-01.png new file mode 100644 index 00000000..3098babd Binary files /dev/null and b/games/Pingpong/docs/screenshot-01.png differ diff --git a/games/Runner_Dash/README.md b/games/Runner_Dash/README.md index e46c4400..95addff9 100644 --- a/games/Runner_Dash/README.md +++ b/games/Runner_Dash/README.md @@ -1,40 +1,40 @@ -# Documentation on Runner Dash +# Runner Dash -| Members | Roles | -|---------|---------| -|Swanny Aurellia | Documentation| -|Norman Spencer Harty | Documentation| -|Tulsi Balamurali| Code| -|Harney Halls | Code| +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. OPTIONAL: Build using `skm dotnet build` while in the project folder. +3. Build and run using `skm dotnet run` while in the project folder. -## _Introduction_ -Runner Dash is a game built by the SplashKit team in T1 2023, with the members Swanny, Norman, Tulsi, and Harney. Tulsi and Harney have worked on the code for this game, while Swanny and Norman wrote the documentation. Himanshu has built the base code for Runner Dash as a terminal game using the C# language. The team then decided to use C++ to build the game using SplashKit. The game will be tested on Raspberry Pi to see how it performs on the arcade machine. This is the second game the team has worked on, after working on DX Ball game in the first half of the trimester. +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ -## _Purpose of the game_ -The purpose of this game is to demonstrate the use of SplashKit to convert a terminal game into a game with graphics that can be run on the arcade machines. This game will show that SplashKit can be integrated into the backend of a pre-existing game to turn a simple game made to learn about the processes behind a game into one that looks like a real arcade game. +## Technical overview -## _Steps involved in making the game_ -### Base Code -The development of this game began with the base code created by Himanshu. This code is written in C# and runs on the terminal. +- **Language:** C# +- **Current scope:** Small +- **Code quality:** Poor +- **Gameplay implementation:** Complete -runnerdash_screenshot +## Gameplay overview -The team then started developing the code for this game based on the source code provided, with some modifications to include the SplashKit library, and in order for it to be compatible with the arcade machine. +A CLI grid-based turn-based survival action game (?) for one player. -### Programming Language -The team has chosen to use C++ as the programming language to build the game on SplashKit. Although the base code for the terminal game was written in C#, the team chose C++ because of their familiarity with the language. +### Player 1 Controls -### Tech Stack -**Microsoft Teams** was used as the main communication method between team members. The team communicates task to complete each week and update each other after finishing a task. The team also participates in weekly meetings with the other SplashKit teams using Microsoft Teams. +| Action | Key | +|----------------|---------------| +| Move Up | Up arrow | +| Move Left | Left arrow | +| Move Right | Right arrow | +| Move Down | Down arrow | +| Return to menu | X | -**GitHub** is used to store files the team has worked on and sharing files between members. A member makes a pull request to Thoth Tech's `arcade-games` repository under the `runnerdash` branch after major updates. +## Other notes -**SplashKit** is an open-source Software Development Kit with many functions useful for creating games and animations. It is also used as a tool to learn programming, introduced in units such as SIT102 - Introduction to Programming. +- Documentation from the original team is available in `/docs/`. -**MSYS2** is a terminal used to install and run SplashKit. The team uses this terminal to install the library, create SplashKit projects, and running the program. +## Screenshots -## _Details of the game_ -The terminal version of the game involves the player moving through a grid using the arrow keys to gain score by collecting gems while avoiding an enemy that moves towards the player when the player moves. -There is one gem on the screen at a time that gets replaced by a new gem at a random position when collected. -The game is endless, with no win condition, only the enemy colliding with the player as a loss condition. -The SplashKit version of the game will use an arcade machine's joystick for player movement and SplashKit graphics instead of a text grid. +![](docs/screenshot-01.png) + +## Credits + +Originally created by Swanny Aurellia, Norman Spencer Harty, Tulsi Balamurali, and Harney Halls in 2023-T1. diff --git a/games/Runner_Dash/docs/README-old.md b/games/Runner_Dash/docs/README-old.md new file mode 100644 index 00000000..54b7524e --- /dev/null +++ b/games/Runner_Dash/docs/README-old.md @@ -0,0 +1,40 @@ +# Documentation on Runner Dash + +| Members | Roles | +|---------|---------| +|Swanny Aurellia | Documentation| +|Norman Spencer Harty | Documentation| +|Tulsi Balamurali| Code| +|Harney Halls | Code| + +## _Introduction_ +Runner Dash is a game built by the SplashKit team in T1 2023, with the members Swanny, Norman, Tulsi, and Harney. Tulsi and Harney have worked on the code for this game, while Swanny and Norman wrote the documentation. Himanshu has built the base code for Runner Dash as a terminal game using the C# language. The team then decided to use C++ to build the game using SplashKit. The game will be tested on Raspberry Pi to see how it performs on the arcade machine. This is the second game the team has worked on, after working on DX Ball game in the first half of the trimester. + +## _Purpose of the game_ +The purpose of this game is to demonstrate the use of SplashKit to convert a terminal game into a game with graphics that can be run on the arcade machines. This game will show that SplashKit can be integrated into the backend of a pre-existing game to turn a simple game made to learn about the processes behind a game into one that looks like a real arcade game. + +## _Steps involved in making the game_ +### Base Code +The development of this game began with the base code created by Himanshu. This code is written in C# and runs on the terminal. + +runnerdash_screenshot + +The team then started developing the code for this game based on the source code provided, with some modifications to include the SplashKit library, and in order for it to be compatible with the arcade machine. + +### Programming Language +The team has chosen to use C++ as the programming language to build the game on SplashKit. Although the base code for the terminal game was written in C#, the team chose C++ because of their familiarity with the language. + +### Tech Stack +**Microsoft Teams** was used as the main communication method between team members. The team communicates task to complete each week and update each other after finishing a task. The team also participates in weekly meetings with the other SplashKit teams using Microsoft Teams. + +**GitHub** is used to store files the team has worked on and sharing files between members. A member makes a pull request to Thoth Tech's `arcade-games` repository under the `runnerdash` branch after major updates. + +**SplashKit** is an open-source Software Development Kit with many functions useful for creating games and animations. It is also used as a tool to learn programming, introduced in units such as SIT102 - Introduction to Programming. + +**MSYS2** is a terminal used to install and run SplashKit. The team uses this terminal to install the library, create SplashKit projects, and running the program. + +## _Details of the game_ +The terminal version of the game involves the player moving through a grid using the arrow keys to gain score by collecting gems while avoiding an enemy that moves towards the player when the player moves. +There is one gem on the screen at a time that gets replaced by a new gem at a random position when collected. +The game is endless, with no win condition, only the enemy colliding with the player as a loss condition. +The SplashKit version of the game will use an arcade machine's joystick for player movement and SplashKit graphics instead of a text grid. diff --git a/games/Runner_Dash/docs/screenshot-01.png b/games/Runner_Dash/docs/screenshot-01.png new file mode 100644 index 00000000..c6ed9314 Binary files /dev/null and b/games/Runner_Dash/docs/screenshot-01.png differ diff --git a/games/SkySurge/README.md b/games/SkySurge/README.md index b544da7c..0b5c9892 100644 --- a/games/SkySurge/README.md +++ b/games/SkySurge/README.md @@ -1,57 +1,41 @@ -# Sky Surge +# Repo Name -## Overview: +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. OPTIONAL: Build using `skm dotnet build` while in the project folder. Note that you may need to manually specify the build target using e.g., `skm dotnet build Sky_Surge.csproj`. +3. Build and run using `skm dotnet run` while in the project folder. -Sky Surge is a top-down shooter which draws inspiration from classics such as Strikers 1945. In this game players take control of a powerful aircraft, navigating through challenging levels filled with waves of enemies, power-ups and intense boss battles. This twists conventional shooters through the incorporation of a unique mechanic which causes the player to grow in size and shoot in a larger radius, raising not only the stakes but increasing the sense of accomplishment for players through progression. +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ +## Technical overview +- **Language:** C# +- **Current scope:** Small +- **Code quality:** Fair +- **Gameplay implementation:** Incomplete -## Gameplay Features: +## Gameplay overview - **1. Dynamic Growth** +A vertically scrolling shooter for one player. Control an aircraft and dodge or destroy enemy aircraft. - - Destroying enemies increases size and firepower of player’s aircraft - - - Larger size makes it harder to maneuver the character but increases - the player’s offensive capabilities. - - - Allows for more challenging and strategic gameplay - - **2. Powerups and Downgrades:** - -- Collect different powerups found through destroying enemies which help the player to gain limited amount of special abilities. +### Player 1 Controls -- Getting hit remove the last ability gained as well as downgrading the firepower and size of player. +| Action | Key | +|--------------|--------------| +| Move Forward | Up arrow | +| Move Left | Left arrow | +| Move Right | Right arrow | +| Move Down | Down arrow | +| Shoot | SPACE | -**3. Point and Leaderboard System:** -- Gain points by shooting and killing enemies +## Other notes -- Points are added and saved for the top four players at the end screen +- Documentation from the original author can be found in `/docs/`, though it describes the game as though it were complete so could be thought of as more of a to-do list than a description of the current game. +- BUG: the game can run significantly faster while the player isn't shooting because the game's primary rendering loop is not correctly configured. -- Score is reset if the player is hit +## Screenshots -**4. Customizability:** -- Three selectable aircrafts available which have different attack patterns and spread +![](docs/screenshot-01.png) -- Allowing for more personalized experience +## Credits -**5. Visual and Audio Design:** -- This will consist of mostly pixel art allowing for a consistent aesthetic throughout all the arcade games already created - -- Art will comprise of real-world recognizable aircrafts simplified to the format - -- Dynamic soundtrack which changes as the level progresses - -**6. Control Scheme:** -- An easy two button combat system will be incorporated for activating powerups and shooting - -- Standard four button movement -- Arrow keys to move (Up, Down, Left, Right) -- Spacebar to shoot - -## Example Sprites -![Sprite1](images/plane2.JPG) -![Sprite2](images/stealthbomber2.png) - -## UML Class -![Sprite3](images/UMLClass.PNG) +Originally created by Ayan Masood in 2023-T3. diff --git a/games/SkySurge/docs/README-old.md b/games/SkySurge/docs/README-old.md new file mode 100644 index 00000000..b544da7c --- /dev/null +++ b/games/SkySurge/docs/README-old.md @@ -0,0 +1,57 @@ +# Sky Surge + +## Overview: + +Sky Surge is a top-down shooter which draws inspiration from classics such as Strikers 1945. In this game players take control of a powerful aircraft, navigating through challenging levels filled with waves of enemies, power-ups and intense boss battles. This twists conventional shooters through the incorporation of a unique mechanic which causes the player to grow in size and shoot in a larger radius, raising not only the stakes but increasing the sense of accomplishment for players through progression. + + + +## Gameplay Features: + + **1. Dynamic Growth** + + - Destroying enemies increases size and firepower of player’s aircraft + + - Larger size makes it harder to maneuver the character but increases + the player’s offensive capabilities. + + - Allows for more challenging and strategic gameplay + + **2. Powerups and Downgrades:** + +- Collect different powerups found through destroying enemies which help the player to gain limited amount of special abilities. + +- Getting hit remove the last ability gained as well as downgrading the firepower and size of player. + +**3. Point and Leaderboard System:** +- Gain points by shooting and killing enemies + +- Points are added and saved for the top four players at the end screen + +- Score is reset if the player is hit + +**4. Customizability:** +- Three selectable aircrafts available which have different attack patterns and spread + +- Allowing for more personalized experience + +**5. Visual and Audio Design:** +- This will consist of mostly pixel art allowing for a consistent aesthetic throughout all the arcade games already created + +- Art will comprise of real-world recognizable aircrafts simplified to the format + +- Dynamic soundtrack which changes as the level progresses + +**6. Control Scheme:** +- An easy two button combat system will be incorporated for activating powerups and shooting + +- Standard four button movement +- Arrow keys to move (Up, Down, Left, Right) +- Spacebar to shoot + +## Example Sprites +![Sprite1](images/plane2.JPG) +![Sprite2](images/stealthbomber2.png) + +## UML Class +![Sprite3](images/UMLClass.PNG) diff --git a/games/SkySurge/docs/screenshot-01.png b/games/SkySurge/docs/screenshot-01.png new file mode 100644 index 00000000..8a2a99a3 Binary files /dev/null and b/games/SkySurge/docs/screenshot-01.png differ diff --git a/games/VentureAdventure/Documentation/screenshot-01.png b/games/VentureAdventure/Documentation/screenshot-01.png new file mode 100644 index 00000000..cb365713 Binary files /dev/null and b/games/VentureAdventure/Documentation/screenshot-01.png differ diff --git a/games/VentureAdventure/Documentation/screenshot-02.png b/games/VentureAdventure/Documentation/screenshot-02.png new file mode 100644 index 00000000..91096148 Binary files /dev/null and b/games/VentureAdventure/Documentation/screenshot-02.png differ diff --git a/games/VentureAdventure/README.md b/games/VentureAdventure/README.md new file mode 100644 index 00000000..960fee18 --- /dev/null +++ b/games/VentureAdventure/README.md @@ -0,0 +1,42 @@ +# Venture Adventure + +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. Build using `skm clang++ *.cpp -o venture-adventure` while in the project folder. +3. Run using `./venture-adventure` while in the project folder. + +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ + +## Technical overview + +- **Language:** C++ +- **Current scope:** Medium +- **Code quality:** Poor +- **Gameplay implementation:** Complete + +## Gameplay overview + +A Sokoban clone (box pushing puzzle game) for one player. Move boxes out of the way in order to collect gems. Collect all gems and return to spawn to clear the level. + +### Player 1 Controls + +| Action | Key | +|-------------|-------------| +| Move Up | Up arrow | +| Move Left | Left arrow | +| Move Right | Right arrow | +| Move Down | Down Arrow | + +## Other notes + +- Somewhat superceded by the later "Venture Adventure 2" project. +- Miscellaneous documentation is available in `/Documentation/`. + +## Screenshots + +![](Documentation/screenshot-01.png) + +![](Documentation/screenshot-02.png) + +## Credits + +Originally created by Anthony George in 2022-T2. diff --git a/games/car-race/README.md b/games/car-race/README.md index 2323792e..79f9b9e8 100644 --- a/games/car-race/README.md +++ b/games/car-race/README.md @@ -1,56 +1,49 @@ -# CAR-RACING +# Car Race -## How to Install +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. Build using `skm clang++ *.cpp -o car-race` while in the project folder. +3. Run using `./car-race` while in the project folder. -- Install [Splashkit](https://www.splashkit.io) to your computer -- Enter to your terminal and open the project folder -- Enter command `skm clang++ program.cpp car.cpp game.cpp -o output` to build the file -- Enter command `./output` to play the game -- Press ENTER button to start the game +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ -### *Rules* +## Technical overview -| Input | Description | -| --- | ----------- | -| A Key | Car goes LEFT | -| D Key | Car goes RIGHT | -| R Key | Change The Car Colour Between The Game | +- **Language:** C++ +- **Current scope:** Small +- **Code quality:** Fair (unaddressed segfaults) +- **Gameplay implementation:** Near-complete -## Documentation +## Gameplay overview -## Introduction +A racing-themed vertical dodge game supporting 1-2 players. Players must avoid collisions with cars and other obstacles while they drive along a road and collect powerups. -The Car Race game developed by me using the Splash Kit SDK. The game is a basic arcade-style car game where the player's objective is to navigate a car on a road while avoiding collisions with other cars. +### Player 1 Controls -## Game Design +| Action | Key | +|---------------|---------------| +| Move Left | A | +| Move Right | D | +| Change sprite | R | -I started by designing the basic rules of the game. The game features a car that is spawned on a road and needs to avoid other cars approaching it. The game is designed to have a vertical orientation with a resolution of 800x600 pixels. -![image](images/homescreen.png) +### Player 2 Controls -## Drawing and Animation +| Action | Key | +|---------------|---------------| +| Move Left | Left arrow | +| Move Right | Right arrow | -To create the lane road animation, I took inspiration from the thoth-tech/arcade-games 2D racing demo. I spent time understanding animations in C++ and utilized C# functions to adapt to the required changes. +## Other notes -![image](images/redcar.png) +- Old documentation from the original author is available in `/docs/`. +- BUG: Game has unaddressed segfault conditions. Triggers include attempting to re-play the game after losing. +- BUG: Barriers sometimes spawn across the entire road, guaranteeing a loss. -![image](images/game.png) +## Screenshots -After successfully implementing the animation and car movement, I created a template on Canva for the score and overall theme of the game. +![](docs/screenshot-01.png) -## Car Structure and Functionality +![](docs/screenshot-02.png) -I designed the structure and functions for the cars in the game. The player's car was initialized within the game, and a handle_input() function was implemented to enable car movement. Additionally, a vector was defined to store the obstacle cars, which are spawned every 2 seconds with random speeds. A function was created to initialize these cars and store them in the vector. To optimize memory allocation, a check was implemented to remove cars that went out of the screen (bottom) from the vector. +## Credits -## Scoring and Collision - -The game includes a scoring mechanism that increments the score within a loop. I also implemented a collision function to detect collisions between the player's car and the obstacle cars. If a collision occurs, the game ends. -![image](images/carrace-gameover.png) - -## Additional Features - -I added multiple screen phases to enhance the gameplay experience. Sound effects such as car crash sounds, car motor sounds, and lobby music were incorporated to make the game more immersive. Furthermore, a restart button was implemented to allow players to restart the game after it ends. - -## Conclusion - -In conclusion, I successfully designed a Car Race game using the Splash Kit SDK. The game features a player car that needs to avoid collisions with obstacle cars while navigating a road. I implemented various functionalities such as car movement, obstacle spawning, scoring, collision detection, and additional features like sound effects and screen phases. The game provides an engaging and enjoyable experience for players. -![image](images/carrace-demo-01.png) +Originally created by Khushi Laddi in 2023-T2. diff --git a/games/car-race/docs/README-old.md b/games/car-race/docs/README-old.md new file mode 100644 index 00000000..2323792e --- /dev/null +++ b/games/car-race/docs/README-old.md @@ -0,0 +1,56 @@ +# CAR-RACING + +## How to Install + +- Install [Splashkit](https://www.splashkit.io) to your computer +- Enter to your terminal and open the project folder +- Enter command `skm clang++ program.cpp car.cpp game.cpp -o output` to build the file +- Enter command `./output` to play the game +- Press ENTER button to start the game + +### *Rules* + +| Input | Description | +| --- | ----------- | +| A Key | Car goes LEFT | +| D Key | Car goes RIGHT | +| R Key | Change The Car Colour Between The Game | + +## Documentation + +## Introduction + +The Car Race game developed by me using the Splash Kit SDK. The game is a basic arcade-style car game where the player's objective is to navigate a car on a road while avoiding collisions with other cars. + +## Game Design + +I started by designing the basic rules of the game. The game features a car that is spawned on a road and needs to avoid other cars approaching it. The game is designed to have a vertical orientation with a resolution of 800x600 pixels. +![image](images/homescreen.png) + +## Drawing and Animation + +To create the lane road animation, I took inspiration from the thoth-tech/arcade-games 2D racing demo. I spent time understanding animations in C++ and utilized C# functions to adapt to the required changes. + +![image](images/redcar.png) + +![image](images/game.png) + +After successfully implementing the animation and car movement, I created a template on Canva for the score and overall theme of the game. + +## Car Structure and Functionality + +I designed the structure and functions for the cars in the game. The player's car was initialized within the game, and a handle_input() function was implemented to enable car movement. Additionally, a vector was defined to store the obstacle cars, which are spawned every 2 seconds with random speeds. A function was created to initialize these cars and store them in the vector. To optimize memory allocation, a check was implemented to remove cars that went out of the screen (bottom) from the vector. + +## Scoring and Collision + +The game includes a scoring mechanism that increments the score within a loop. I also implemented a collision function to detect collisions between the player's car and the obstacle cars. If a collision occurs, the game ends. +![image](images/carrace-gameover.png) + +## Additional Features + +I added multiple screen phases to enhance the gameplay experience. Sound effects such as car crash sounds, car motor sounds, and lobby music were incorporated to make the game more immersive. Furthermore, a restart button was implemented to allow players to restart the game after it ends. + +## Conclusion + +In conclusion, I successfully designed a Car Race game using the Splash Kit SDK. The game features a player car that needs to avoid collisions with obstacle cars while navigating a road. I implemented various functionalities such as car movement, obstacle spawning, scoring, collision detection, and additional features like sound effects and screen phases. The game provides an engaging and enjoyable experience for players. +![image](images/carrace-demo-01.png) diff --git a/games/car-race/docs/screenshot-01.png b/games/car-race/docs/screenshot-01.png new file mode 100644 index 00000000..e89c31d5 Binary files /dev/null and b/games/car-race/docs/screenshot-01.png differ diff --git a/games/car-race/docs/screenshot-02.png b/games/car-race/docs/screenshot-02.png new file mode 100644 index 00000000..889238ad Binary files /dev/null and b/games/car-race/docs/screenshot-02.png differ diff --git a/games/splashkit mario/README.md b/games/splashkit mario/README.md new file mode 100644 index 00000000..91ef9297 --- /dev/null +++ b/games/splashkit mario/README.md @@ -0,0 +1,38 @@ +# SplashKit Mario + +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. Build using `skm clang++ *.cpp -o splashkit-mario` while in the project folder. +3. Run using `./splashkit-mario` while in the project folder. + +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ + +## Technical overview + +- **Language:** C++ +- **Current scope:** Small +- **Code quality:** Poor +- **Gameplay implementation:** N/A (made for a tutorial) + +## Gameplay overview + +A basic platforming demo made for a SplashKit tutorial. + +### Player 1 Controls + +| Action | Key | +|--------------|-------------| +| Move up | Up arrow | +| Move Left | Left arrow | +| Move Right | Right arrow | + +## Other notes + +- Issues in the game's implementation make this a poor choice to learn well-structured program design - though it does an adequate job of providing a demonstration of several of SplashKit's functions which was its intended purpose. + +## Screenshots + +![](docs/screenshot-01.png) + +## Credits + +Originally created by Kartik Kaushik in 2024-T1. diff --git a/games/splashkit mario/docs/screenshot-01.png b/games/splashkit mario/docs/screenshot-01.png new file mode 100644 index 00000000..b70885cf Binary files /dev/null and b/games/splashkit mario/docs/screenshot-01.png differ diff --git a/in-progress-games/SingleCombat/Documentation/screenshot-01.png b/in-progress-games/SingleCombat/Documentation/screenshot-01.png new file mode 100644 index 00000000..181d1417 Binary files /dev/null and b/in-progress-games/SingleCombat/Documentation/screenshot-01.png differ diff --git a/in-progress-games/SingleCombat/README.md b/in-progress-games/SingleCombat/README.md new file mode 100644 index 00000000..9afa219c --- /dev/null +++ b/in-progress-games/SingleCombat/README.md @@ -0,0 +1,38 @@ +# Single Combat + +1. Requires a [SplashKit installation](https://splashkit.io/installation/). +2. Build using `skm clang++ *.cpp -o single-combat` while in the project folder. +3. Run using `./single-combat` while in the project folder. + +_See also: usage documentation for [skm](https://github.com/splashkit/skm/blob/master/README.MD) and [SplashKit](https://splashkit.io/guides/using-splashkit/0-overview/)._ + +## Technical overview + +- **Language:** C++ +- **Current scope:** Small +- **Code quality:** Fair +- **Gameplay implementation:** Incomplete + +## Gameplay overview + +A tetris-with-a-twist game based on Swordfight from the game Puzzle Pirates. + +### Player 1 Controls + +| Action | Key | +|------------------|------------------| +| Move block left | A | +| Move block right | D | +| Move block down | S | + +## Other notes + +- Significant documentation from the original author is available in `/Documentation/`. + +## Screenshots + +![](Documentation/screenshot-01.png) + +## Credits + +Originally created by Castiel Mordred McIntosh in 2023-T3.