{"repo":"Lommix/knoedel","free":true,"listed":false,"github":"https://github.com/Lommix/knoedel","clone":"git clone https://github.com/Lommix/knoedel.git","description":"Data oriented application framework written in Zig (ECS). Very similar API to Bevy","language":"Zig","stars":44,"topics":["data-oriented","ecs","framework","game-development","zig"],"license":"MIT","category":"game-templates","readme_excerpt":"Knödel-ECS An entity component system (ECS) written in Zig. Heavily inspired by the rust ECS Bevy . (Very similar API) zig version: 0.16.0 Features - Bevy's awesome plugin and systems API in Zig - Lock free auto concurrency - Queries, resources and system locals - Component hooks and Bevy's 'Required Component' equivalent - Event and State extension - Archtype based storage - Children Parent relations - Manual control - Can run inside a dylib (re-add plugins after reload). Enables hot reloading! The S in ECS. How does it work? Every System is a function, composed of arguments that implement a fromWorld function and mark what they need as mutable and immutable via an addAccess function. The scheduler will then sort all your systems by access and run in parallel what does not collide (per schedule). How to run Plugin example All mentioned components are not part of Knödel. Only Parent and Children are provided. System Conditions and Queries Any function with this signature can be a system filter: const fn ( World, LocalRegistry) !bool Any struct that implements these functions can be system parameter: pub fn fromWorld(world: World) !Self or pub fn fromWorld(world: World, locals: ResourceRegistry) !Self To mark mutable access in a parallel world and let the system scheduler resolve it for your, implement this: pub fn addAccess(access: Access) void Take a look at ResMut or any other baseline arg for further information. Extensions Following the provided plugin API you can build a","default_branch":null,"files":null,"tree":[],"storefront":"/r/Lommix","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Lommix/knoedel/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}