#random #bevy #rand #game-engine #game

bevy_prng

A crate providing newtyped RNGs for integration into Bevy

6 releases (3 breaking)

new 0.6.0 Apr 24, 2024
0.5.2 Feb 21, 2024
0.2.0 Nov 4, 2023
0.1.0 Aug 29, 2023

#999 in Game dev

Download history 35/week @ 2024-01-01 42/week @ 2024-01-08 99/week @ 2024-01-15 55/week @ 2024-01-22 48/week @ 2024-01-29 32/week @ 2024-02-05 58/week @ 2024-02-12 494/week @ 2024-02-19 165/week @ 2024-02-26 70/week @ 2024-03-04 98/week @ 2024-03-11 72/week @ 2024-03-18 67/week @ 2024-03-25 136/week @ 2024-04-01 78/week @ 2024-04-08 97/week @ 2024-04-15

386 downloads per month
Used in bevy_rand

MIT/Apache

15KB
305 lines

Bevy PRNG

Crates.io CI License Documentation

What is Bevy PRNG?

bevy_prng is a crate that provides newtyped versions of various rand_* PRNG algorithm crates to make them suitable for integration within bevy for reflection purposes. It enables these types to have stable TypePaths and otherwise implement various required traits. This crate can be used as standalone to provide access to various PRNG algorithms of one's choice, to then use to write components/resources for one's game in bevy, but primarily, it's purpose to support and be a counterpart to bevy_rand (which provides the generic wrapper component/resource that bevy_prng types can plug in to).

Using Bevy PRNG

By default, bevy_prng won't export anything unless the feature/algorithm you require is explicitly defined. In order to gain access to a newtyped PRNG struct, you'll have activate one of the following features:

  • rand_chacha - This enables the exporting of newtyped ChaCha*Rng structs, for those that want/need to use a CSPRNG level source.
  • rand_pcg - This enables the exporting of newtyped Pcg* structs from rand_pcg.
  • rand_xoshiro - This enables the exporting of newtyped Xoshiro* structs from rand_xoshiro. It also reexports Seed512 so to allow setting up Xoshiro512StarStar and so forth without the need to pull in rand_xoshiro explicitly.
  • wyrand - This enables the exporting of newtyped WyRand from wyrand, the same algorithm in use within fastrand/turborand.

In addition to these feature flags to enable various supported algorithms, there's also serialize flag to provide serde support for Serialize/Deserialize, which is enabled by default.

All types are provided at the top-level of the module:

use bevy_prng::*;

Supported PRNG Algorithms/Crates

All the below crates implement the necessary traits to be compatible with bevy_prng. Additional PRNG crates can be added via PR's to this crate/repo, provided the PRNGs implement Debug, Clone, PartialEq and have optional Serialize/Deserialize serde traits implemented and put behind appropriate feature flags.

Cryptographically Secure PRNGs

Non-Cryptographically Secure PRNGS

Supported Versions & MSRV

bevy_prng uses the same MSRV as bevy.

bevy bevy_prng
v0.13 v0.5
v0.12 v0.2
v0.11 v0.1

The versions of rand_core/rand that bevy_prng is compatible with is as follows:

bevy_prng rand_core rand
v0.1 -> v0.5 v0.6 v0.8

License

Licensed under either of

at your option.

Dependencies

~18–47MB
~738K SLoC