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