{"id":24013270,"url":"https://github.com/jonathspirit/fastengine","last_synced_at":"2025-04-15T09:40:20.765Z","repository":{"id":60014708,"uuid":"454976312","full_name":"JonathSpirit/FastEngine","owner":"JonathSpirit","description":"Project FastEngine","archived":false,"fork":false,"pushed_at":"2025-04-12T15:25:41.000Z","size":50944,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-12T16:36:00.659Z","etag":null,"topics":["framework","game","game-development","glsl","multiplayer","network","sdl2","sdl2-image","sdl2-mixer","vulkan","vulkan-game-engine","vulkan-library"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JonathSpirit.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog_notepadPP.xml","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"JonathSpirit"}},"created_at":"2022-02-03T00:02:35.000Z","updated_at":"2025-01-05T21:43:25.000Z","dependencies_parsed_at":"2023-10-21T20:30:52.654Z","dependency_job_id":"bd01ed4e-5a36-4cc4-b5a6-41420a4a046f","html_url":"https://github.com/JonathSpirit/FastEngine","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathSpirit%2FFastEngine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathSpirit%2FFastEngine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathSpirit%2FFastEngine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathSpirit%2FFastEngine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JonathSpirit","download_url":"https://codeload.github.com/JonathSpirit/FastEngine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249045371,"owners_count":21203865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","game","game-development","glsl","multiplayer","network","sdl2","sdl2-image","sdl2-mixer","vulkan","vulkan-game-engine","vulkan-library"],"created_at":"2025-01-08T06:51:51.077Z","updated_at":"2025-04-15T09:40:20.745Z","avatar_url":"https://github.com/JonathSpirit.png","language":"C++","funding_links":["https://github.com/sponsors/JonathSpirit"],"categories":[],"sub_categories":[],"readme":"# FastEngine\n\nCopyright (C) 2024 Guillaume Guillet\n\n\u003ctable border=\"0px\"\u003e\n\u003ctr\u003e\n\u003ctd\u003e\nLicensed under the Apache License, Version 2.0 (the \"License\");\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\nYou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## Table of Contents\n1. [Description](#description)\n2. [Tools support](#tools)\n3. [Documentation](#documentation)\n4. [How to build / Build details](#how)\n5. [CMake arguments](#cmakeargs)\n6. [CMake targets](#cmaketargets)\n7. [Windows](#windows)\n8. [Linux](#linux)\n9. [Mac OS](#mac)\n10. [Installing](#installing)\n11. [Examples](#examples)\n\n\u003ca id=\"description\"\u003e\u003c/a\u003e\n## Description\n![logo](logo.png) FastEngine is a 2D (targeted for 2D, 3D capable), multiplayer oriented framework on top of the [Vulkan](https://www.vulkan.org/) API. It brings a lot of tools and classes that can help mostly game development.\n\n\u003ca id=\"tools\"\u003e\u003c/a\u003e\n### Tools support\nFastEngine must be built using a C++20 compatible compiler :\n- For GNU/Linux : GCC-11 minimum\n- For Windows : MINGW-W64, GCC-11 minimum\n- - (32bits or UCRT 64bits)\n- For MAC : AppleClang 13 minimum\n\nUnsupported compiler/tools :\n- Microsoft compiler, (it should work but is not tested on)\n\nWorking/supported architecture :\n- 32bits\n- 64bits\n- ARM\n\nFastEngine is built under C++20 and game/software that link to this library must be too.\n\n\u003ca id=\"documentation\"\u003e\u003c/a\u003e\n### Documentation\nYou can find the latest Doxygen docs here : https://jonathspirit.github.io/FastEngine/\n\nVulkan specification here : https://registry.khronos.org/vulkan/specs/1.3-extensions/html/index.html\n\nNote that this is a young project that need a ton of works for examples, documentations, tutorials ...\n\n\u003ca id=\"how\"\u003e\u003c/a\u003e\n## How to build / Build details\n\nYou can check platform specific build instructions below this chapter.\n\nFirst you should (if not already) clone the git repository :\n\n    git clone https://github.com/JonathSpirit/FastEngine.git --recurse-submodules\n\nYou must first compile the dependencies by going into the **deps/** folder and then use CMake :\n\n    cd deps\n    mkdir build \u0026\u0026 cd build\n    cmake ..\n    cmake --build .\n\nThen you can go to the **root directory** and configure the project like this : (don't forget the FGE_DEPS_PATH option)\n\n    mkdir build \u0026\u0026 cd build\n    cmake .. -DFGE_DEPS_PATH=deps/build/libs -DFGE_BUILD_DOC=ON -DFGE_BUILD_EXAMPLES=ON -DFGE_BUILD_TESTS=ON\n\nThen use CMake to build the project (when building you can use the -j# argument to use multiple core) :\n\n    cmake --build .\n\n\u003ca id=\"cmakeargs\"\u003e\u003c/a\u003e\n### CMake arguments\nIn order to tell CMake where to find the dependencies you have to specify the relative path to the **.../libs** folder generated by the **deps/CMakelists.txt** script :\n\n    -DFGE_DEPS_PATH=deps/.../libs\nYou can specify the build type of the project by using :\n\n    -DCMAKE_BUILD_TYPE=Release or Debug\nBy default, the project is in release mode.\nYou can build the Doxygen documentation by setting :\n\n    -DFGE_BUILD_DOC=ON or OFF\nBy default, the documentation is built if the build type is **Release**. (You will need [Doxygen](https://doxygen.nl/) in order to build the doc.)\n\nYou can build all examples by setting :\n\n    -DFGE_BUILD_EXAMPLES=ON or OFF\nBy default, the all examples are built inside the **all** target.\n\nThe library type flag (**BUILD_SHARED_LIBS**) must not be manually set and static build is not supported.\n\nYou can enable/disable tests by setting :\n\n    -DFGE_BUILD_TESTS=ON or OFF\nBy default, the tests is always built and in order to run the tests, you should use :\n\n    ctest\n\n\u003ca id=\"cmaketargets\"\u003e\u003c/a\u003e\n### CMake targets\n- **all**\n- - This is the default target, it will build everything configured.\n- **FastEngine**\n- - This will build the client (audio, graphics, window, ...) shared library.\n- **FastEngineServer**\n- - This will build the server (no audio, graphics or window dependencies) shared library.\n- **doc_doxygen**\n- - This will build the Doxygen documentation.\n- **install**\n- - Install the project, you can configure the project with CMAKE_INSTALL_PREFIX in order to change the location, but by default, it will install it inside the **install/** directory in **root**.\n\nYou can also build every example targets.\n\n\u003ca id=\"windows\"\u003e\u003c/a\u003e\n### Windows\nPlease install a [MINGW-W64](https://www.mingw-w64.org/) environment like [MSYS2](https://www.msys2.org/) (recommended) and make sure that either 32bits and/or 64bits GCC is correctly installed with proper CMake package.\n\nThen you should just do the following in a **build/** folder :\n\n    cmake .. -G\"MinGW Makefiles\"\nand then build :\n\n    cmake --build .\nI recommend to add a little bit of power in the build with multicore argument :\n\n    cmake --build . -j8\n\n\u003ca id=\"linux\"\u003e\u003c/a\u003e\n### Linux\nPlease install GCC-11 or higher in order to correctly compile :\n\n    sudo apt update \u0026\u0026 sudo apt install gcc-11 g++-11\nAnd then use CMake :\n\n    cmake .. -G\"Unix Makefiles\" -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11\n    cmake --build . -j8\n\n\u003ca id=\"mac\"\u003e\u003c/a\u003e\n### Mac OS\nFor Mac OS you should just be able to do (after installing a correct AppleClang version) :\n\n    cmake .. -G\"Unix Makefiles\"\n    cmake --build . -j8\n\n\u003ca id=\"installing\"\u003e\u003c/a\u003e\n### Installing\nThe **install** target support CMake config export, and all the dependencies will be exported too in order to avoid\nany overhead when linking to the library.\n\nOnce built, you can use :\n    \n    cmake --install .\n\nBy default, if no CMAKE_INSTALL_PREFIX is specified, it will install the library in **install/** in the project **root**\nwith a folder name like **FastEngine_Windows_64_Debug_0.9.1-441-g4a99f01**.\n\nOnce executed correctly, it will create a directory structure like this example :\n- FastEngine_Windows_64_Debug_0.9.1-441-g4a99f01\n  - bin\n  - include\n  - lib\n  - share\n  - - cmake\n  - - external\n  - - fge_changelog.txt\n  - - IMAGE_AUDIO_LOGO_LICENSE\n  - - LICENSE\n  - - logo.png\n\n\u003ca id=\"examples\"\u003e\u003c/a\u003e\n## Examples\nYou can find examples in the **examples/** directory, you can build them by setting the **FGE_BUILD_EXAMPLES** flag to **ON**.\n\n### Example 1 : tilemap and pathfinding\nThis example is a simple tilemap loaded from [Tiled](https://www.mapeditor.org/) with pathfinding using the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm).\n\n![example1](images/tileMapAndPathfinding.webp)\n\n### Example 2 : lights and obstacles\nThis example is a simple scene with lights and obstacles. This show how to use the light system and the obstacle system.\nThis also use convex decomposition algorithm on the concave obstacles.\n\n![example2](images/lightAndObstacle.webp)\n\n### Example 3 : GUI and window\nThis example is a simple scene with the GUI element system with multiple window.\n\n![example3](images/guiWindow.webp)\n\n### Example 4 : multiplayer example with a \"life\" simulator\nThis example show the multiplayer capacity of the engine with a full scene synchronisation.\n\n![example4](images/lifeSimulator.webp)\n\n### Example 5 : deep text\nThis example show the text rendering capacity of the engine with a simple scene.\n\n![example5](images/deepText.webp)\n\n### Example 6 : multiple ways to render sprites\nThis example show multiple ways to render sprites/shapes with the engine and the performance impact of each.\n\n![example6](images/multipleSprites.webp)\n\n### Example 7 : mipmaps\nThis example show the mipmaps generation.\n\n![example7](images/mipmaps.webp)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathspirit%2Ffastengine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathspirit%2Ffastengine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathspirit%2Ffastengine/lists"}