Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add standardized readme to all games #239

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
854fe98
Do first docs pass for 2dRacer
MHLoppy Oct 3, 2024
8864b4d
Add game readme template
MHLoppy Oct 3, 2024
62f982c
Update game readme template
MHLoppy Oct 3, 2024
650eb90
Update game readme template
MHLoppy Oct 3, 2024
c54b756
Remove build/run commands from template
MHLoppy Oct 3, 2024
8ef541d
Switch controls column order in template
MHLoppy Oct 3, 2024
7149751
Update template's guidance on credits
MHLoppy Oct 3, 2024
fe19f5d
Update scope in readme template
MHLoppy Oct 3, 2024
e814901
Updated readme template
MHLoppy Oct 3, 2024
35f079c
Update readme template
MHLoppy Oct 3, 2024
de88b35
Update car-race documentation
MHLoppy Oct 3, 2024
913801b
Update Homemade Pong documentation
MHLoppy Oct 3, 2024
d0033ce
Update documentation for Pingpong
MHLoppy Oct 3, 2024
b14ab70
Update Pingpong readme
MHLoppy Oct 3, 2024
28df9e1
Update Runner Dash documentation
MHLoppy Oct 3, 2024
449c754
Update documentation for Sky Surge
MHLoppy Oct 3, 2024
e505f8e
Update SkySurge readme
MHLoppy Oct 3, 2024
af2ec66
Add SplashKit Mario documentation
MHLoppy Oct 3, 2024
77d6280
Add Venture Adventure readme
MHLoppy Oct 3, 2024
c055b0b
Add Single Combat readme
MHLoppy Oct 3, 2024
0122543
Update Single Combat readme
MHLoppy Oct 3, 2024
17f32ea
Add 2D Racer screenshot to readme
MHLoppy Oct 3, 2024
2571b50
Fix screenshot links in several readmes
MHLoppy Oct 3, 2024
8c224c0
Add platform-agnostic build/run instructions into template
MHLoppy Oct 8, 2024
cc4ccb2
Add build/run instructions for most games
MHLoppy Oct 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions advanced-game-design-team/Game readme template.md
Original file line number Diff line number Diff line change
@@ -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.]
34 changes: 34 additions & 0 deletions games/2dRacer/README.md
Original file line number Diff line number Diff line change
@@ -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)
File renamed without changes
File renamed without changes.
File renamed without changes.
Binary file added games/2dRacer/docs/screenshot-01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 50 additions & 0 deletions games/HomemadePong/README.md
Original file line number Diff line number Diff line change
@@ -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.
Binary file added games/HomemadePong/docs/screenshot-01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
124 changes: 35 additions & 89 deletions games/Pingpong/README.md
Original file line number Diff line number Diff line change
@@ -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.
105 changes: 105 additions & 0 deletions games/Pingpong/docs/README-old.md
Original file line number Diff line number Diff line change
@@ -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.



Binary file added games/Pingpong/docs/screenshot-01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading