8000 GitHub - brucelevis/FWK: Minimalist framework in plain C for quick 3D game development
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

brucelevis/FWK

 
 

Repository files navigation

F·W·K

Minimalist framework in plain C for quick 3D game development.


Goals

  • C++. C.
  • Fast. Naive.
  • Modern. Simple.
  • Full featured. Small.
  • Royaltie fee. Free and unlicensed.

Features ᕦ(ᐛ)ᕤ

  • OS: Windows, Linux and OSX.
  • Compiler: MSVC, MINGW64, TCC, GCC and clang.
  • Window: fullscreen, msaa, cursor handling.
  • Input: keyboard, mouse and gamepads.
  • Script: Lua, bindings and FFI.
  • Network: downloads (HTTPS), sockets (TCP/UDP) and messages (enet/websocket).
  • UI: color3/4, button, list, slider, toggle, checkbox, editbox, dialog, menus.
  • Math: rand, noise, ease, vec2/3/4, mat33/34/44, quat and quat2, bezier, catmull.
  • Geometry: ray, line, plane, aabb, sphere, capsule, triangle, poly and frustum.
  • Image: JPG, PNG, TGA, BMP, PSD, HDR, PIC, PNM and GIF.
  • Texture: BCn 1/2/3/4/5/6/7, DDS, KTX, PVR, PKM, ETC.
  • Audio: WAV, MOD, XM, FLAC, OGG, MP1, MP3, MID and SFXR.
  • Video: MP4, MPG, OGV, MKV, WMV and AVI.
  • Model: IQM, GLTF/2, FBX, OBJ, DAE, BLEND, MD3, MD5, MS3D, SMD, X, 3DS, BVH, DXF, LWO.
  • Render: 2D Sprites, spritesheets, batching, tiled and 2D Spines.
  • Render: 3D Anims, skeletal anims and hardware skinning.
  • Render: 3D Debugdraw, batching and vectorial font.
  • Render: Cubemaps, panoramas and spherical harmonics. Rayleigh/Mie scattering.
  • Render: Post-effects (SSAO,FXAA1/3,CRT,Contrast,Grain,Outline,Vignette...) and shadertoys.
  • Compression: DEFLATE, LZMA, LZ4, ULZ, BALZ, BCM, CRUSH, LZW3, LZSS and PPP.
  • Virtual filesystem: ZIP, PAK, TAR and DIR.
  • Disk cache.
  • Scene handling.
  • Integrated asset pipeline.
  • Profiler, stats and leaks finder.
  • Level data: JSON5 and XML.

Roadmap ᕕ(ᐛ)ᕗ

  • Level objects: volumes, triggers, platforms, streaming.
  • Level editor: gizmos, scene tree, property editor, load/save.
  • Render: Shadow mapping and baked lightmaps.
  • Render: Materials (textures, matcaps, videos, shadertoys).
  • Network: message api and pub/sub wrappers.
  • Pipeline: Extend asset pipeline (shaders, bindings, xml, textures). Asset options.
  • Script: Teal and typescript.
  • Script: Refl/meta tool (during cook stage).
  • API: Review API and lock it.
  • API: Docs.
  • Repo: first release.

Build

Type MAKE.bat (Win) or sh MAKE.bat (Linux/OSX) to build everything. Alternatively,

cl  demo.c       fwk.c                                                         && echo Windows (vc+tcc)
gcc demo.c       fwk.c -o demo -w -lws2_32 -lgdi32 -lwinmm -ldbghelp -std=c99  && echo Windows (mingw64)
cc  demo.c       fwk.c -o demo -w -lm -ldl -lpthread                           && echo Linux (gcc+clang+tcc)
cc  demo.c -ObjC fwk.c -o demo -w -framework cocoa -framework iokit            && echo OSX (gcc+clang)
  • Note: TCC is partially supported on Windows+Linux. Beware, no threading.

Amalgamation

  • Split fwk.h into separate files by running art/tools/split.bat (or sh art/tools/split.bat in Linux/OSX).
  • Merge those files back into fwk.h by running art/tools/join.bat (or sh art/tools/join.bat in Linux/OSX).
  • Optionally, generate a single-header distribution by executing following script:
type fwk.h            > fwk-single-header.h
echo #ifdef FWK_C    >> fwk-single-header.h
echo #pragma once    >> fwk-single-header.h
type fwk.c           >> fwk-single-header.h
echo #endif // FWK_C >> fwk-single-header.h

Extra tips

  • Dropped files into game window will be saved in art/import folder.
  • Linux/OSX users can optionally install wine to use the Windows pipeline as an alternate asset pipeline.

License

This software is released into the public domain.
Also dual-licensed as 0-BSD or MIT (No Attribution) for those countries where public domain is a concern (sigh).
Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.

Credits (Artwork + demos)

  • FMS_Cat, for nicest VHS/VCR shader around (MIT).
  • Goblin165cm, for witch 3D model (CC BY 4.0).
  • Nanofactory, for kgirls01 3D model (CC BY-NC-ND 4.0).
  • Quaternius, for the lovely 3D robots (CC0).
  • Rxi, for lovely sprites & cats demo (MIT).
  • wwwtyro, for nicest rayleigh/mie scattering shader around (CC0).

Credits (Tools)

Credits (Runtime)

Links

Issues Discord

Still looking for alternatives? amulet, aroma, astera, blendelf, bullordengine, candle, cave, chickpea, corange, ejoy2d, exengine, gunslinger, hate, island, juno, l, lgf, limbus, love, lovr, mini3d, mintaro, mio, opensource, pez, pixie, punity, ricotech, rizz, tigr,

About

Minimalist framework in plain C for quick 3D game development

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 73.5%
  • C++ 24.9%
  • GLSL 0.7%
  • Lua 0.6%
  • Objective-C 0.3%
  • Shell 0.0%
0