git clone --recurse-submodules <garfish-url>
git submodule status to see version dependencies
This engine serves as a general purpose base for future projects, built from C++ and Vulkan.
The GarFish engine promises at least the following features:
- A performant interface of Vulkan's features
- A performant interface for text rendering
- An abstraction of graphical data such as models, materials, and so on
- A system for storing elements on the screen.
- General UI elements such as buttons, draggable screens, etc.
Required:
- Vulkan
- GLFW
- VMA
- VKbootstrap
- ImGui
- GLM
- fastgltf
- STB Image
- FreeType
- Tracy
Optional for Doxygen:
- Graphviz
- Head to the Vulkan website and download. We're using Vulkan 1.3.296.0, run the installer.
- Only the defaults are needed.
- Installer should handle everything else!
- Included as a submodule
- Head to the VMA github, then to the include folder, and download
vk_mem_alloc.h. - Create a folder called
vmain thethird_partyfolder. - Place your
vk_mem_alloc.hinto thevmafolder
- Included as a submodule
- Head to the ImGui github, and download all of the .h and .cpp files on the main folder
- Go to the backends folder and download:
- imgui_impl_glfw (.h/.cpp)
- imgui_impl_vulkan (.h/.cpp)
- Create a folder called
imguiin thethird_partyfolder. - Place all of the files into the
imguifolder.
- Included as a submodule
- Grab
stb_image.hfrom the stb github and download it. - Create a folder called
stb_imagein thethird_partyfolder. - Place
stb_image.hinto thestb_imagefolder.
- Included as a submodule
- Included as a submodule
- Head to the graphviz download link.
- Ensure the dot tool is in the path.
- Doxygen will now generate useful diagrams. Learn more here.
- Tracy is added as a submodule.
- TODO: instructions
The assets folder is not included in the repository. Engine code that relies on these is likely there
for testing purposes and could be safely removed.
Use the docs folder for more information
- Base Engine
- Low level interface (given items to display on screen, display them)
- Text interface
- Basic UI elements (buttons, boxes, text boxes)
- Asset loading system (models, textures, images, etc.)
- Shader system
- Higher level interface (scene system, choose what goes on screen)
- Multithreading
- 2D
- Sprite system
- Basic lighting
- Tile system
- Turn based gameplay system
- Sound
- Particles
- Basic 2D Animations
- LUA scripting
- ECS pattern
- Additional abstract patterns
- Advanced UI elements (draggable screens)
- 3D
- Material system
- Physics system
- Real time gameplay system
- Advanced lighting system
- Level of detail and culling
- Skeletal animations?
- Multiplayer/network functionality