{"id":19826873,"url":"https://github.com/rudjigames/rapp","last_synced_at":"2025-04-09T18:20:21.933Z","repository":{"id":64260359,"uuid":"109934475","full_name":"RudjiGames/rapp","owner":"RudjiGames","description":"Cross-platform entry point library","archived":false,"fork":false,"pushed_at":"2024-11-18T06:23:09.000Z","size":2615,"stargazers_count":64,"open_issues_count":0,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-09T18:20:04.276Z","etag":null,"topics":["bgfx","console","controller","cross-platform","entry","entrypoint","game-development","gamedev","graphics","imgui","input","job-scheduler","keyboard","mouse","multithreading"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RudjiGames.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-08T06:03:29.000Z","updated_at":"2024-11-21T09:57:03.000Z","dependencies_parsed_at":"2023-01-27T04:01:17.893Z","dependency_job_id":"0ef35abd-b77d-4603-a41f-0935999c5072","html_url":"https://github.com/RudjiGames/rapp","commit_stats":{"total_commits":323,"total_committers":6,"mean_commits":"53.833333333333336","dds":0.09907120743034059,"last_synced_commit":"3cc370a8ffb2a9ec432a84216554c49a21391966"},"previous_names":["rudjigames/rapp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RudjiGames%2Frapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RudjiGames%2Frapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RudjiGames%2Frapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RudjiGames%2Frapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RudjiGames","download_url":"https://codeload.github.com/RudjiGames/rapp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248085324,"owners_count":21045139,"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":["bgfx","console","controller","cross-platform","entry","entrypoint","game-development","gamedev","graphics","imgui","input","job-scheduler","keyboard","mouse","multithreading"],"created_at":"2024-11-12T11:11:52.951Z","updated_at":"2025-04-09T18:20:21.914Z","avatar_url":"https://github.com/RudjiGames.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg height=\"81\" src=\"https://rudji.com/rudji_games_logo_bright.svg\"/\u003e\n\n[![Build status](https://ci.appveyor.com/api/projects/status/5ai0w0mu6ay2wcme?svg=true)](https://ci.appveyor.com/project/milostosic/rapp-6qu5f)\n[![License](https://img.shields.io/badge/license-BSD--2%20clause-blue.svg)](https://github.com/RudjiGames/rapp/blob/master/LICENSE)\n\n**rapp** is a library that provides cross-platform application entry point and additional functionality.\nrapp is **heavily** based on [bgfx](https://github.com/bkaradzic/bgfx) examples entry point code that can be found [here](https://github.com/bkaradzic/bgfx/tree/master/examples/common/entry). Graphics code is still [bgfx](https://github.com/bkaradzic/bgfx) based but..  \n\n...dependecy on [bx](https://github.com/bkaradzic/bx) and [bgfx](https://github.com/bkaradzic/bgfx) has been removed by aggressively copying code and by a special feature of [build](https://github.com/RudjiGames/build) system that allows to have the same library in a 'solution' with different configurations.  \nTo clarify, in the screenshot below first sample (command line) links against **rapp** and [rbase](https://github.com/RudjiGames/rbase) while the second one (graphics) links against **rapp_bgfx**, [rbase](https://github.com/RudjiGames/rbase), [bx](https://github.com/bkaradzic/bx), [bimg](https://github.com/bkaradzic/bimg) and [bgfx](https://github.com/bkaradzic/bgfx) - this is all automated.   \n\n\u003cimg src=\"https://github.com/RudjiGames/rapp/blob/master/img/rapp_configs.png\" width=142 height=153\u003e\n\nThanks to multiple configurations per project feature of [build](https://github.com/RudjiGames/build), script taking care of this is very short and can be seen [here](https://github.com/RudjiGames/rapp/blob/master/genie/rapp.lua), basically it just enables a library wide define.\n\nFeatures\n======\n\n**rapp** currently has the following functionality:\n* Applications written as classes with init/shutdown/suspend/resume functionality\n* Command line (tools, unit tests, etc.) or graphics applications (games, etc.)\n* Custom commands\n* Input controllers (mouse, keyboard, gamepad, etc.) with input binding callbacks and debug visualizations\n* Ability to run code on main/message loop thread\n* Job scheduler with job stealing for fine grained parallelism\n* [ImGui](https://github.com/ocornut/imgui) and [NanoVG](https://github.com/memononen/nanovg) integration\n* Quake like console - [ImGui](https://github.com/ocornut/imgui) based\n* Built-in [**rprof**](https://github.com/RudjiGames/rprof) CPU profiler\n* Multiple applications in one binary\n* Window functions\n\n[**rprof**](https://github.com/RudjiGames/rprof) CPU profiler is an optional dependency and needs to be explicitly requested when generating project files, for example:\n\n      GENie --with-rprof vs2022\n\nHere's a screenshot of a [bgfx](https://github.com/bkaradzic/bgfx) sample showing input debugging, [ImGui](https://github.com/ocornut/imgui) dialog and Quake like console as well as [NanoVG](https://github.com/memononen/nanovg) shape (eyes):  \n\u003cimg src=\"https://github.com/RudjiGames/rapp/blob/master/img/input_debug.png\"\u003e\n\nPlatform support\n======\n\n|                  | Input (KMG) | Threading | Console | Graphics |\n|------------------|-------------|-----------|---------|----------|\n| **Windows**      | ✓✓✓        |  ✓        | ✓      |    ✓     |\n| **Xbox One**     | ✓✓✓        |  ✓        | ✓      |    ✓     |\n| **PlayStation 4**| ✓✓✓        |  ✓        | ✓      |    ✓     |\n| **Linux**        | ✓✓X         |  ✓        | ✓      |    ✓     |\n| **Android**      | XXX         |  ✓        | ?      |    ✓     |\n| **OSX**          | ✓✓X         |  ✓        | ✓      |    ✓     |\n| **Emscripten**   | ✓✓✓         |  X        | ✓      |    ✓     |\n\n✓ - Working  \nX - Not yet implemented  \n? - Not supported  \n\nPlatforms with partial implementations or not tested: **iOS, UWP, FreeBSD**  \nInput (KMG) stands for Keyboard, Mouse and Gamepad  \n\nSource Code\n======\n\nYou can get the latest source code by cloning it from github:\n\n      git clone https://github.com/RudjiGames/rapp.git \n\t  \nBuild and dependencies\n======\n\nThere's quite a few dependencies and they can be fetched manually or using a [batch file](https://github.com/RudjiGames/rapp/blob/master/scripts/fetch_dependencies.bat).\nFor the list of dependencies please refer to the batch file.\n\nOnce dependencies are cloned, [GENie](https://github.com/bkaradzic/genie) project generator tool can be used to generate project files/solution. [This](https://github.com/RudjiGames/rapp/blob/master/scripts/generate_project.bat) batch file is an example of generating a solution and project files for VS2022.\n\nLicense (BSD 2-clause)\n======\n\n\u003ca href=\"http://opensource.org/licenses/BSD-2-Clause\" target=\"_blank\"\u003e\n\u003cimg align=\"right\" src=\"https://opensource.org/wp-content/uploads/2022/10/osi-badge-dark.svg\" width=\"100\" height=\"137\"\u003e\n\u003c/a\u003e\n\n\tCopyright 2023 Milos Tosic. All rights reserved.\n\t\n\thttps://github.com/RudjiGames/rapp\n\t\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions are met:\n\t\n\t   1. Redistributions of source code must retain the above copyright notice,\n\t      this list of conditions and the following disclaimer.\n\t\n\t   2. Redistributions in binary form must reproduce the above copyright\n\t      notice, this list of conditions and the following disclaimer in the\n\t      documentation and/or other materials provided with the distribution.\n\t\n\tTHIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR\n\tIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n\tMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n\tEVENT SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n\tINDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\tLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\tON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frudjigames%2Frapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frudjigames%2Frapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frudjigames%2Frapp/lists"}