https://github.com/basicasian/lostinabyss
Lost in Abyss is a C++ first-person arcade game focused on computer graphics, where players escape a mysterious abyss before time runs out.
https://github.com/basicasian/lostinabyss
3d-game computer-graphics opengl
Last synced: 10 months ago
JSON representation
Lost in Abyss is a C++ first-person arcade game focused on computer graphics, where players escape a mysterious abyss before time runs out.
- Host: GitHub
- URL: https://github.com/basicasian/lostinabyss
- Owner: basicasian
- Created: 2022-03-04T18:30:28.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-02-27T14:47:18.000Z (12 months ago)
- Last Synced: 2025-03-29T05:51:17.755Z (11 months ago)
- Topics: 3d-game, computer-graphics, opengl
- Language: C++
- Homepage:
- Size: 86.9 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Lost in Abyss
**Creators:** Michelle Lau, Renate Zhang \
**Course:** Computer Graphics Exercise 2022S, TU Vienna\
**Executable:** https://basicasian.itch.io/lost-in-abyss \
**Youtube Link:** https://youtu.be/cX8iDMq0fiw
## Game Overview
*Lost in Abyss* is a first-person arcade jump 'n' run game, created as part of the 2022SS Computer Graphics Exercise class of TU Vienna. You find yourself lost deep in a mysterious abyss with no memory of your past. The only goal is to escape, overcoming various obstacles and managing time, or face being stuck in the depths forever. You play from a first-person perspective, navigating platforms, avoiding traps, and making your way to the surface. If the timer runs out, you’ll need to restart from the beginning.
### Controls:
- **WASD**: Move character
- **Space**: Jump
- **Mouse**: Rotate camera
- **ESC**: Quit game
- **F1**: Toggle wire-frame mode
- **F2**: Toggle back-face culling
- **N**: Skip level
- **M**: Mute sounds
- **F5**: Toggle lights
- **F10**: Restart game
- **F11**: Full-screen mode
### Objectives:
- **Win**: Reach the top platform before time runs out.
- **Lose**: Fall off platforms or run out of time.
## Features
### Core Gameplay
- **3D Environment**: Platforms, obstacles, and traps rendered with a cohesive lighting and shading setup.
- **Collision Detection**: Powered by Bullet Physics, allowing realistic interactions.
- **HUD**: A heads-up display shows the timer and essential game information.
### Graphics and Effects
- **Bloom Effect**: Glowing lights enhance visual depth in the environment.
- **Shadow Mapping with PCF**: Dynamic shadows project onto surrounding elements, adding realism.
- **Normal Mapping**: Realistic surface details for improved depth perception.
- **Physically Based Shading**: Adds realistic lighting to platforms and obstacles.
## Technical Details
The main file, `Main.cpp`, loads and initializes the game assets, shaders, lights, and physics engine components. Assets like platforms, balls, and obstacles are primarily imported from Blender. Game logic, physics, and rendering loops handle the gameplay, while shadow mapping and other post-processing effects are managed within the rendering pipeline.
- **Collision**: Implemented with the Bullet Physics Engine (`BulletBody.cpp` and `BulletWorld.cpp`).
- **Texture Management**: Handled in `Texture.cpp` and `Modelloader.cpp`.
- **Player & Camera**: Managed within `CameraPlayer.cpp`.
## Libraries Used
- **Bullet Physics**: [Bullet](https://github.com/bulletphysics/bullet3/releases) - for physics simulation
- **Assimp**: [Assimp](https://www.assimp.org/) - asset import library
- **FreeType**: [FreeType](https://www.freetype.org/) - text rendering