Bevy

381 readers
1 users here now

A community for discussion around the bevy game engine! https://bevyengine.org/

founded 2 years ago
MODERATORS
1
 
 

Some automationgame in the spirit of factorio or satisfactory completly made in bevy by a small team. Right now you can play a demo and wishlist but it says to release this year still.

https://store.steampowered.com/app/3615720/Exofactory/

2
 
 

cross-posted from: https://lemmy.ml/post/37068223

Updated my crates to Bevy 0.17:

This update is mostly migration work, with a few breaking changes in naming to match Bevy's own changes (such as the event re-architecture). I try to minimize breakages when Bevy updates to make migrations easier.

We also plan to upstream bevy_enhanced_input, so please try it out and share your feedback.

3
4
 
 

Itโ€™s a crate for server-authoritative networking. We use it for Simgine, but it's general-purpose.

Highlights

  • Priority system inspired by Unreal Engine's Iris. This lets you control how often mutations are sent.
  • Replication filters. When registering component(s) for replication, you can now attach Query filters using *_filtered functions:
app.replicate_filtered::<Transform, Or<(With<Player>, With<Enemy>)>>()

We had to add *_filtered because functions can't have default generic parameters like structs (which is how it works with Query).

  • Replication as another struct. This lets you define a struct, implement conversions via From, add serde derives, and register it like this:
app.replicate_as::<Transform, TransformWithoutScale>();

Using replicate_with with custom ser/de functions is still possible and useful, but for simple cases replicate_as is nicer.

  • Ergonomic mapping for entities spawned on the client. When an entity is spawned on the server, clients automatically spawn a new entity and map IDs. But sometimes you may need to predict spawning on the client or load a level independently on both client and server. This is where the newly added Signature component comes in. It calculates a hash for the entity to uniquely identify it based on component(s) and/or a seed. This way, when the server replicates a new entity to a client and its hash matches an already existing entity, they will be mapped.
commands.spawn(Cell { x, y }, Signature::of::<Cell>());
  • Migration to Bevy states from custom run conditions. This feels more natural and allows the use of things like StateScoped(ClientState::Connected).

