A small project of mine, using Scala with LWJGL (OpenGL wrapper) to create a 3D game of some kind. The main idea is having the player explore an extensive cave system that expands "infinitely" in all directions.
-Unbounded procedural terrain generation using the Marching Cubes algorithm on the GPU (extracting a polygonal mesh of an isosurface from a 3D noise function)
-Terrain loading done in parallel with rendering, using a chunk loading system
-Simple terrain collision detection optimized to make use of its regular grid structure
-GPU-accelerated skeletal animation
-3rd person camera using quaternions for orientation
-Simple lighting and material system; fog
-Input system that abstracts away the raw input from game actions
-Inverse kinematics using Jacobians or FABRIK
-State machine to represent current player state and animation (idle, walking, jumping, falling, etc.)
-Encapsulate rendering
-Improve terrain gen -- add biomes, stalactites/stalagmites, flora (maybe using L-systems), etc.
-Try out smooth shading and see if it looks better than flat shading
-Entities