Custom Engine
The personal engine, based on C++, D3D11, and Windows platform, has since improved significantly, and making small games proves its functions. Until now, this engine has many features including 2D and 3D rendering framework, input system, audio system, UI system, networking system, and simple multi-threading job system.
Features
-
XML support by TinyXML2
-
Audio system based on FMod
-
UI System based on ImGui
-
Developer Console
-
Event System
-
Random Number Generator optional by using Noise Map with a seed
-
Input system for Windows keyboard & mouse & Xbox controller
-
Sprite sheet and animation
-
Network system with TCP
Render
Initially, the engine and simple games like Asteroids and Libra were developed using OpenGL 1 for rendering, focusing mainly on alpha blending and textured triangle drawing. This led to the creation of helper functions for drawing shapes such as rings, circles, 2Dpolygons, and rectangles. Image loading.
Later, the development shifted to D3D11, enabling the introduction of orthographic and perspective cameras to support 3D gaming.
The lighting system was enhanced using incorporating ambient, directional, and point in HLSL, along with shader effects like fog, bloom, tone mapping, dissolve, and tri-planar mapping. Support was expanded to include textures with normal map.
To evaluate 3D rendering quality, OBJ file reading capabilities were added.
2D Physics, 2D & 3D raycast
The engine implements a variety of 2D physics. For example, Disc vs Disc, AABB vs Disc or Disc vs Capsole.
Raycast can also be applied to any of the above mentioned shapes or Convex Objects with a random number of vertices.
In Simple Miner, it helps realize the application of blocks vs raycast in 3D.
Visual Math
A simple visual application can be used to show visually for some mathematical applying in the engine.