top of page

Simple Miner

The main goal of this project was to create a robust system that incorporates essential features such as memory management, multi-threading, loading mechanisms, debugging, analysis and optimization. To achieve this, a game similar to Minecraft was developed with a world that mimics the game's environment and behavior. The game includes essential Minecraft features such as lighting, biomes, and other characteristics that are crucial to the overall gaming experience.

Currently Implemented

  • Memory management

  • Chunk loading and unloading

  • Run Length Enconded (RLE) compression scheme

  • Minecraft illumination

  • Vertex Animations

  • Caves, ridges and canyons, trees. 

  • Job system

  • Multi-threading

  • Procedural Content Generation through Perlin Noise

  • Biomes

Role

Gameplay and Engine Programmer

Engine

Custom C++ Engine

Tools and Languages

C++, DirectX11, Visual Studio, RenderDoc

Development Time

2 Months

Chunk Loading

In this project, the loading mechanism was designed with the objective of selecting only the essential chunks required for gameplay around the player's current position. The process involves loading chunks within a specified radius while unloading any chunks that are no longer necessary to conserve memory usage. To ensure efficient storage of the modified chunks, Run-length Encoding (RLE) data is used, enabling quick activation and deactivation of the required chunks. This approach optimizes the game's performance and provides a seamless experience for the players by ensuring that only the essential chunks are loaded, minimizing any lag or performance issues.

Loading Mechanism Aerial View

To enhance the gaming experience, the world loading mechanism was designed to incorporate a distance fog, which helps to hide the loading process from the player. The distance fog works by loading the necessary chunks outside of the player's visible range, ensuring that the loading process does not disrupt the player's immersion in the game. This technique provides a seamless transition between loaded and unloaded chunks, making the game appear more natural and realistic.

Loading Disguised by Distance Fog

Special Illumination

Due to the vast number of blocks that load simultaneously, traditional means of illumination are not feasible. As a result, a custom Minecraft-style light propagation system was developed to address this challenge. The light propagation system is designed to mimic the lighting behavior in Minecraft, where the lighting is based on the source block and the light level of adjacent blocks.

Light Propagation

In a dynamic game environment where players can dig or place blocks at any time during gameplay, lighting needs to be resolved constantly. The lighting system in this game is divided into indoor and outdoor lighting categories, which are determined based on the light source, such as a torch or the sun. At a higher level, here's how light is processed:

World Features

The world features were procedurally generated using Perlin Noise based functions, that provide a unique world that includes, including:

  • Trees

  • Water Translucency and vertex animations,

  • Lighting

  • Natural canyon and cave systems

  • Natural rivers and oceans

  • Varying biomes across the infinite world

  • Different camera modes while playing

Caves

Ridges

Far View of Cave Systems

Water Vertex Animations

bottom of page