{"id":21088680,"url":"https://github.com/crocidb/annileen","last_synced_at":"2025-07-13T17:36:24.728Z","repository":{"id":87327275,"uuid":"128702949","full_name":"CrociDB/annileen","owner":"CrociDB","description":"a toy 3d game engine with voxel support","archived":false,"fork":false,"pushed_at":"2023-10-09T17:45:15.000Z","size":62492,"stargazers_count":26,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-04T01:01:37.248Z","etag":null,"topics":["3d-engine","3d-game-engine","directx12","engine","game-engine","gamedev","hacktoberfest","opengl","voxel-terrain","vulkan"],"latest_commit_sha":null,"homepage":"","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/CrociDB.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-04-09T02:23:43.000Z","updated_at":"2025-03-09T23:30:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f02e69d-b7cd-4d63-8aff-2de33ef8c5aa","html_url":"https://github.com/CrociDB/annileen","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fannileen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fannileen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fannileen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fannileen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CrociDB","download_url":"https://codeload.github.com/CrociDB/annileen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254522395,"owners_count":22085102,"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-engine","3d-game-engine","directx12","engine","game-engine","gamedev","hacktoberfest","opengl","voxel-terrain","vulkan"],"created_at":"2024-11-19T21:19:45.210Z","updated_at":"2025-05-16T11:32:42.084Z","avatar_url":"https://github.com/CrociDB.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Annileen](https://i.imgur.com/HUMakjJ.png)\n\n[![Build Status](https://travis-ci.com/CrociDB/annileen.svg?branch=master)](https://travis-ci.com/CrociDB/annileen)\n\nThis is a toy 3D game engine created for study purposes. It's written in C++ and uses **bgfx** for rendering. Currently runs on **Windows** and **Linux** and supports **OpenGL 2.1**, **DirectX 9**, **DirectX 11**, **DirectX 12** and **Vulkan**.\n\nIt's still on an early stage of development, but already supports:\n - asset management\n - 3d model loading\n - basic blinn-phong shading\n - shadow maps\n - simple scene editor\n - minecraft-style voxels\n\n![Annileen](screenshot/annileen.jpg)\n\n# Dependencies\n\n - premake5\n - python 3.8 / pip3\n\n# Build\n\nFirst of all, update all submodules and download Python dependencies:\n\n```\ngit submodule init \u0026\u0026 git submodule update\npython -m pip install -r tools/requirements.txt\n```\n\n## Windows\n\nGenerate the Visual Studio solution:\n\n```\npremake5 vs2019\n```\n\nOpen the solution located at `.\\build\\vs2019\\annileen-engine.sln` and build.\n\nNow, generate the assets:\n\n```\npython tools/asset_tools.py\n```\n\nNow you can run the projects on Visual Studio.\n\n## Linux\n\nInstall dependecies:\n\n```\nsudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev xorg-dev libglew-dev libx11-dev libxrandr-dev libxcursor-dev libxinerama-dev\n```\n\nBuild:\n\n```\npremake5 gmake\nmake\npython tools/asset_tools.py\n```\n\n## Mac OS\n\nStill in development.\n\n\n# Asset Tools\n\nIn order to build all the assets available at the `./assets` folder, run:\n\n```\npython tools/asset_tools.py\n```\n\nIt will generate a `build_assets` folder in the project root and will also create a `assets.toml` with a description of all the assets and their types.\n\nAll the other the specific tools will accept an asset name, no need to include the full path of the file, it will find the asset within the `asset` folder and build it to its corresponding built folder, but **note**: it will not update the `assets.toml` descriptor file. \n\n### Watchdog\n\nRun `python tools/asset_tools.py -w` to launch a service that will keep watching for asset changes and will recompile it automatically.\n\n## Shader Tool\n\n```\npython tools/shader.py\n```\n```\nusage: shader.py [-h] [-s [SHADER [SHADER ...]]] [-f] [-a] [-p {auto,android,asm.js,ios,linux,orbis,osx,windows}]\n                 [-m {auto,s_3_0,s_4_0,s_4_0_level,s_5_0,metal,pssl,spirv,120}]\n\nAnnileen Shader Tools\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -s [SHADER [SHADER ...]], --shader [SHADER [SHADER ...]]\n                        compiles the shader specified\n  -f, --force           force rebuild\n  -a, --all             compiles all the available shaders\n  -p {auto,android,asm.js,ios,linux,orbis,osx,windows}, --platform {auto,android,asm.js,ios,linux,orbis,osx,windows}\n                        compiles the mesh specified\n  -m {auto,s_3_0,s_4_0,s_4_0_level,s_5_0,metal,pssl,spirv,120}, --model {auto,s_3_0,s_4_0,s_4_0_level,s_5_0,metal,pssl,spirv,120}\n                        shader model\n```\n\nIf no `platform` is specified, it will build for tre host platform. The default build model is OpenGL (GLSL), for other APIs, use:\n\n - DirectX: `s_5_0`\n - Vulkan: `spirv`\n - Metal: `metal`\n\n\n## Mesh Tool\n\n```\npython tools/mesh.py\n```\n```\nusage: mesh.py [-h] [-m [MESH [MESH ...]]] [-a] [-f] [-v VIEW]\n\nAnnileen Mesh Tools\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -m [MESH [MESH ...]], --mesh [MESH [MESH ...]]\n                        compiles the mesh specified\n  -a, --all             compiles all the available meshes\n  -f, --force           force rebuild\n  -v VIEW, --view VIEW  view the specified mesh\n```\n\n## Texture Tool\n\n```\npython tools/texture.py\n```\n```\nusage: texture.py [-h] [-t [TEXTURE ...]] [-a] [-f] [-v VIEW]\n\nAnnileen Texture Tools\n\noptions:\n  -h, --help            show this help message and exit\n  -t [TEXTURE ...], --texture [TEXTURE ...]\n                        compiles the texture specified\n  -a, --all             compiles all the available textures\n  -f, --force           force compiling all textures\n  -v VIEW, --view VIEW  view the specified texture\n```\n\n## Cubemap Tool\n\n```\npython tools/cubemap.py\n```\n```\nusage: cubemap.py [-h] [-c [CUBEMAP [CUBEMAP ...]]] [-a] [-v VIEW]\n\nAnnileen Cubemap Tools\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -c [CUBEMAP [CUBEMAP ...]], --cubemap [CUBEMAP [CUBEMAP ...]]\n                        compiles the cubemap specified\n  -a, --all             compiles all the available cubemaps\n  -v VIEW, --view VIEW  view the specified cubemap\n```\n\n\n## Font Tool\n\n```\npython tools/font.py\n```\n```\nusage: font.py [-h] [-f [FONT [FONT ...]]] [-a]\n\nAnnileen Font Tools\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -f [FONT [FONT ...]], --font [FONT [FONT ...]]\n                        compiles the font specified\n  -a, --all             compiles all the available fonts\n```\n\n# Running\n\nWhen built, the project will generate binaries for the examples. Simply run the example binaries from the root directory.\n\n# Contributors\n\n  - Bruno Croci - [CrociDB](https://twitter.com/CrociDB)\n  - Teofilo Dutra - [teodutra](https://twitter.com/teodutra)\n\n# License\n\nAnnileen is licensed under the [MIT License](/LICENSE.md)\n\n# Third Party\n\nAnnileen uses the following libraries:\n\n  - [bgfx](https://github.com/bkaradzic/bgfx) - [BSD 2-Clause](https://github.com/bkaradzic/bgfx/blob/master/LICENSE)\n  - [toml11](https://github.com/ToruNiina/toml11) - [MIT License](https://github.com/ToruNiina/toml11/blob/master/LICENSE)\n  - [glm](https://github.com/g-truc/glm) - [The Happy Bunny License/MIT](https://github.com/g-truc/glm/blob/master/copying.txt)\n  - [glfm](https://github.com/glfw/glfw) - [zlib License](https://github.com/glfw/glfw/blob/master/LICENSE.md)\n  - [fmt](https://github.com/fmtlib/fmt) - [License](https://github.com/fmtlib/fmt/blob/master/LICENSE.rst)\n  - [PerlinNoise](https://github.com/Reputeless/PerlinNoise) - [MIT License](https://github.com/Reputeless/PerlinNoise/blob/master/LICENSE)\n  - [assimp](https://github.com/assimp/assimp) - [BSD-Custom License](https://github.com/assimp/assimp/blob/master/LICENSE)\n  - [fmt](https://github.com/fmtlib/fmt) - [Custom License](https://github.com/fmtlib/fmt/blob/master/LICENSE.rst)\n  ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrocidb%2Fannileen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrocidb%2Fannileen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrocidb%2Fannileen/lists"}