MINI MinEcraft
CIS560: INTERACTIVE COMPUTER GRAPHICS - FALL 2019
C++ / OpenGL
OVERVIEW
This is one of two projects I created as a part of my Computer Graphics course. This group project involved implementing a basic mini-Minecraft system and interface. For this project I worked with Sydney Miller and Jack Manthorp.
FEATURES
Sanjana RAO
Efficient Terrain Rendering and Chunking
Chunking: Implemented an algorithm to only render outside faces of the terrain such that the inside is empty.
Efficient Terrain Rendering: Interleaved Vertex Buffer Objects (VBOs) for more efficient vertex data access and processing
L-system
L-systems to procedurally generate a delta and linear river
L-systems to procedurally generate buildings
Included procedural floor plans and procedural building height and attributes
Caves
Random Walk Algorithm to generate path of caves
Carved our cave in spheres of variable radii
Procedurally generated lava pools in caves
Procedurally placed coal and iron ores
JACK MANTHORP
Game Engine Update Function and Player Physics
Implemented a Player and Camera Class
Implemented Player Physics (Gravity, Jumping, Collisions, Swimming)
Set up WASD keys, Game Update Function, and Redrawing
Multithreading
Multithread terrain generation such that new terrain blocks loaded were loaded on a separate thread. Used Qt’s multithreading classes to implement (e.i. QRunnable, QThreadPool, QMutex)
Post-Processing Shaders for underwater overlays
Sound
SYDNEY MILLER
Procedural Terrain Generation
Fractal Brownian Noise to generate height field
Ray Casting to add and remove blocks
Terrain Expansion
Texturing and Texture Animation
Added new block types, textured all blocks, animated water and lava blocks
Created transparent blocks and adjusted rendering process accordingly
Inventory GUI: Allows users to visualize their collection and place different blocks
Procedurally Placed Assets
Chests that contain block types that can be moved to player’s inventory
Ponds