PCG FPS
Doom clone with procedurally generated levels. Built from scratch with C++ and OpenGL
Project page on Bitbucket
Source code for main application available as Git repository on BitBucket (libraries are included as git submodules)
Latest Build
PCG-FPS Project Version m0.22.2 compiled on 2020-05-08
git commit: 71de1efeca62ad7939efeb7fea88992b4d8d7c3d
Download
Readme
System Requirements
- Microsoft Windows 10
- OpenGL 3.3 enabled Graphics Card and driver
Overview
Project goal: develop a prototype game engine from scratch
Game
- Small first person shooter, inspired by shooting-range/practice levels
- Layout of level is procedurally generated
- construct a series of connected rooms, filled with targets for the player to hit
- Goal of the game: hit all targets and get to the exit as quickly as possible
- Statistics will be shown at the end of the game in the console window
Engine
- written in C++ from scratch
- Rendering based on tutorials from LearnOpenGL.com, integrated into one programm
- Collision and hit detection based on ReactPhysics3D
- Custom gameplay, procedural generation and engine management code
- Code for procedural generation built in separate library for versatility and portability
- Tools library for helper functionality
- Additional functions to ease debugging and analysis
Demonstration
![Screenshot: typical scene from the demo](pcg-fps/room.jpg)
![Screenshot: Room layout generated](pcg-fps/roomlayout1.jpg)
![Screenshot: Hit visualization](pcg-fps/hitvisualization.jpg)
![Screenshot: draw bounding boxes of walls and objects for debugging purposes](pcg-fps/bounding_visualization.jpg)
Shadow Mapping Demonstration. Off, Shadow Mapping, with PCF, PCF with fixed samples
Walkthrough Video
Crappy recoreded walkthrough
Tech
- Built with Visual Studio 2019 Community Edition (16.5.4) [Download Installer]
- Windows SDK Version 10.0.17763.0
- C++17
- OpenGL 3.3
- currently only x86 build supported due to limitations with third party library
- nVidia Nsight used for debugging
Used Third Party Libraries
Documentation
Documentation for three moduls FPS2, pcg and tools generated by Doxygen
FPS2 Documentation
pcg library Documentation
tools library Documentation