{"id":25112107,"url":"https://github.com/r-lyeh/v2","last_synced_at":"2025-04-22T12:28:45.062Z","repository":{"id":247273220,"uuid":"825424135","full_name":"r-lyeh/v2","owner":"r-lyeh","description":"💎 3D game framework in C, v2.","archived":false,"fork":false,"pushed_at":"2025-02-26T15:10:00.000Z","size":19799,"stargazers_count":48,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T15:11:15.803Z","etag":null,"topics":["2d","3d","editor","engine","framework","game","game-engine","gamedev","imgui","pipeline","public-domain","sdl3","unlicensed"],"latest_commit_sha":null,"homepage":"https://bit.ly/v2-2025","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/r-lyeh.png","metadata":{"files":{"readme":".github/README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-07-07T18:21:50.000Z","updated_at":"2025-03-24T05:17:55.000Z","dependencies_parsed_at":"2025-02-21T10:32:54.949Z","dependency_job_id":null,"html_url":"https://github.com/r-lyeh/v2","commit_stats":null,"previous_names":["r-lyeh/fwk2","f-w-k/2","fwk3d/fwk","fwk3d/dev","fwk3d/dev2","fwk3d/v2","r-lyeh/v2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh%2Fv2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh%2Fv2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh%2Fv2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh%2Fv2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r-lyeh","download_url":"https://codeload.github.com/r-lyeh/v2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250240227,"owners_count":21397832,"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":["2d","3d","editor","engine","framework","game","game-engine","gamedev","imgui","pipeline","public-domain","sdl3","unlicensed"],"created_at":"2025-02-08T01:35:39.825Z","updated_at":"2025-04-22T12:28:45.031Z","avatar_url":"https://github.com/r-lyeh.png","language":"C","readme":"\u003ch1 align=\"center\"\u003e\u003ca href=\"#\"\u003eV·2\u003c/a\u003e\u003c/h1\u003e\r\n\u003cp align=\"center\"\u003e\r\n3D game engine/framework in C.\u003cbr/\u003e\r\n\u003cbr/\u003e\r\n\u003cimg src=\"https://i.imgur.com/AIEIWDk.png\"              /\u003e\u003c!--cubemap--\u003e\u003cbr/\u003e\r\n\u003cimg src=\"https://i.imgur.com/ipAYky8.png\" width=\"204px\"/\u003e\u003c!--sprite--\u003e\r\n\u003cimg src=\"https://i.imgur.com/NlSb4ip.png\" width=\"204px\"/\u003e\u003c!--sprite3d--\u003e\r\n\u003cimg src=\"https://i.imgur.com/rmdkSiB.png\" width=\"204px\"/\u003e\u003c!--tiled--\u003e\r\n\u003cimg src=\"https://i.imgur.com/2BfIAFD.png\" width=\"204px\"/\u003e\u003c!--model--\u003e\r\n\u003cimg src=\"https://i.imgur.com/Sskr5pS.png\" width=\"204px\"/\u003e\u003c!--editor--\u003e\r\n\u003cimg src=\"https://i.imgur.com/GsgOZhu.png\" width=\"204px\"/\u003e\u003c!--fx--\u003e\r\n\u003cimg src=\"https://i.imgur.com/24oKvLj.png\" width=\"204px\"/\u003e\u003c!--shadertoy--\u003e\r\n\u003cimg src=\"https://i.imgur.com/F9ix0Zf.png\" width=\"204px\"/\u003e\u003c!--shadows--\u003e\r\n\u003c/p\u003e\r\n\r\n## About\r\n- 3D game engine v2, written in C.\r\n- v2 is a major overhaul from [previous v1 engine](https://github.com/fwk3d/v1).\r\n- v2 is faster, smaller and stronger than v1.\r\n- v2 is a work-in-progress, though. [Changelog](CHANGELOG.md).\r\n\r\n## Features and wishlist\r\n- [x] ~~Rich build system, Royaltie fee, Licensing clauses, Full featured, Fast, Modern C++~~.\r\n- [x] Batch makefile, Free, Unlicensed, Small, Naive, Simple C.\r\n- [ ] TBD.\r\n\r\n## Quickstart\r\n- Double-click `MAKE.bat`. Launch `hello.exe` when done.\r\n- Alternatively,\r\n  - `make [asan] [debug|devel|release|retail] [embed] file1.c file2.cc ...` for custom builds.\r\n- Other commands,\r\n  - `make tidy` to clean environment.\r\n  - `make sync` to sync repo to latest.\r\n  - `make plug` to un/install extensions.\r\n- Tested with VS2019 and VS2022 installations.\r\n\r\n## Extensions💙\r\n- Currently, [all these extensions are hosted on github](https://github.com/search?q=topic%3Aext-v2\u0026type=repositories\u0026s=updated\u0026o=desc).\r\n- It is planned that the hello demo will be used to un/install extensions in the future.\r\n- For now, you can un/install extensions via `make plug` script:\r\n  - `make plug dir`\r\n  - `make plug [add|del|syn] *`\r\n  - `make plug [add|del|syn] user/repo`\r\n  - `make plug [add|del|syn] @filelist.txt`\r\n\r\n## Credits💜\r\n**Artwork and demos**\r\n[Butch](https://opengameart.org/users/buch \"for golden ui (CC-BY-SA 3.0)\"),\r\n[David Lam](https://en.wikipedia.org/wiki/Tokamak_(software) \"for tokamak physics engine (ZLIB)\"),\r\n[Dean Evans, Raijin](https://youtu.be/RRvYkrrpMKo?t=147 \"for their Map song (c)\"),\r\n[FMS_Cat](https://gist.github.com/FMS-Cat/a1ccea3ce866c34706084e3526204f4f \"for nicest VHS/VCR shader around (MIT)\"),\r\n[Goblin165cm](https://sketchfab.com/3d-models/halloween-little-witch-ccc023590bfb4789af9322864e42d1ab \"for witch 3D model (CC BY 4.0)\"),\r\n[Nuulbee](https://sketchfab.com/3d-models/kgirls01-d2f946f58a8040ae993cda70c97b302c \"for kgirls01 3D model (CC BY-NC-ND 4.0)\"),\r\n[Pixel Frog](https://pixelfrog-assets.itch.io/ \"for their lovely asesprites (CC0)\"),\r\n[Quaternius](https://www.patreon.com/quaternius \"for their lovely 3D robots (CC0)\"),\r\n[Rotting Pixels](https://opengameart.org/content/2d-castle-platformer-tileset-16x16 \"for castle-tileset (CC0)\"),\r\n[Tom Lewandowski](https://QuestStudios.com \"for their MIDI recordings (c)\"),\r\n[Rye Terrell](https://github.com/wwwtyro/glsl-atmosphere \"for nicest rayleigh/mie scattering shader around (CC0)\"),\r\n[Rxi](https://github.com/rxi/autobatch \"for their lovely sprites \u0026 cats demo (MIT)\"),\r\n**Tools**\r\n[Aaron Barany](https://github.com/akb825/Cuttlefish \"for cuttlefish (APACHE2)\"),\r\n[Andreas Mantler](https://github.com/ands/sproutline/ \"for sproutline (PD)\"),\r\n[Arseny Kapoulkine](https://github.com/zeux/pugixml/ \"for pugixml (MIT)\"),\r\n[Assimp authors](https://github.com/assimp/assimp \"for assimp (BSD3)\"),\r\n[Bernhard Schelling](https://github.com/schellingb/TinySoundFont \"for tml.h (Zlib) and tsf.h (MIT)\"),\r\n[FFMPEG authors](https://www.ffmpeg.org/ \"for ffmpeg (LGPL21)\"),\r\n[Imagination](https://developer.imaginationtech.com/pvrtextool/ \"for pvrtextoolcli (ITL)\"),\r\n[Krzysztof Gabis](https://github.com/kgabis/ape \"for split.py/join.py (MIT)\"),\r\n[Lee Salzman](https://github.com/lsalzman/iqm/tree/5882b8c32fa622eba3861a621bb715d693573420/demo \"for iqm.cpp (PD)\"),\r\n[Leon Bottou](https://github.com/facebookresearch/CParser \"for lcpp (MIT)\"),\r\n[Martín Lucas Golini](https://github.com/SpartanJ/eepp/commit/8552941da19380d7a629c4da80a976aec5d39e5c \"for emscripten-fs.html (CC0)\"),\r\n[Mattias Gustavsson](https://github.com/mattiasgustavsson/libs \"for mid.h (PD)\"),\r\n[Morgan McGuire](https://casual-effects.com/markdeep/ \"for markdeep (BSD2)\"),\r\n[Olivier Lapicque, Konstanty Bialkowski](https://github.com/Konstanty/libmodplug \"for libmodplug (PD)\"),\r\n[Polyglot Team](https://docs.google.com/spreadsheets/d/17f0dQawb-s_Fd7DHgmVvJoEGDMH_yoSd8EYigrb0zmM/edit \"for polyglot gamedev (CC0)\"),\r\n[Randy Gaul](https://github.com/RandyGaul/cute_headers \"for cute_asesprite (PD)\"),\r\n[Rxi, Adam Harrison](https://github.com/rxi/lite \"for the exquisite lite editor (MIT)\"),\r\n[Sean Barrett et al.](https://github.com/nothings/stb \"for stbiresize, stbrectpack (PD)\"),\r\n[Sepehr Taghdisian](https://github.com/septag/atlasc/ \"for glslcc+atlasc (BSD2)\"),\r\n[Tildearrow](https://github.com/tildearrow/furnace/ \"for Furnace (GPL2)\"),\r\n[Tomas Pettersson](http://www.drpetter.se/ \"for sfxr (PD)\"),\r\n[Tor Andersson](https://github.com/ccxvii/asstools \"for assiqe.c (BSD)\"),\r\n[Wael El Oraiby](https://github.com/eloraiby/delaunay \"for delaunay.c (AGPL3)\"),\r\n**Runtime**\r\n[Andreas Mantler](https://github.com/ands \"for lightmapper and math library (PD)\"),\r\n[Barerose](https://github.com/barerose \"for swrap (CC0) and math library (CC0)\"),\r\n[Camilla Löwy](https://github.com/elmindreda \"for glfw3 and gleq (Zlib)\"),\r\n[Dave Rand](https://tools.ietf.org/html/rfc1978 \"for ppp (PD)\"),\r\n[David Herberth](https://github.com/dav1dde/ \"for glad generated code (PD)\"),\r\n[David Reid](https://github.com/mackron \"for miniaudio (PD)\"),\r\n[Dominic Szablewski](https://github.com/phoboslab/pl_mpeg \"for pl_mpeg (MIT)\"),\r\n[Dominik Madarász](https://github.com/zaklaus \"for json5 parser (PD)\"),\r\n[Eduard Suica](https://github.com/eduardsui/tlse \"for tlse (PD)\"),\r\n[Evan Wallace](https://github.com/evanw \"for their math library (CC0)\"), \r\n[Gargaj+cce/Peisik](https://github.com/gargaj/foxotron \"for Foxotron/PBR shaders (UNLICENSE)\"),\r\n[Guilherme Lampert](https://github.com/glampert \"for their math library (PD)\"), \r\n[Guillaume Vareille](http://tinyfiledialogs.sourceforge.net \"for tinyfiledialogs (ZLIB)\"),\r\n[Haruhiko Okumura](https://oku.edu.mie-u.ac.jp/~okumura/compression/ \"for lzss (PD)\"),\r\n[Igor Pavlov](https://www.7-zip.org/ \"for LZMA (PD)\"),\r\n[Ilya Muravyov](https://github.com/encode84 \"for bcm, balz, crush, ulz, lz4x (PD)\"),\r\n[James R. McKaskill](https://github.com/jmckaskill/luaffi \"for luaffi (MIT)\"),\r\n[Jon Olick](https://www.jonolick.com/ \"for jo_mp1 and jo_mpeg (PD)\"),\r\n[Joonas Pihlajamaa](https://github.com/jokkebk/JUnzip \"for JUnzip library (PD)\"),\r\n[Juliette Focault](https://github.com/juliettef/IconFontCppHeaders/blob/main/IconsMaterialDesign.h \"for the generated MD header (ZLIB)\"),\r\n[Kristoffer Grönlund](https://github.com/krig \"for their math library (CC0)\"), \r\n[Lee Salzman](https://github.com/lsalzman/iqm/tree/5882b8c32fa622eba3861a621bb715d693573420/demo \"for IQM spec \u0026 player (PD)\"),\r\n[Lee Salzman, V.Hrytsenko, D.Madarász](https://github.com/zpl-c/enet/ \"for enet (MIT)\"),\r\n[Libtomcrypt](https://github.com/libtom/libtomcrypt \"for libtomcrypt (Unlicense)\"),\r\n[Lua authors](https://www.lua.org/ \"for Lua language (MIT)\"),\r\n[Mattias Gustavsson](https://github.com/mattiasgustavsson/libs \"for thread.h and https.h (PD)\"),\r\n[Mattias Jansson](https://github.com/mjansson/rpmalloc \"for rpmalloc (PD)\"),\r\n[Micha Mettke](https://github.com/vurtun \"for nuklear and their math library (PD)\"),\r\n[Michael Galetzka](https://github.com/Cultrarius/Swarmz \"for swarmz (UNLICENSE)\"),\r\n[Morten Vassvik](https://github.com/vassvik/mv_easy_font \"for mv_easy_font (Unlicense)\"),\r\n[Mārtiņš Možeiko](https://gist.github.com/mmozeiko/68f0a8459ef2f98bcd879158011cc275 \"for A* pathfinding (PD)\"),\r\n[Omar Cornut, vaiorabbit](https://github.com/ocornut/imgui/pull/3627 \"for tables of unicode ranges (MIT-0)\"),\r\n[Peter Schulman, Chris Willcocks, Dmitry Hrabrov](https://github.com/vurtun/nuklear \"for nuklear patches (PD)\"),\r\n[Rabia Alhaffar](https://github.com/Rabios/ice_libs \"for ice_batt.h (PD)\"),\r\n[Randy Gaul](https://web.archive.org/*/http://www.randygaul.net/wp-content/uploads/2021/04/handle_table.cpp \"for HandleTable (PD)\"),\r\n[Rich Geldreich](https://github.com/richgel999/miniz \"for miniz (PD)\"),\r\n[Ross Williams](http://ross.net/compression/lzrw3a.html \"for lzrw3a (PD)\"),\r\n[Samuli Raivio](https://github.com/bqqbarbhg/bq_websocket \"for bq_websocket (PD)\"),\r\n[Scott Lembcke](https://github.com/slembcke/debugger.lua \"for lua debugger (MIT)\"),\r\n[Sean Barrett](https://github.com/nothings \"for stb_image, stb_image_write, stb_sprintf, stb_truetype and stb_vorbis (PD)\"),\r\n[Sebastian Steinhauer](https://github.com/kieselsteini \"for sts_mixer (PD)\"),\r\n[Stan Melax, Cloud Wu](https://web.archive.org/web/20031204035320/http://www.melax.com/polychop/gdmag.pdf \"for polychop C algorithm (PD)\"),\r\n[Stefan Gustavson](https://github.com/stegu/perlin-noise \"for simplex noise (PD)\"),\r\n[Sterling Orsten](https://github.com/sgorsten \"for their math library (UNLICENSE)\"),\r\n[Tor Andersson](https://github.com/ccxvii/minilibs \"for xml.c (PD)\"),\r\n[Werner Stoop](engine/split/3rd_eval.h \"for their expression evaluator (PD)\"),\r\n[Wolfgang Draxinger](https://github.com/datenwolf \"for their math library (WTFPL2)\"), \r\n\r\n## Unlicense\r\nThis software is released into the [public domain](https://unlicense.org/). Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0) for those countries where public domain is a concern (sigh). Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.\r\n\r\n## Links\r\nStill looking for alternatives? Get some: \r\n[amulet](https://github.com/ianmaclarty/amulet), \r\n[aroma](https://github.com/leafo/aroma/), \r\n[astera](https://github.com/tek256/astera), \r\n[blendelf](https://github.com/jesterKing/BlendELF), \r\n[bullordengine](https://github.com/MarilynDafa/Bulllord-Engine), \r\n[candle](https://github.com/EvilPudding/candle), \r\n[cave](https://github.com/kieselsteini/cave), \r\n[chickpea](https://github.com/ivansafrin/chickpea), \r\n[corange](https://github.com/orangeduck/Corange), \r\n[cute](https://github.com/RandyGaul/cute_framework), \r\n[dos-like](https://github.com/mattiasgustavsson/dos-like), \r\n[ejoy2d](https://github.com/ejoy/ejoy2d), \r\n[exengine](https://github.com/exezin/exengine), \r\n[game-framework](https://github.com/Planimeter/game-framework), \r\n[gunslinger](https://github.com/MrFrenik/gunslinger), \r\n[hate](https://github.com/excessive/hate), \r\n[horde3d](https://github.com/horde3d/Horde3D), \r\n[island](https://github.com/island-org/island), \r\n[juno](https://github.com/rxi/juno), \r\n[l](https://github.com/Lyatus/L), \r\n[limbus](https://github.com/redien/limbus), \r\n[love](https://github.com/love2d/love/), \r\n[lovr](https://github.com/bjornbytes/lovr), \r\n[mini3d](https://github.com/mini3d/mini3d), \r\n[mintaro](https://github.com/mackron/mintaro), \r\n[mio](https://github.com/ccxvii/mio), \r\n[olive.c](https://github.com/tsoding/olive.c), \r\n[opensource](https://github.com/w23/OpenSource), \r\n[ouzel](https://github.com/elnormous/ouzel/), \r\n[pez](https://github.com/prideout/pez), \r\n[pixie](https://github.com/mattiasgustavsson/pixie), \r\n[punity](https://github.com/martincohen/Punity), \r\n[r96](https://github.com/badlogic/r96), \r\n[ricotech](https://github.com/dbechrd/RicoTech), \r\n[rizz](https://github.com/septag/rizz), \r\n[tigr](https://github.com/erkkah/tigr), \r\n[yourgamelib](https://github.com/duddel/yourgamelib)\r\n\r\n\u003ca href=\"https://github.com/fwk3d/v2/issues\"\u003e\u003cimg alt=\"Issues\" src=\"https://img.shields.io/github/issues-raw/fwk3d/v2.svg?label=Issues\u0026logo=github\u0026logoColor=white\"/\u003e\u003c/a\u003e \u003ca href=\"https://github.com/fwk3d/v2/actions/workflows/build.yml\"\u003e\u003cimg alt=\"Build status\" src=\"https://github.com/fwk3d/v2/actions/workflows/build.yml/badge.svg\"/\u003e\u003c/a\u003e \u003ca href=\"https://discord.gg/2fZVEym\"\u003e\u003cimg alt=\"Discord\" src=\"https://img.shields.io/discord/354670964400848898?color=5865F2\u0026label=Chat\u0026logo=discord\u0026logoColor=white\"/\u003e\u003c/a\u003e \r\n\r\n\u003c!-- \r\n🟥🟧🟨🟩🟦🟪❤️🧡💛💚💙💜\r\n\r\nWhat, When, Where, Why, How, Which, Who, and Whom\r\n--\u003e\r\n","funding_links":["https://www.patreon.com/quaternius"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-lyeh%2Fv2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr-lyeh%2Fv2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-lyeh%2Fv2/lists"}