Skip to content

Latest commit

 

History

History
84 lines (66 loc) · 4.69 KB

README.md

File metadata and controls

84 lines (66 loc) · 4.69 KB

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

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.