Deformation Gif Deformation 2 Gif

As you can see in this GIF, I added the ability to deform blocks when you stand on them. You can also use the weights to deform any block you are looking at with a stronger force than the player has. This was implemented using the springs that we were taught in class for the PBD cloth, just at a lower resolution. Each block has 4 points at each of the corners, and each block can influence the blocks next to them. The blocks' sides will automatically deform and match the new shape of the top of the block, and the entire column will sag downwards.


Particles Gif

Upon breaking a block, particles will spawn at the block loaction. These particles are created using a random number generator. these particles are given an x y and z velocity at creation, and they are pulled down by gravity. Each block has it's own unique color of particles matching the block color.


When you run the program, perlin noise is used to generate a 16 by 16 world for the player to walk around in. The world generation is done using a 2D perlin noise function, which generates a smooth gradient of values between 0 and 1. This noise is being used to generate terrain height and add water onto the map. Essentially, we first create the hills using this noise, and clamp the minimum height. We then check for any locations at minimum height, and generate another perlin noise function that has the ability to carve ponds into the ground.

world1 png world2 png world3 png

Water in this world is moving based on a perlin noise function. This function takes time as a variable, generating waves that flow throughout the world.

water perlin

Third Person gif

You can toggle between first and third person.

dayNight gif

There is a day night cycle. this day night cycle affects the color of the blocks (at night the blocks get really dark!)


Left Click: Break Block
Right Click: Place Weight
W: Move Forward
S: Move Backward
A: Move Left
D: Move Right
R: Remove Weights
T: Toggle First/Third Person


I used the following resources to help me with this project:
GLM: data structure
CMAKE: building
GLFW: window management and input detection
GLEW: OpenGL function loading
miniaudio: audio
stb_image: image loading
All images used in this project are original property of Mojang Studios, and are used for educational purposes only.


Jordan Daryanani