Skip to content

Commit

Permalink
Add README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
srikavin committed Jan 9, 2020
1 parent b7f2c26 commit ec162b1
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 5 deletions.
32 changes: 29 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,24 @@

## Topic Correlation

This game is based around the adventure of an FBLA member on his journey to complete all the requirements of the business achievement award. Splitting education, progress, and service into each of their own mini-games for each tier of the award. This allows the player to understand the basic requirements of each tier by interacting directly with the objectives.
This game is based around the adventure of an FBLA member on his journey to complete all the requirements of the business
achievement award. Splitting education, progress, and service into each of their own mini-games for each tier of the award.
This allows the player to understand the basic requirements of each tier by interacting directly with the objectives.

A scoreboard is available, and the score is visible at all times during the game. Interactive hotkeys will be shown on
the screen when needed. The game can be played multiple times to discover multiple endings.


## Features
- Keyboard and mouse compatibility
- Original art
- 4 separate stages, each with three levels with increasing difficulty
- A variety of separate mini-games.
- Interactive dialogue
- Enemies, lives, coins, and an overall score system.
- An advanced platformer with the inclusion of puzzles to solve
- Instructions page included on a menu page.
- Multiplayer

### Controls

Expand All @@ -17,14 +34,17 @@ This game is based around the adventure of an FBLA member on his journey to comp
| Move Up | *Up Arrow* |
| Move Down | *Down Arrow* |
| Move Right | *Right Arrow* |
| Use | *E* |
| Quit Game | *Escape* |

## Run Instructions

Launch `quest.exe` in the [`game`](game) directory.

## Development Instructions
For more technical information, read `technical_readme.md`.
For more technical information, read `technical_readme.md`. Also view [javadocs (kDocs)](javadoc/index.html) in the
`javadoc` folder. Code is commented and should be fairly easy to understand. Advanced game rules are also featured
within the source code.

### Running a Development Copy
1. Open the `src` directory with an editor of your choice
Expand Down Expand Up @@ -55,4 +75,10 @@ For more technical information, read `technical_readme.md`.

## Screenshots

TODO
![](readme_assets/tiled_1.png)
![](readme_assets/tiled_2.png)
![](readme_assets/game1.png)
![](readme_assets/game2.png)
![](readme_assets/game3.png)
![](readme_assets/tiled_1.png)
![](readme_assets/tiled_2.png)
Binary file added readme_assets/aseprite_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/asesrite_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/game1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/game2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/game3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/tiled_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added readme_assets/tiled_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 33 additions & 2 deletions technical_readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,38 @@ This type of game architecture avoids object-oriented composition within entitie
approach to add behavior to entities. This avoids illogical composition hierarchies while keeping entity behavior
separated from entity data.

Entities only contain data such as position or sprites. Systems operate on groups of entities with specific components. For
example, PhysicsSystem only acts on entities with both components
Entities only contain references to components. Components are solely "bags" of data such as position or sprites.
Systems operate on groups of entities with specific components. For example, PhysicsSystem only acts on
entities with both PhysicsBody and Transform components.

By using libgdx, this game can be easily ported to other platforms including iOS, Android, and the web--it's only a
matter of reconfiguring the control scheme.

## Map System

Maps are stored in the layered TILE format. The maps and their associated assets are loaded. Tiled Maps may contain any
of the following layers:
* Foreground - Images to render in front of the background
* Background - Images to display in the background with a parallax effect
* Collision - Contains all collision boxes on the map
* Trigger - Contains all map triggers and their associated properties; all objects in this layer must have the property
`type` with a value defined in trigger type. All triggers must be rectangular map objects

## UI System

The user interface of the game utilizes Scene2D. All interfaces are defined in code. Styling (called skins) are loaded
from the assets folder during start up.

## Animations

Animations are made within Asesprite, and are exported into a JSON format, which is then parsed to load animations from
a spritesheet. This along with Asesprite automation allowed for faster prototyping.

## Minigame System

The minigame system was designed to be extensible. New minigames are just a matter of extending the Minigame abstract
class and implementing the required methods.

Dialogue minigames are entirely scripted. They were implemented entirely separate of the game before being included. This
was possible due to the use of Kotlin blocking coroutines to create an seamless API surface to use. Dialogue coroutines
are run in a coroutine and communicate through a series of Packets with the main thread.

0 comments on commit ec162b1

Please sign in to comment.