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
- 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).
MIT License. Copyright (c) 2024 MaiHD. Detais in LICENSE.