2 releases

0.0.2 Jan 3, 2024
0.0.1 Dec 30, 2023

#905 in Game dev

MIT/Apache

31KB
575 lines

Rust

A Petri net plugin for Bevy Engine. 🍾

About

petnat equips you with Petri nets to use in your Bevy projects. It's a powerful way to model states, processes, resources, and more.

This is a very experimental project, and I mostly started it because I wanted to play with Petri nets and improve my Rust. I am not sure about the possible usefulness of this plugin, but I hope to discover how I can improve it with time and usage.

Rough idea

  1. Build a model using places and transitions.
  2. Define a PetriNet<NetId> resource.
  3. Add a Token<NetId> component to an entity.
  4. Mark some (probably initial) places with the Token according to the model.
  5. Fire transitions when it makes sense according to the model.
  6. Implement game logic based on the current marking of the Token.

Examples

Check out this example demonstrating a simple Petri net in action, as well as the tests here for more Petri net instances.

Dependencies

~10MB
~186K SLoC