Skip to content

Libraries, frameworks, and guides for gamedev with Beef

License

Notifications You must be signed in to change notification settings

maihd/beef-gamedev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Game development with Beef

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).

Disclaimer

  • 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

Programming language guides

  • 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.

Beef advantages for gamedev

  • 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#)

Libraries

Only contains libraries which are should used:

Frameworks

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)
  • Wishlist modules:
    • Full framework (include all modules, deps)
    • StalkerX: Camera control
    • Windfield: Physics and simulations (high-level wrapper for existing physics engine)
    • LDtk: parser and 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:

Tools

Games made by Beef

Cross-platform

  • 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

Source code license

MIT License. Copyright (c) 2024 MaiHD. Detais in LICENSE.

Releases

No releases published

Packages

No packages published

Languages