This repo contains libraries, frameworks, and guides for starter. Unlike zig-gamedev, I only focus on hobby/indie gamedev, so this repo prefer simple, ergonomic high-level, yolo coding solutions other than high-performance, low-level graphics, ECS, DoD (which is can archieve with Beef by default).
- This repo focus on hobby/indie games, may not work with bigger games (gacha, moba, AAA)
- Please this for reference only, not the source of truth (still researching)
- For general purpose programming, see this awesome list
- If you have experience with C++ and C#, Beef is not hard from the beginning.
- Just read through all the docs (which is short), you will have based knowledge of syntax and semantic.
- Have some practices and experimentals, like I did. Now you can coding fluently with Beef. That's well enough to start developing game.
- Check out the design goals of Beef
- Full syntax of C# with C++ semantic (two familiar/main-stream programming languages for gamedev)
- Syntaxes for ergonomic gameplay coding: tagged union, pattern matching, comptime, comptime codegen
- Fast code compile, hot code reloading, immediate change when changing gameplay code (fast iteration development)
- C/C++ interop, easy bindings existing game libraries
- Realtime memory leaks detection, optional safety check on expressions, distinct build
- IDE support for generation file with Beef (like Unity support custom editor with C#)
Only contains libraries which are should used:
- Raylib Beef bindings (origin version, MaiHD fork)
- Linq (for functional programming)
- Dear ImGui
- Json
Create new framework or using existing:
- Use modules from this repo (which I called Gamefx)
- Roll your own based on existing framework/engine:
- MonoGame (Stardew Valley, Bastion, Celeste)
- deepnightLibs (use in Dead Cells)
- SexyAppFramework (Popcap Games)
- Cocos2d-x (Many many mobile games), ...
- Underhood rendering, audio, IO:
- Just use Raylib from beginning
- For long term, and customizable, I think you should exploring SDL3 (GPU, Audio, FileSystem, ...)
- Use extension features of Beef to wrap code, in the long-term, you can change your system without change gameplay code
- Modules:
- Tweening (use comptime reflection to avoid runtime overhead)
- Timer: middle-level actions scheduler
- Input bindings: action/callback bindings per input type (only Raylib now)
- LDtk: parsing the file
- Wishlist modules:
- Full framework (include all modules, deps)
- StalkerX: Camera control
- Windfield: Physics and simulations (high-level wrapper for existing physics engine)
- LDtk: high-level rendering for common framework, high-level usage like entity/class generation
- Resources caching, assets flow in game runtime (ie: load and cache texture, sound)
- Package reader: famous .pak format, raylib's rres
- Simple and fast allocator (Arena central memory allocations)
- Existing framework:
- Beef IDE
- LDtk
- Asesprite pixel art editor
- Pixi free pixel art editor
- Raylib tooling set
- Raylib's rres
- Beef work well with Windows (main-stream PC platform, also a starter platform for indie gamedev)
- Can build for mobile, but no production show case
- Wasm for Web platform, which also a priority target platform of Beef
- I have no experience for on gaming console, but Evening Star's Penny's Big Breakaway proof it worked
Because Beef have C# syntax with C++ semantics, so game tutorials/books from C++/C# can use.
- Game Programming Pattern book: old but gold, starting point for gamedev.
- DeepNight Tutorials: LDtk author, who use Haxe, but Haxe some many features Beef have, and familiar syntax. Easy apply to Beef.
- XNA/FNA/MonoGame tutorials: MonoGame is C#, easy to apply Beef (Mai NeonShooter is based from this).
- Beef Version: v0.43.6 Nightly (>= 03/06/2025 DD/MM/YYYY)
MIT License. Copyright (c) 2024 - 2025 MaiHD. Detais in LICENSE.