We also revamped the examples! I already showcased a boids example (https://lemmy.ml/post/35170308) for deterministic replication, but later realized that a silly mistake in the code left the boids half-blind ๐Ÿ˜… So here's a new video where they can properly see each other.

This release targets Bevy 0.16. I'm starting work on the 0.17 RC now.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_replicon

5
6
 
 

An input manager for Bevy, inspired by Unreal Engine's Enhanced Input. We use it for Simgine, but it's general-purpose.

Another small release with QoL improvements.

Highlights

  • Binding::AnyKey to assign any button.
  • Cooldown input condition.
  • Mocking can be used even without InputPlugin.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

7
15
submitted 2 months ago* (last edited 2 months ago) by Shatur@lemmy.ml to c/bevy@programming.dev
 
 

While waiting for Bevy 0.17, I'm having fun working on examples for bevy_replicon.

Itโ€™s a crate for server-authoritative networking. We use it for Simgine, but it's general-purpose.

Implemented Boids as an example to showcase deterministic replication.

https://github.com/simgine/bevy_replicon/pull/554

8
 
 

An input manager for Bevy, inspired by Unreal Engine's Enhanced Input. We use it for Simgine, but it's general-purpose.

A small release with QoL improvements.

Highlights

  • Add ability to toggle contexts without removing them using the ContextActivity<C> component.
  • Allow bindings! macro to mix tuple and non-tuple bindings.
  • Fix unnecessary change detection for Actions<C> on every update.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

9
10
 
 

An input manager for Bevy, inspired by Unreal Engine's Enhanced Input. We use it for Project Harmonia, but it's general-purpose.

This update features a big rewrite into a component-based API. The core concepts remain the same, but are now expressed through ECS. It's recommended to revisit the quick start guide.

Showcase:

// Spawn a camera with an input context.
commands.spawn((
    Camera3d::default(),
    Transform::from_xyz(-2.5, 4.5, 9.0).looking_at(Vec3::ZERO, Vec3::Y),
    FlyCam,
    // Similar to `related!`, but you only specify the context type.
    // Actions are related to specific context since a single entity can have multiple contexts.
    actions!(FlyCam[
        (
            Action::<Move>::new(),
            // Conditions and modifiers as components.
            DeadZone::default(), // Apply non-uniform normalization that works for both digital and analog inputs, otherwise diagonal movement will be faster.
            SmoothNudge::default(), // Make movement smooth and independent of the framerate. To only make it framerate-independent, use `DeltaScale`.
            Scale::splat(0.3), // Additionally multiply by a constant to achieve the desired speed.
            // Bindings are entities related to actions.
            // An action can have multiple bindings and will respond to any of them.
            Bindings::spawn((
                // Bindings like WASD or sticks are very common,
                // so we provide built-in `SpawnableList`s to assign all keys/axes at once.
                Cardinal::wasd_keys(),
                Axial::left_stick()
            )),
        ),
        (
            Action::<Rotate>::new(),
            Bindings::spawn((
                // You can attach modifiers to individual bindings as well.
                Spawn((Binding::mouse_motion(), Scale::splat(0.1), Negate::all())),
                Axial::right_stick().with((Scale::splat(2.0), Negate::x())),
            )),
        ),
        // For bindings we also have a macro similar to `children!`.
        (Action::<CaptureCursor>::new(), bindings![MouseButton::Left]),
        (Action::<ReleaseCursor>::new(), bindings![KeyCode::Escape]),
    ]),
));

Advantages of the new API:

  • You can use Bevy scenes to describe bindings. When BSN lands, we'll get hot-reloadable actions for free. In UE, this is also expressed via Blueprints.
  • Everything is inspectable.
  • Modifiers and conditions are now accessible in systems, allowing you to adjust or read their data if needed.
  • Actions can be queried - especially convenient when using Single.
  • Things that didn't benefit from being static, such as prioritization and action settings, are now dynamic.
  • Things that were "inspired by Bevy," such as how bindings were defined, modifiers and presets, now actually utilize the Bevy API - meaning new users don't have to learn additional concepts.
  • The crate logic is much simpler.

Huge thanks to Alice for reviewing this monstrous +6,127 โˆ’5,738 PR!

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

11
 
 

An input manager for Bevy, inspired by Unreal Engine's Enhanced Input. We use it for Project Harmonia, but it's general-purpose.

Highlights

  • Pull-based API is now strongly typed, just like triggers. Example: actions.value::<Move>() returns the defined output type of Move.
  • Action mocking. Example: actions.mock::<Move>(ActionState::Fired, Vec2::ONE, Duration::from_secs(2)). The last parameter is generic, so you can also set the time in frames or until manually cleared.
  • Preparation for upcoming networking integrations. Mostly more convenient access to internals.
  • Many small but important ergonomic improvements.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

12
 
 

Itโ€™s a crate for server-authoritative networking. We use it for Project Harmonia, but it's general-purpose.

Probably one of the biggest releases. Here are some highlights:

  • Authorization system. By default, we verify protocol compatibility between client and server by comparing hashes. You can add custom data to the hash (such as the game version) or fully customize the logic using RepliconSharedPlugin::auth_method.
  • Static rules, such as Once or Periodic. Very fast to compute, useful for deterministic replication. We plan to add opt-in, more complex dynamic rules in the next release.
  • New syntax for constructing replication rules. It extends the old one and allows specialization of individual components when declaring groups.
  • Batched component insertion on replication. It's much faster, and all components are available in the user's observers.
  • DisconnectRequest event to request a disconnect after sending messages. Useful for sending things such as disconnect reasons.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_replicon

13
 
 

From @bushRAT's post in Discord:

One patch to LLVM, a compilation of rustc for a custom toolchain, and a lot of help from psx-sdk-rs, and I now have Bevy on the PlayStation One! Gamepad input fully integrated with bevy_input, double-buffered rendering, and logging piped to emulator debug logs. Might try and get 3D rendering going next!

14
 
 

It's an input manager for Bevy, inspired by Unreal Engine Enhanced Input. We use it for Project Harmonia, but it's general-purpose.

A relatively small release with several ergonomic improvements, such as using BevyError instead of panic-based APIs, along with some bug fixes.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

15
 
 

Hi!

I've been learning Bevy and LOVING IT, there's only one thing confusing me. Many components appear to be created magically even if not specified in the Bundle passed to commants.spawn.

For example, when I spawn just a Sprite component, the entity seems to automatically get a Transform component, even if I didn't give it one.

Similarly, this example spawns a Screenshot component, which apparently results in a Capturing component that can be queried later.

Are these "implicit" components documented somewhere? I took a short look at the TransformPlugin for example but I can't seem to figure out where these components come from.

Thanks y'all!

16
 
 

Itโ€™s a crate for server-authoritative networking. We use it for Project Harmonia, but it's general-purpose.

Highlights:

  • Relationships networking. Use relationships to specify which entities should be replicated in a single message.
  • Immutable components support. Replication is automatically applied via insertion for them.
  • replicate_mapped now deprecated. Regular replicate now works for all components.
  • Support for no_std and environments without atomic CAS, such as thumbv6m.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_replicon

17
 
 

It's an input manager for Bevy, inspired by Unreal Engine Enhanced Input. We use it for Project Harmonia, but it's general-purpose.

This is a double release to make migrating to Bevy 0.16 easier for users:

  • v0.10.0 targets Bevy 0.15. It replaces the confusing GamepadStick preset with the much more flexible Axial preset, and introduces Clamp modifier.
  • v0.11.0 updates to Bevy 0.16 with no breaking changes. It adds support for no_std and per-context schedule configuration (useful for networking), which wasn't possible to implement in 0.15.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

18
24
Bevy 0.16 (bevyengine.org)
submitted 6 months ago by neme@lemm.ee to c/bevy@programming.dev
19
 
 

It's an input manager for Bevy, inspired by Unreal Engine Enhanced Input. We use it for Project Harmonia, but it's general-purpose.

This release contains many changes, most notably the component-based API for contexts. We've also reworked the documentation, now including a quick-start guide that walks you through the API. We would appreciate your feedback ๐Ÿ™‚

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

20
 
 

I've been playing around with Bevy for a while and finally thought it worth sharing the progress I've made.


Konstruo is a standalone scenario based town building game giving you the freedom to build villages, towns, and cities with intuitive urban planning tools.

You'll need to overcome complex constraints to plan an optimal community for different sites.


Right now it only has the absolute basics of a prototype.

The README.md on GitHub has:


Progress so far is available under an AGPL license so features can be borrowed for your own games provided you also share your work under the AGPL license.

Once Konstruo reaches a significant milestone of development I'll split it into separate crates. My intention is for the libraries and tools (drawing, UI, etc) to be open source under AGPL but the modes and scenarios that make it a game will be proprietary.

After seeing how enthusiastic the modding community for Cities Skylines is I'm hoping by keeping it open that people will be keen to experiment with Bevy themselves and extend Konstruo with their own features or game modes.

For example I'm mostly interested in the design of communities but others may want to add simulation features to bring that community to life.

21
 
 

Not the author, but I found this nice article and wanted to share it ๐Ÿ™‚

22
 
 

It's an input manager crate for Bevy, inspired by Unreal Engine Enhanced Input. We use it for Project Harmonia, but itโ€™s general-purpose.

I love our trigger-based API, but the push-style API needed improvement. Previously, users had to read values from a resource - unergonomic and a bit confusing.

Now, contexts are components! This makes our push-style API similar to LWIM while keeping all the trigger-based ergonomics ๐Ÿ™‚

See more details in the PR.

I recently received blessing from Alice (author of LWIM) to upstream this crate as a future Bevy input abstraction. But first, we need to polish the API - it's much easier to iterate on while in a separate crate.

23
 
 

Itโ€™s a crate for server-authoritative networking. We use it for Project Harmonia, but it's general-purpose.

A small release with improvements to the messaging backends API and ergonomics. I wanted to draft these changes before Bevy 0.16 to simplify the migration.

I also drafted a new RC release that supports Bevy 0.16 with no_std support! Nothing is feature-gated, the crate now completely no_std. Aeronet's author is working on bringing no_std support to aeronet, so you should be able to use it together with Replicon for some unusual platforms soon ๐Ÿ™‚

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_replicon

24
 
 

It's a crate for dynamic and contextual input mappings for Bevy, inspired by Unreal Engine Enhanced Input. We use it for Project Harmonia, but it's general-purpose.

After some brainstorming with Alice (the author of LWIM), I replaced trait-based context creation with triggers. It was quite a significant refactor, but defining reloadable bindings in observers is so convenient.

There are also other minor ergonomic improvements and bugfixes. See the changelog for more details.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

25
 
 

Itโ€™s a crate for server-authoritative networking. We use it for Project Harmonia, but it's general-purpose.

Notable changes

  • Connected clients are now represented as entities.
    • All related APIs are now component-based.
    • Entity is used to refer to a client everywhere, but ClientId is still present as a persistent identifier across reconnects.
    • Fast iteration and O(1) lookups.
    • Users can insert their own components or even replicate these entities.
    • Simplifies messaging backend integration.
  • Switch from bincode to postcard.
    • Better varint serialization to save bandwidth.
    • Opens the door for no_std support after the 0.16 release.

I also rewrote the quick start guide. My recent talk at Bevy Meetup #9 helped me with this. It now contains much more information, including details on how to write a messaging backend or implement client-side prediction. I also tried to make it as user-friendly as possible. Feedback about it is highly appreciated!

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_replicon

view more: next โ€บ