2023-04-26 11:33:48 +02:00
|
|
|
# Holesome
|
|
|
|
|
2023-04-26 13:56:57 +02:00
|
|
|
Inspired by [hole-io.com](https://hole-io.com)
|
2023-04-26 11:33:48 +02:00
|
|
|
|
2023-04-26 14:24:25 +02:00
|
|
|
PADI 2023,
|
|
|
|
Maximilian Giller,
|
2023-04-26 11:33:48 +02:00
|
|
|
5000149
|
|
|
|
|
2023-04-26 22:48:15 +02:00
|
|
|
## What is this Game about?
|
2023-04-26 11:33:48 +02:00
|
|
|
|
2023-07-06 01:16:47 +02:00
|
|
|
Holesome is about currentLayoutHoles! But not the kind you have seen before ...
|
2023-04-26 11:33:48 +02:00
|
|
|
|
2023-04-26 13:56:57 +02:00
|
|
|
Gameplay:
|
|
|
|
- Navigate the environment as a hole
|
|
|
|
- Eat the things that fall into you
|
|
|
|
- Grow bigger to eat more things
|
|
|
|
- Hide from enemies by closing
|
|
|
|
- Damage your enemies by setting up traps
|
|
|
|
- Eat your enemies and be the only one remaining
|
|
|
|
|
|
|
|
Style:
|
|
|
|
- Isometric
|
|
|
|
- Cute, but dangerous
|
|
|
|
- Intuitive color coding
|
2023-04-26 11:33:48 +02:00
|
|
|
|
|
|
|
## What is the goal?
|
|
|
|
|
2023-04-26 22:48:15 +02:00
|
|
|
The player controls a hole and has to consume as many objects as possible to grow. There are a variaty of Game modes that could be fun:
|
2023-04-26 11:33:48 +02:00
|
|
|
|
|
|
|
- Eat as many objects as possible in a given time
|
|
|
|
- Eat as many objects as possible, as well as all of your enemies and be the only one left
|
|
|
|
- Eat as many objects as possible, but don't eat the bombs/etc., they will make you smaller again
|
|
|
|
|
|
|
|
## Which components are included?
|
|
|
|
|
2023-07-06 01:16:47 +02:00
|
|
|
- **Physics**: Core gameplay element to make the objects fall into the currentLayoutHoles in a fun way
|
2023-04-26 11:33:48 +02:00
|
|
|
- **Controller Support**: Use a controller to control the hole
|
|
|
|
- **Local Multiplayer**: Play with up to 4 players on one device using split screen
|
|
|
|
- **Level Files**: Levels are stored using a simple file format
|
2023-04-26 22:48:15 +02:00
|
|
|
- **Procedural Generation**: Generate the levels procedurally to give the Game more variety
|
2023-04-26 13:56:57 +02:00
|
|
|
- **Menu**: Because, duh
|
2023-04-26 11:33:48 +02:00
|
|
|
|
2023-04-26 13:56:57 +02:00
|
|
|
Potential expansions:
|
2023-04-26 11:33:48 +02:00
|
|
|
|
2023-04-26 13:56:57 +02:00
|
|
|
- **Multithreading**: Improving performance by running the phsics in a separat thread and similar concepts
|
2023-07-06 01:16:47 +02:00
|
|
|
- **AI**: Some currentLayoutHoles could be controlled by AI, which makes singleplayer games more exciting
|
2023-04-26 22:27:40 +02:00
|
|
|
- **Online Multiplayer**: Play with friends online
|
|
|
|
|
|
|
|
## Project Setup
|
|
|
|
|
2023-04-27 23:05:19 +02:00
|
|
|
Install SFML and Eigen: `sudo apt install libsfml-dev libsfml-doc libeigen3-dev`
|
2023-05-03 01:33:05 +02:00
|
|
|
|
2023-06-01 23:25:33 +02:00
|
|
|
### Compiling Box2D from source
|
2023-05-03 01:33:05 +02:00
|
|
|
|
2023-06-01 23:25:33 +02:00
|
|
|
Website: [Box2D](https://github.com/erincatto/box2d)
|
2023-05-03 01:33:05 +02:00
|
|
|
|
2023-06-01 23:25:33 +02:00
|
|
|
1. Make sure cmake, g++ and Doxygen (`sudo apt-get install doxygen`) are installed
|
|
|
|
2. Clone the repository `git clone git@github.com:erincatto/box2d.git`
|
2023-05-03 01:33:05 +02:00
|
|
|
3. Build and install the library
|
|
|
|
```
|
2023-06-01 23:25:33 +02:00
|
|
|
cd box2d
|
2023-05-03 01:33:05 +02:00
|
|
|
mkdir build
|
|
|
|
cd build
|
2023-06-01 23:25:33 +02:00
|
|
|
cmake -DBOX2D_BUILD_DOCS=ON ..
|
|
|
|
```
|
|
|
|
In case of "RandR headers were not found": `sudo apt install xorg-dev`.
|
|
|
|
```
|
|
|
|
cmake --build .
|
|
|
|
cmake --build . --target INSTALL
|
2023-05-03 01:33:05 +02:00
|
|
|
```
|
2023-06-28 16:57:13 +02:00
|
|
|
|
|
|
|
## Project structure
|
|
|
|
|
|
|
|
- Physics Simulations
|
|
|
|
- **Map Simulation**: World-bounds collider
|
|
|
|
- **Holes Simulation**: Creates hole physics by managing all the individual Collectable Simulations
|
|
|
|
- **Collectable Simulation**: Simulates physics for a single collectable
|