|
| 1 | +<h1 align="center"><a href="#">VΒ·2</a></h1> |
| 2 | +<p align="center"> |
| 3 | +3D game engine/framework in C.<br/> |
| 4 | +<br/> |
| 5 | +<img src="https://i.imgur.com/AIEIWDk.png" /><!--cubemap--><br/> |
| 6 | +<img src="https://i.imgur.com/ipAYky8.png" width="204px"/><!--sprite--> |
| 7 | +<img src="https://i.imgur.com/NlSb4ip.png" width="204px"/><!--sprite3d--> |
| 8 | +<img src="https://i.imgur.com/rmdkSiB.png" width="204px"/><!--tiled--> |
| 9 | +<img src="https://i.imgur.com/2BfIAFD.png" width="204px"/><!--model--> |
| 10 | +<img src="https://i.imgur.com/Sskr5pS.png" width="204px"/><!--editor--> |
| 11 | +<img src="https://i.imgur.com/GsgOZhu.png" width="204px"/><!--fx--> |
| 12 | +<img src="https://i.imgur.com/24oKvLj.png" width="204px"/><!--shadertoy--> |
| 13 | +<img src="https://i.imgur.com/F9ix0Zf.png" width="204px"/><!--shadows--> |
| 14 | +</p> |
| 15 | + |
| 16 | +## About |
| 17 | +- 3D game engine v2, written in C. |
| 18 | +- v2 is a major overhaul from [previous v1 engine](https://github.com/fwk3d/v1). |
| 19 | +- v2 is faster, smaller and stronger than v1. |
| 20 | +- v2 is still a C engine, but there are C++ dependencies now. |
| 21 | +- v2 is a work-in-progress, though. [Changelog](CHANGELOG.md). |
| 22 | + |
| 23 | +## Features and wishlist |
| 24 | +- [x] ~~Rich build system, Royaltie fee, Licensing clauses, Full featured, Fast, Modern C++~~. |
| 25 | +- [x] Single batch makefile, Free, Unlicensed, Small, Naive, Simple C. |
| 26 | +- [ ] TBD. |
| 27 | + |
| 28 | +## Quickstart |
| 29 | +- Double-click `MAKE.bat`. Launch `hello.exe` when done. |
| 30 | +- Alternatively, |
| 31 | + - `make [asan] [embed] [debug|devel|release|retail] file1.c file2.cc ...` for custom builds. |
| 32 | +- Other commands, |
| 33 | + - `make tidy` to clean environment. |
| 34 | + - `make sync` to sync repo to latest. |
| 35 | + - `make plug` to un/install extensions. |
| 36 | +- Tested with VS2019 and VS2022 installations. |
| 37 | + |
| 38 | +## Extensionsπ |
| 39 | +- Currently, [all these extensions are hosted on github](https://github.com/search?q=topic%3Aext-v2&type=repositories&s=updated&o=desc). |
| 40 | +- It is planned that the hello demo will be used to un/install extensions in the future. |
| 41 | +- For now, you can un/install extensions via `make plug` script: |
| 42 | + - `make plug dir` |
| 43 | + - `make plug [add|del|syn] *` |
| 44 | + - `make plug [add|del|syn] user/repo` |
| 45 | + - `make plug [add|del|syn] @filelist.txt` |
| 46 | + |
| 47 | +## Creditsπ |
| 48 | +**Artwork and demos** |
| 49 | +[Butch](https://opengameart.org/users/buch "for golden ui (CC-BY-SA 3.0)"), |
| 50 | +[David Lam](https://en.wikipedia.org/wiki/Tokamak_(software) "for tokamak physics engine (ZLIB)"), |
| 51 | +[Dean Evans, Raijin](https://youtu.be/RRvYkrrpMKo?t=147 "for their Map song (c)"), |
| 52 | +[FMS_Cat](https://gist.github.com/FMS-Cat/a1ccea3ce866c34706084e3526204f4f "for nicest VHS/VCR shader around (MIT)"), |
| 53 | +[Goblin165cm](https://sketchfab.com/3d-models/halloween-little-witch-ccc023590bfb4789af9322864e42d1ab "for witch 3D model (CC BY 4.0)"), |
| 54 | +[Nuulbee](https://sketchfab.com/3d-models/kgirls01-d2f946f58a8040ae993cda70c97b302c "for kgirls01 3D model (CC BY-NC-ND 4.0)"), |
| 55 | +[Pixel Frog](https://pixelfrog-assets.itch.io/ "for their lovely asesprites (CC0)"), |
| 56 | +[Quaternius](https://www.patreon.com/quaternius "for their lovely 3D robots (CC0)"), |
| 57 | +[Rotting Pixels](https://opengameart.org/content/2d-castle-platformer-tileset-16x16 "for castle-tileset (CC0)"), |
| 58 | +[Tom Lewandowski](https://QuestStudios.com "for their MIDI recordings (c)"), |
| 59 | +[Rye Terrell](https://github.com/wwwtyro/glsl-atmosphere "for nicest rayleigh/mie scattering shader around (CC0)"), |
| 60 | +[Rxi](https://github.com/rxi/autobatch "for their lovely sprites & cats demo (MIT)"), |
| 61 | +**Tools** |
| 62 | +[Aaron Barany](https://github.com/akb825/Cuttlefish "for cuttlefish (APACHE2)"), |
| 63 | +[Andreas Mantler](https://github.com/ands/sproutline/ "for sproutline (PD)"), |
| 64 | +[Arseny Kapoulkine](https://github.com/zeux/pugixml/ "for pugixml (MIT)"), |
| 65 | +[Assimp authors](https://github.com/assimp/assimp "for assimp (BSD3)"), |
| 66 | +[Bernhard Schelling](https://github.com/schellingb/TinySoundFont "for tml.h (Zlib) and tsf.h (MIT)"), |
| 67 | +[FFMPEG authors](https://www.ffmpeg.org/ "for ffmpeg (LGPL21)"), |
| 68 | +[Imagination](https://developer.imaginationtech.com/pvrtextool/ "for pvrtextoolcli (ITL)"), |
| 69 | +[Krzysztof Gabis](https://github.com/kgabis/ape "for split.py/join.py (MIT)"), |
| 70 | +[Lee Salzman](https://github.com/lsalzman/iqm/tree/5882b8c32fa622eba3861a621bb715d693573420/demo "for iqm.cpp (PD)"), |
| 71 | +[Leon Bottou](https://github.com/facebookresearch/CParser "for lcpp (MIT)"), |
| 72 | +[MartΓn Lucas Golini](https://github.com/SpartanJ/eepp/commit/8552941da19380d7a629c4da80a976aec5d39e5c "for emscripten-fs.html (CC0)"), |
| 73 | +[Mattias Gustavsson](https://github.com/mattiasgustavsson/libs "for mid.h (PD)"), |
| 74 | +[Morgan McGuire](https://casual-effects.com/markdeep/ "for markdeep (BSD2)"), |
| 75 | +[Olivier Lapicque, Konstanty Bialkowski](https://github.com/Konstanty/libmodplug "for libmodplug (PD)"), |
| 76 | +[Polyglot Team](https://docs.google.com/spreadsheets/d/17f0dQawb-s_Fd7DHgmVvJoEGDMH_yoSd8EYigrb0zmM/edit "for polyglot gamedev (CC0)"), |
| 77 | +[Randy Gaul](https://github.com/RandyGaul/cute_headers "for cute_asesprite (PD)"), |
| 78 | +[Rxi, Adam Harrison](https://github.com/rxi/lite "for the exquisite lite editor (MIT)"), |
| 79 | +[Sean Barrett et al.](https://github.com/nothings/stb "for stbiresize, stbrectpack (PD)"), |
| 80 | +[Sepehr Taghdisian](https://github.com/septag/atlasc/ "for glslcc+atlasc (BSD2)"), |
| 81 | +[Tildearrow](https://github.com/tildearrow/furnace/ "for Furnace (GPL2)"), |
| 82 | +[Tomas Pettersson](http://www.drpetter.se/ "for sfxr (PD)"), |
| 83 | +[Tor Andersson](https://github.com/ccxvii/asstools "for assiqe.c (BSD)"), |
| 84 | +[Wael El Oraiby](https://github.com/eloraiby/delaunay "for delaunay.c (AGPL3)"), |
| 85 | +**Runtime** |
| 86 | +[Andreas Mantler](https://github.com/ands "for lightmapper and math library (PD)"), |
| 87 | +[Barerose](https://github.com/barerose "for swrap (CC0) and math library (CC0)"), |
| 88 | +[Camilla LΓΆwy](https://github.com/elmindreda "for glfw3 and gleq (Zlib)"), |
| 89 | +[Dave Rand](https://tools.ietf.org/html/rfc1978 "for ppp (PD)"), |
| 90 | +[David Herberth](https://github.com/dav1dde/ "for glad generated code (PD)"), |
| 91 | +[David Reid](https://github.com/mackron "for miniaudio (PD)"), |
| 92 | +[Dominic Szablewski](https://github.com/phoboslab/pl_mpeg "for pl_mpeg (MIT)"), |
| 93 | +[Dominik MadarΓ‘sz](https://github.com/zaklaus "for json5 parser (PD)"), |
| 94 | +[Eduard Suica](https://github.com/eduardsui/tlse "for tlse (PD)"), |
| 95 | +[Evan Wallace](https://github.com/evanw "for their math library (CC0)"), |
| 96 | +[Gargaj+cce/Peisik](https://github.com/gargaj/foxotron "for Foxotron/PBR shaders (UNLICENSE)"), |
| 97 | +[Guilherme Lampert](https://github.com/glampert "for their math library (PD)"), |
| 98 | +[Guillaume Vareille](http://tinyfiledialogs.sourceforge.net "for tinyfiledialogs (ZLIB)"), |
| 99 | +[Haruhiko Okumura](https://oku.edu.mie-u.ac.jp/~okumura/compression/ "for lzss (PD)"), |
| 100 | +[Igor Pavlov](https://www.7-zip.org/ "for LZMA (PD)"), |
| 101 | +[Ilya Muravyov](https://github.com/encode84 "for bcm, balz, crush, ulz, lz4x (PD)"), |
| 102 | +[James R. McKaskill](https://github.com/jmckaskill/luaffi "for luaffi (MIT)"), |
| 103 | +[Jon Olick](https://www.jonolick.com/ "for jo_mp1 and jo_mpeg (PD)"), |
| 104 | +[Joonas Pihlajamaa](https://github.com/jokkebk/JUnzip "for JUnzip library (PD)"), |
| 105 | +[Juliette Focault](https://github.com/juliettef/IconFontCppHeaders/blob/main/IconsMaterialDesign.h "for the generated MD header (ZLIB)"), |
| 106 | +[Kristoffer GrΓΆnlund](https://github.com/krig "for their math library (CC0)"), |
| 107 | +[Lee Salzman](https://github.com/lsalzman/iqm/tree/5882b8c32fa622eba3861a621bb715d693573420/demo "for IQM spec & player (PD)"), |
| 108 | +[Lee Salzman, V.Hrytsenko, D.MadarΓ‘sz](https://github.com/zpl-c/enet/ "for enet (MIT)"), |
| 109 | +[Libtomcrypt](https://github.com/libtom/libtomcrypt "for libtomcrypt (Unlicense)"), |
| 110 | +[Lua authors](https://www.lua.org/ "for Lua language (MIT)"), |
| 111 | +[Mattias Gustavsson](https://github.com/mattiasgustavsson/libs "for thread.h and https.h (PD)"), |
| 112 | +[Mattias Jansson](https://github.com/mjansson/rpmalloc "for rpmalloc (PD)"), |
| 113 | +[Micha Mettke](https://github.com/vurtun "for nuklear and their math library (PD)"), |
| 114 | +[Michael Galetzka](https://github.com/Cultrarius/Swarmz "for swarmz (UNLICENSE)"), |
| 115 | +[Morten Vassvik](https://github.com/vassvik/mv_easy_font "for mv_easy_font (Unlicense)"), |
| 116 | +[MΔrtiΕΕ‘ MoΕΎeiko](https://gist.github.com/mmozeiko/68f0a8459ef2f98bcd879158011cc275 "for A* pathfinding (PD)"), |
| 117 | +[Omar Cornut, vaiorabbit](https://github.com/ocornut/imgui/pull/3627 "for tables of unicode ranges (MIT-0)"), |
| 118 | +[Peter Schulman, Chris Willcocks, Dmitry Hrabrov](https://github.com/vurtun/nuklear "for nuklear patches (PD)"), |
| 119 | +[Rabia Alhaffar](https://github.com/Rabios/ice_libs "for ice_batt.h (PD)"), |
| 120 | +[Randy Gaul](https://web.archive.org/*/http://www.randygaul.net/wp-content/uploads/2021/04/handle_table.cpp "for HandleTable (PD)"), |
| 121 | +[Rich Geldreich](https://github.com/richgel999/miniz "for miniz (PD)"), |
| 122 | +[Ross Williams](http://ross.net/compression/lzrw3a.html "for lzrw3a (PD)"), |
| 123 | +[Samuli Raivio](https://github.com/bqqbarbhg/bq_websocket "for bq_websocket (PD)"), |
| 124 | +[Scott Lembcke](https://github.com/slembcke/debugger.lua "for lua debugger (MIT)"), |
| 125 | +[Sean Barrett](https://github.com/nothings "for stb_image, stb_image_write, stb_sprintf, stb_truetype and stb_vorbis (PD)"), |
| 126 | +[Sebastian Steinhauer](https://github.com/kieselsteini "for sts_mixer (PD)"), |
| 127 | +[Stan Melax, Cloud Wu](https://web.archive.org/web/20031204035320/http://www.melax.com/polychop/gdmag.pdf "for polychop C algorithm (PD)"), |
| 128 | +[Stefan Gustavson](https://github.com/stegu/perlin-noise "for simplex noise (PD)"), |
| 129 | +[Sterling Orsten](https://github.com/sgorsten "for their math library (UNLICENSE)"), |
| 130 | +[Tor Andersson](https://github.com/ccxvii/minilibs "for xml.c (PD)"), |
| 131 | +[Werner Stoop](engine/split/3rd_eval.h "for their expression evaluator (PD)"), |
| 132 | +[Wolfgang Draxinger](https://github.com/datenwolf "for their math library (WTFPL2)"), |
| 133 | + |
| 134 | +## Unlicense |
| 135 | +This 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. |
| 136 | + |
| 137 | +## Links |
| 138 | +Still looking for alternatives? [amulet](https://github.com/ianmaclarty/amulet), [aroma](https://github.com/leafo/aroma/), [astera](https://github.com/tek256/astera), [blendelf](https://github.com/jesterKing/BlendELF), [bullordengine](https://github.com/MarilynDafa/Bulllord-Engine), [candle](https://github.com/EvilPudding/candle), [cave](https://github.com/kieselsteini/cave), [chickpea](https://github.com/ivansafrin/chickpea), [corange](https://github.com/orangeduck/Corange), [cute](https://github.com/RandyGaul/cute_framework), [dos-like](https://github.com/mattiasgustavsson/dos-like), [ejoy2d](https://github.com/ejoy/ejoy2d), [exengine](https://github.com/exezin/exengine), [game-framework](https://github.com/Planimeter/game-framework), [gunslinger](https://github.com/MrFrenik/gunslinger), [hate](https://github.com/excessive/hate), [island](https://github.com/island-org/island), [juno](https://github.com/rxi/juno), [l](https://github.com/Lyatus/L), [limbus](https://github.com/redien/limbus), [love](https://github.com/love2d/love/), [lovr](https://github.com/bjornbytes/lovr), [mini3d](https://github.com/mini3d/mini3d), [mintaro](https://github.com/mackron/mintaro), [mio](https://github.com/ccxvii/mio), [olive.c](https://github.com/tsoding/olive.c), [opensource](https://github.com/w23/OpenSource), [ouzel](https://github.com/elnormous/ouzel/), [pez](https://github.com/prideout/pez), [pixie](https://github.com/mattiasgustavsson/pixie), [punity](https://github.com/martincohen/Punity), [r96](https://github.com/badlogic/r96), [ricotech](https://github.com/dbechrd/RicoTech), [rizz](https://github.com/septag/rizz), [tigr](https://github.com/erkkah/tigr), [yourgamelib](https://github.com/duddel/yourgamelib) |
| 139 | + |
| 140 | +<a href="https://github.com/fwk3d/v2/issues"><img alt="Issues" src="https://img.shields.io/github/issues-raw/fwk3d/v2.svg?label=Issues&logo=github&logoColor=white"/></a> <a href="https://github.com/fwk3d/v2/actions/workflows/build.yml"><img alt="Build status" src="https://github.com/fwk3d/v2/actions/workflows/build.yml/badge.svg"/></a> <a href="https://discord.gg/UpB7nahEFU"><img alt="Discord" src="https://img.shields.io/discord/270565488365535232?color=5865F2&label=Chat&logo=discord&logoColor=white"/></a> |
| 141 | + |
| 142 | +<!-- |
| 143 | +π₯π§π¨π©π¦πͺβ€οΈπ§‘ππππ |
| 144 | +
|
| 145 | +What, When, Where, Why, How, Which, Who, and Whom |
| 146 | +--> |
0 commit comments