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