Giter Club home page Giter Club logo

Fling Engine Logo

The Fling Engine aims to be a cross platform Vulkan game engine that will experiment with the following:

  • Low-level engine systems such as render API abstraction, file systems, and custom allocators.
  • Multithreaded engine architecture
  • The Vulkan graphics API for real time rendering

Build Status Build status Open Source Helpers GitHub license Work in progress badge Discord Chat

Getting Started

There are a few basic steps to compiling Fling on your platform.

CMake 3.13 or higher!

This project requires CMake 3.13 or higher, you can install it here.

For Linux

This project uses GLFW, so you will need to install those libraries to your machine. GLFW also depends on having Doxygen, so you may want to have that as well.

Ubuntu:

sudo apt-get update
sudo apt-get install doxygen
sudo apt-get install -y libglm-dev libxcb-dri3-0 libxcb-present0
sudo apt-get install -y libpciaccess0 libpng-dev libxcb-keysyms1-dev
sudo apt-get install -y libxcb-dri3-dev libx11-dev libmirclient-dev
sudo apt-get install -y libwayland-dev libxrandr-dev
sudo apt-get install -y libglfw3-dev
sudo apt-get install -y xorg-dev

Vulkan SDK

Obviously this project is build using Vulkan, so you will need to install it before compiling or running the program.

You can download the SDK from the LunarG website here.

If you are having trouble with the Vulkan SDK then check out some of these resources:

Init.bat and Init.sh

After installing the SDK, you can simply run one of the provided scripts.

Running either one of these scripts will simply get all submodules and external libraries that the engine uses and create a folder called build. The build folder will have your platform specific build files (Visual Studio, Makefiles, etc).

Packaging a project

For ease of development and iteration the file paths to Assets (shaders, textures, models, etc) are all absolute paths generated by CMake. If you want to have a copy of your executeable with asset paths relative to the program, then generate your project files with CMake with this flag:

cmake -DDEFINE_SHIPPING=ON -B build .

Notice the -DDEFINE_SHIPPING option is set to ON. This sets a definiton that you can use in C++:

#ifdef FLING_SHIPPING
// Do some nice stuff
#else
// Do non-shipping code, perhaps with a lot of log messages
#endif

Wanna contribute?

If you have any contributions or fixes that you want to contribute, then feel free to open an issue or a pull request! I'm happy to talk about the project, so feel free to reach out to me on Twitter or here on GitHub. Eventually a goal is to have some more specific PR templates/coding standards but for now that is not a priority.

Branching Strategy

We use a pretty basic branching strategy. Make a feature branch off of Main for something like "add-support-for-x", and then that feature is done and tested create a pull request to get it into Main.

We will create stable "Release" branches and tag them accordingly with stable versions of the build.

Cool Resources

Some great resources are the Vulkan Tutorial and SaschaWillems's repo with different Vulkan examples

Fling Engine's Projects

bullet3 icon bullet3

Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

catch2 icon catch2

A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later (or C++03 on the Catch1.x branch)

cereal icon cereal

A C++11 library for serialization

entt icon entt

Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more

flingci icon flingci

Continuous Integration setup for the Fling Engine

flingdockerbuild icon flingdockerbuild

Docker containers that build the engine on GCC and Clang and run unit tests

flingengine icon flingengine

A Vulkan game engine with a focus on data oriented design

glfw icon glfw

A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input

glm icon glm

OpenGL Mathematics (GLM)

imgui icon imgui

Dear ImGui: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies

inih icon inih

This is a header only C++ version of inih.

sol2 icon sol2

Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation:

spirv-cross icon spirv-cross

SPIRV-Cross is a practical tool and library for performing reflection on SPIR-V and disassembling SPIR-V back to high level languages.

stb icon stb

stb single-file public domain libraries for C/C++

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.