- ABANDONED/UNFINISHED
The lwirth-lib is a general purpose library written in C++17 by Luis Wirth. It includes a game-/simulation-engine and uses the Vulkan-API.
The lwirth-lib is general purpose. It is made up of the following separate components: Math, Graphics, Physics, Memory management and Artifical Intelligence. All of this combines to form a game-engine.
GLFW is in charge of creating the window and fetching all keyboard and mouse inputs. The responsible class for this is the lw::Frame.
As previously stated the library utilizes Vulkan for rendering. For most Vulkan modules there are wrappers, e.g VK::Pipeline or VK::Device to simplify their use. In the core, higher-level classes use these wrappers to form actual renderers, e.g. the lw::SimpleBrush2D.
The lw::RenderWindow takes care of handling all of these abilities. It is very easy to create an instance of this class and get started on rendering.
As of this time, it is not recommended to use the linear algebra build into the lwirth-lib but instead to utilize Eigen, which is innately available.
The lwirth-lib supports basic linear algebra like vectors and matrices. These can be of any dimensions due to the classes being templated. For the lw::Vec2, lw::Vec3 and lw::Vec4 template specializations do exist and provide extra functionality.
Some basic geometry is also built into the library, which mainly is vector-geometry. You can perform many actions on lw::Lines and lw::Planes and compute useful data.
The project uses CMake therefor you can build the project on any platform. As of now CMake works fine for Windows but not yet for Mac. Mac support is currently work in progress.
All the necessary dependencies for the lwirth-lib are in the libraries directory. They are automatically included and linked by the CMake-Project. Therefor there is no need to download any third-party dependencies.
Third-party libraries include the following:
#include "lwirth.hpp"
int main()
{
lw::println("Code example coming soon");
}
- utilize clang-format
- utilize clang-tidy
- use best practices (e.g. Jason Turner)
- MacOS support
- Linux support
- finish CMake setup
- work on 2D-rendering (textures, shaders, more components, ...)
- start 3D-rendering
- implement more math
- implement physics (based on physics studies)
- expand machine learning
Up to now the only contributor to this project has been Luis Wirth.