{"id":26229672,"url":"https://github.com/rythe-interactive/rythe-engine","last_synced_at":"2025-10-06T06:53:25.222Z","repository":{"id":39029677,"uuid":"278184853","full_name":"Rythe-Interactive/Rythe-Engine","owner":"Rythe-Interactive","description":"Rythe is a data-oriented C++20 game engine built to make optimal use of modern hardware.","archived":false,"fork":false,"pushed_at":"2025-05-15T11:28:30.000Z","size":351596,"stargazers_count":535,"open_issues_count":10,"forks_count":29,"subscribers_count":21,"default_branch":"release/latest","last_synced_at":"2025-05-15T11:35:04.821Z","etag":null,"topics":["3d-audio","3d-engine","3d-graphics","async","audio","cpp20","data-oriented","ecs","game","game-development","game-engine","legion","legion-engine","opengl","physics","physics-engine","rendering","rendering-engine","scheduling"],"latest_commit_sha":null,"homepage":"https://rythe-interactive.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rythe-Interactive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-07-08T20:10:35.000Z","updated_at":"2025-05-14T01:16:53.000Z","dependencies_parsed_at":"2025-05-02T23:29:14.273Z","dependency_job_id":null,"html_url":"https://github.com/Rythe-Interactive/Rythe-Engine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rythe-Interactive%2FRythe-Engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rythe-Interactive%2FRythe-Engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rythe-Interactive%2FRythe-Engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rythe-Interactive%2FRythe-Engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rythe-Interactive","download_url":"https://codeload.github.com/Rythe-Interactive/Rythe-Engine/tar.gz/refs/heads/release/latest","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254436944,"owners_count":22070946,"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":["3d-audio","3d-engine","3d-graphics","async","audio","cpp20","data-oriented","ecs","game","game-development","game-engine","legion","legion-engine","opengl","physics","physics-engine","rendering","rendering-engine","scheduling"],"created_at":"2025-03-12T22:17:23.385Z","updated_at":"2025-10-06T06:53:15.202Z","avatar_url":"https://github.com/Rythe-Interactive.png","language":"C++","readme":"[![rythe logo banner](https://assets.zyrosite.com/dWxb3NO0jWugObXN/logo_for_dark_bg-A3QwL7kkxvfw1ywO.png)](http://rythe-interactive.com)\n[![build](https://github.com/Legion-Engine/Legion-Engine/workflows/build-action/badge.svg)](https://github.com/Legion-Engine/Legion-Engine/actions?query=workflow%3Abuild-action)\n[![analyze](https://github.com/Legion-Engine/Legion-Engine/workflows/analyze-action/badge.svg)](https://github.com/Legion-Engine/Legion-Engine/actions?query=workflow%3Aanalyze-action)\n[![docs](https://github.com/Legion-Engine/Legion-Engine/workflows/docs-action/badge.svg)](https://docs.legion-engine.com)\n[![License-MIT](https://img.shields.io/github/license/Legion-Engine/Legion-Engine)](https://github.com/Legion-Engine/Legion-Engine/blob/main/LICENSE)\n[![Discord](https://img.shields.io/discord/682321168610623707.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2)](https://discord.gg/unVNRbd)\n# Rythe-Engine\nRythe-Engine is a data oriented C++17 OpenGL game engine built to make optimal use of modern hardware.\u003cbr\u003e\u003cbr\u003e\nThe Rythe-Core is built on an async compute minded design to take care of the logic and an ECS to take care of the data. This allows the engine and editor to utilize all the power they can find and to be extremely modular.\n\n## Features\n### Rendering\n- Post-processing stack\n- Particle system\n- PBR\n- Imgui\n- Automatic exposure\n- Modular rendering pipeline\n- Custom shader support \u0026 shader standard library\n- shader precompiler [lgnspre](https://github.com/Rythe-Interactive/LegionShaderPreprocess)\n- GLTF \u0026 OBJ support\n\n### Physics\n- Convex quick hull generation\n- Diviner physics engine\n#### Preview Feature\n- Dynamic Destruction\n![Demo](https://cdn.discordapp.com/attachments/682321169541890070/802090059788582912/fracturebasics.gif)\n\n### ECS\n- Data oriented\n- Thread-safe\n- \"Archetype\" support\n\n### Eventsystem\n- Thread-safe eventbus\n- Unique \u0026 Persistent events\n- easy extensebility\n\n### Audio\n- Spatial audio\n- Non-spatial audio\n- Dopplereffect\n- MP3 \u0026 WAV support\n- Stereo-\u003eMono conversion\n\n### Compute \n- OpenCL frontend with support for buffers \u0026 textures\n- High level abstractions\n\n### Misc\n- Virtual filesystem\n- Serialization \u0026 Scenes(Alpha)\n- Job scheduling\n- Pipeline scheduling for multiple main threads\n- Modular Processchains\n- Custom logging support\n- Custom input system\n- Extended standard library\n- Modular Architecture\n- Math extensions to GLM\n\n## Getting Started\n### Prerequisites\nThe engine is by default build using Visual Studio 19 using the Clang++ compiler and C++17.\nFor linux we don't provide any default IDE support. However, you can still compile the engine using Clang++.\n### Install\nYou can either build the engine yourself using Premake5 or the already provided Visual Studio 19 solution. As of now Rythe does not support compilation to DLL.\nCopy the include folder to your project and link the libraries you compiled.\n### Setup\nRythe already defines the C++ entry point in it's own source code. So in order to start making a program define ``LEGION_ENTRY`` and include any of modules main include files.\neg:\n```cpp\n#define LEGION_ENTRY\n#include \u003ccore/core.hpp\u003e\n```\nSince the entry point is already defined you need to define a different function to start working with Rythe. Rythe will already start itself, but it won't have any modules attached. In order to attach modules you need to define the ``reportModules`` function like so:\n```cpp\n#include \"mymodule.hpp\"\nusing namespace legion;\n\nvoid LEGION_CCONV reportModules(Engine* engine)\n{\n    engine-\u003ereportModule\u003cMyModule\u003e();\n    engine-\u003ereportModule\u003capp::ApplicationModule\u003e();\n}\n```\nOf course in order to link your own modules you need to make one:\n```cpp\n#include \u003ccore/core.hpp\u003e\n#include \"mysystem.hpp\"\n\nclass TestModule : public legion::Module\n{\npublic:\n    virtual void setup() override\n    {\n        reportComponentType\u003cmy_component\u003e(); // Report a component type\n        reportSystem\u003cMySystem\u003e(); // Report a system\n    }\n};\n```\nRythe engine uses an ECS for all of it's core functionality. So for your own project you need to define your own systems and components:\n```cpp\n#include \u003ccore/core.hpp\u003e\n\nstruct my_component { int myVal; };\n\nclass MySystem final : public legion::System\u003cMySystem\u003e\n{\n    virtual void setup()\n    {\n        createProcess\u003c\u0026MySystem::update\u003e(\"Update\");\n    }\n    \n    void update(legion::time::span deltaTime)\n    {\n        // Do stuff every frame on the update thread\n        static auto myQuery = createQuery\u003cmy_component, position\u003e();\n        mQuery.queryEntities();\n        for(auto entity : myQuery)\n        {\n            // Runs for every entity that has both my_component and a position component.\n        }\n    }\n};\n```\nFor more information about the engine usage see the [docs](https://docs.legion-engine.com).\n## Dependencies\n(All libraries can already be found in the [deps](https://github.com/Rythe-Interactive/Rythe-Engine/tree/main/deps) folder)\n* [OpenAL Soft](https://github.com/kcat/openal-soft)\n* [GLM](https://glm.g-truc.net/)\n* [OpenGL](https://www.khronos.org/opengl/)\n* [GLFW](https://www.glfw.org)\n* [OpenCL](https://www.khronos.org/opencl/)\n* [TinyOBJ](https://github.com/tinyobjloader/tinyobjloader)\n* [STB image](https://github.com/nothings/stb)\n* [Cereal](http://uscilab.github.io/cereal/)\n* [Spdlog](https://github.com/gabime/spdlog)\n* [Minimp3](https://github.com/lieff/minimp3)\n* [Legion shader preprocessor (lgnspre)](https://github.com/Rythe-Interactive/LegionShaderPreprocess)\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## Authors\n\n* **Glyn Leine** - *Core architecture, ECS, scheduling, import pipeline, and renderer* - [[Website](https://glynleine.com)] [[Github](https://github.com/GlynLeine)] [[LinkedIn](https://www.linkedin.com/in/glyn-leine-7140a8167/)]\n* **Raphael Baier** - *Filesystem, build pipeline, GPGPU compute, input system, meta nonsense* - [[Website](https://rbaier.me)] [[Github](https://github.com/Algo-ryth-mix)] [[LinkedIn](https://www.linkedin.com/in/raphael-baier-26800a188/)]\n* **Raphael Priatama** - *Physics* - [[Website](https://developer-the-great.github.io)] [[Github](https://github.com/Developer-The-Great)] [[LinkedIn](https://www.linkedin.com/in/raphael-priatama-78a0a7189/?originalSubdomain=nl)]\n* **Jelle Vrieze** - *Audio/3D audio* - [[Website](http://jellevrieze.nl)] [[Github](https://github.com/Jelled1st)] [[LinkedIn](https://www.linkedin.com/in/jelle-vrieze-2467661a7/)]\n* **Rowan Ramsey** - *Serialization* - [[Website](https://blazinram.wixsite.com/rowanramsey)] [[Github](https://github.com/Ragingram2)] [[LinkedIn](https://www.linkedin.com/in/rowan-r-42a760125/)]\n\nSee also the list of [contributors](AUTHORS.md) who participated in this project.\n\n## License\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details\n\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frythe-interactive%2Frythe-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frythe-interactive%2Frythe-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frythe-interactive%2Frythe-engine/lists"}