{"id":18774446,"url":"https://github.com/arnavmehta3000/nuiengine","last_synced_at":"2025-12-14T09:30:33.307Z","repository":{"id":228079599,"uuid":"769731676","full_name":"ArnavMehta3000/NuiEngine","owner":"ArnavMehta3000","description":"A fully documented game development framework","archived":false,"fork":false,"pushed_at":"2024-09-05T00:39:55.000Z","size":1465,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-21T02:46:25.293Z","etag":null,"topics":["cpp","gamedev-framework","gameengine"],"latest_commit_sha":null,"homepage":"https://arnavmehta3000.github.io/posts/mage1/","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/ArnavMehta3000.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}},"created_at":"2024-03-09T22:27:40.000Z","updated_at":"2025-04-06T01:43:41.000Z","dependencies_parsed_at":"2024-04-14T16:50:43.737Z","dependency_job_id":null,"html_url":"https://github.com/ArnavMehta3000/NuiEngine","commit_stats":null,"previous_names":["arnavmehta3000/nuiengine"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ArnavMehta3000/NuiEngine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArnavMehta3000%2FNuiEngine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArnavMehta3000%2FNuiEngine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArnavMehta3000%2FNuiEngine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArnavMehta3000%2FNuiEngine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArnavMehta3000","download_url":"https://codeload.github.com/ArnavMehta3000/NuiEngine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArnavMehta3000%2FNuiEngine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27724684,"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","status":"online","status_checked_at":"2025-12-14T02:00:11.348Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cpp","gamedev-framework","gameengine"],"created_at":"2024-11-07T19:38:18.788Z","updated_at":"2025-12-14T09:30:33.011Z","avatar_url":"https://github.com/ArnavMehta3000.png","language":"C++","readme":"# About The Project\n\nNui Engine is a simple editor-less, code-first focused game engine/framework written in C++ 23. The entire journey of making it is being documented on my website [here](https://arnavmehta3000.github.io/posts/mage0/). Active development happpens on the `dev` branch and changes are merged into `main` when stable and tested. \n\n# Documentation\n\nNui Engine is documented using Doxygen using a [Doxyfile](./Docs/Doxygen/Doxyfile). You can read the auto generated project documentation [here](https://arnavmehta3000.github.io/NuiEngine/).\n\n[![Generate CMakeLists.txt with xmake](https://github.com/ArnavMehta3000/NuiEngine/actions/workflows/xmake-to-cmake.yml/badge.svg)](https://github.com/ArnavMehta3000/NuiEngine/actions/workflows/xmake-to-cmake.yml)\u003cbr\u003e\n[![](https://tokei.rs/b1/github/ArnavMehta3000/NuiEngine?category=lines)](https://github.com/ArnavMehta3000/NuiEngine)\n[![](https://tokei.rs/b1/github/ArnavMehta3000/NuiEngine?category=code)](https://github.com/ArnavMehta3000/NuiEngine)\n\n# Requirements\n\nNui is written using C++23 and uses [Xmake](https://xmake.io/#/) as its build system (Lua based). You may also use the provided [CMakeLists.txt](./CMakeLists.txt) which is auto generated using a [Github Action](.github/workflows/xmake-to-cmake.yml) which is only up to date for the main branch. The project is currently configured to only run on **Windows x64**.\n\n# Building Testbench\n\nThe engine comes with a sandbox project called `Testbench`. This is where I test the engine features. You may delete this project folder or keep it for reference purposes.\n\n\u003e If you plan to keep the `Testbench` project, make sure to delete [`Testbench/xmake.lua`](./Testbench/xmake.lua) file or rename the file to something else so that it does not interfere with your custom project.\n\n## Building Testbench using Xmake\n\nAssuming you have Xmake installed, navigate to the root project directory and open a terminal.\n\nRun the `xmake` command to build the project\n\n```bash\nxmake\n```\n\n### Choosing a Build Configuration\n\nOptionally you may select a configuration to build for before running the above build command. \n\n```bash\nxmake f -m \u003cConfig Mode\u003e\n```\n\nWhere `\u003cConfig Mode\u003e` may be one of the following:\n- `debug`\n  - To build the debug config (default)\n- `release`\n  - To build the release config\n- `releasedbg`\n  - To build the release config with debug info\n\nAfter setting the build config, [build](#building-testbench-using-xmake) the project again. A build should be created in the `./build/` directory\n\n### Generating Compile Commands\n\nYou may also wish to generate `compile_commands.json`. This can be done in two ways\n\n#### Using The Command Line\n\nSee [xmake documentation](https://xmake.io/#/plugin/builtin_plugins?id=generate-compiler_commands) for more info.\n\n```bash\nxmake project -k compile_commands\n```\n\n#### Generate On Build\n\nIf you want `compile_commands.json` to be built every time you build using xmake. Open the [xmake.lua](/xmake.lua) from the root directory and uncomment the following line.\n\n```lua\n-- Generate clang compile commands\nadd_rules(\"plugin.compile_commands.autoupdate\")\n```\n\n### Generate CMakeLists.txt\n\nTo generate CMakeLists.txt file you can run the following command\n\n```bash\nxmake project -k cmakelists\n```\n\n### Generate IDE project files\n\nYou can make use of xmake to generate IDE files such as visual studio solution files.\n\n```bash\nxmake project -k vsxmake2022\n```\n\nAdditional details on how to generate IDE files can be checked out on [Xmake's docs](https://xmake.io/#/plugin/builtin_plugins?id=generate-visualstudio-project)\n\nYou can also change the solution file name by changing the `solution_name` variable at the top of the [root xmake.lua](./xmake.lua) file\n\n```lua\nlocal solution_name = \"Nui\"  -- Change this string to your liking\n```\n\n\n# Using The Engine / Creating a Project\n\nClone/Fork the repository\n```bash\ngit clone https://github.com/ArnavMehta3000/NuiEngine.git\n```\n\n\u003e Delete the included `Testbench` folder (if you choose to keep it: [**SEE THIS**](#building-testbench`))\n\n## Create a New Project\n\nTo make a custom Nui Engine game project, we will make use of a [custom xmake action](./Scripts/xmake.lua).\n\n```bash\nxmake nui-create -p YOUR_PROJECT_NAME\n```\n\nTo get additional information on how to use this command you may use the help flag\n\n```bash\nxmake nui-create -h\n```\n\nThis will print out the help message. Info on how to use this command will be at the bottom of the message. _The first half of the message contains common command flags which can be ignored in this case_\n\nAfter creating a new project, you should have a folder in the root directory with you project name and some default template files. You may try to [build](#building-testbench-using-xmake) your project now\n\n## Cleaning The Project\n\nTo clean the project, use the `xmake clean` command\n\n```bash\nxmake clean -a\n```\n\n## Allow Generation of CMakeLists.txt\n\nCurrently CMakeLists.txt (for Testbench) is [automatically generated](#requirements) whenever the dev branch is merged onto the main branch. But it only happens when a file is changed in the `./Engine/` or `./Testbench/` directory. If you have forked the project and want the github action to run for your project as well (which will not be in the Testbench directory). You will have to make a small modification to the [xmake-to-cmake.yml](./.github/workflows/xmake-to-cmake.yml) workflow file.\n\nIn the file make the following change\n\n```yml\nname: Generate CMakeLists.txt with xmake\n\non:\n    push:\n        branches:\n            - main\n        paths:\n            - \"Engine/**\"\n            - \"Testbench/**\" # Change 'Testbench' this to your project name\n```\n\n# Project Roadmap\n\nThe project roadmap will keep on expanding and changing as I keep working on the project. But it gives an overview as to what I may be working on at the moment\n\n- [ ] Generate project files\n  - [x] Create premake lua build scripts\n  - [x] Create project directory and set up links\n  - [ ] Create a project entry point (cpp) file + template\n- [ ] Engine\n  - [x] Logging\n  - [x] Assertion\n  - [x] Filesystem\n  - [x] Application\n    - [x] Windowing\n    - [x] Input\n    - [x] Framework\n  - [x] ECS\n  - [ ] Asset pipeline\n  - [x] Upgrade build system\n  - [x] Transform system\n  - [x] Render system\n- [ ] Graphics\n  - [x] Initialize DX11\n  - [x] Support window resizing\n  - [ ] Renderer design\n- [ ] Audio\n  - [ ] --- TBD ---\n- [ ] Test\n  - [x] Window tests\n\n# Broken Tests\n\nDue to the build pipeline being changed from Premake5 to XMake, the Tests are not compiling and therefore not included when compiling the project. Although the source code for it still exists in the [Test directory](./Engine/Test/).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnavmehta3000%2Fnuiengine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farnavmehta3000%2Fnuiengine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnavmehta3000%2Fnuiengine/lists"}