Cube Village

by Christian Johansen
CPE 471 Spring 2019, Dr. Zoe Wood

Overview

For my final project, I created a small cube voxel world that could be edited.

I wanted to explore making an editable world, inspired by voxel-based games.


Features

  • Several types of blocks with textures, such as grass, sand, and fences.
  • A few house meshes to create a small village look.
  • Bunny inhabitants that move around and stay within the boundaries of the village.
  • A 3rd person camera with a moveable character.
  • Click to place blocks, and the block type can be cycled with the "C" key.
  • Hierarchically modeled flowers that wave around.

Controls

  • W/S: Move the character forwards or backwards
  • A/D: Move the character left or right
  • Mouse: Look around
  • C: Change the placeable block type
  • Mouse click: Place a block nearby
  • E/Q: Move light source

Technical Features

This project uses hierarchical modeling for the flowers that can be placed.

It uses Blinn-Phong lighting for all meshes in the scene.

Third person camera control alerts the view matrix to follow the character.

Sphere-based collision detection between several boids moving around randomly and following each other.

Skybox cube that moves with the player, giving illusion of faraway sky.


Future Improvements

For future improvements, the voxel rendering slows down the framerate significantly, so an optimization would be to precalculate cube vertices and upload them all at once to the GPU.

When a voxel changes, just recalculate that section and reupload to the GPU.


Resources