9 releases (5 breaking)
0.8.0 | Nov 30, 2024 |
---|---|
0.7.1 | Jul 5, 2024 |
0.6.0 | Apr 24, 2024 |
0.5.2 | Feb 21, 2024 |
0.1.0 | Aug 29, 2023 |
#1826 in Game dev
1,068 downloads per month
Used in 2 crates
(via bevy_rand)
19KB
424 lines
Bevy PRNG
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 TypePath
s 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 newtypedChaCha*Rng
structs, for those that want/need to use a CSPRNG level source.rand_pcg
- This enables the exporting of newtypedPcg*
structs fromrand_pcg
.rand_xoshiro
- This enables the exporting of newtypedXoshiro*
structs fromrand_xoshiro
. It also exports a remote-reflected version ofSeed512
so to allow setting upXoshiro512StarStar
and so forth.wyrand
- This enables the exporting of newtypedWyRand
fromwyrand
, the same algorithm in use withinfastrand
/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.15 | v0.8 |
v0.14 | v0.7 -> v0.8 |
v0.13 | v0.5 -> v0.6 |
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.8 | v0.6 | v0.8 |
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~6.5MB
~117K SLoC