Bevy

406 readers
6 users here now

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

founded 2 years ago
MODERATORS
1
 
 

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

The 0.40 release targets Bevy 0.18 and introduces shared messages/events, which are useful for client-side prediction.

The 0.41-rc.1 release targets Bevy 0.19-rc.1 and includes long-awaited resource replication. It was trivial to add since resources are now backed by components.

As always, I recommend updating to 0.40 first.

See the changelog for the full list of changes.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_replicon

2
 
 

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

The 0.25 release targets Bevy 0.18 and includes custom input support, along with other minor improvements and a few small breaking changes.

The 0.26.0-rc.1 release targets Bevy 0.19-rc.1 and only bumps the Bevy version.

As always, I recommend updating to 0.25 first.

The crate is planned for upstreaming in Bevy, so please try it out and share your feedback.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

3
 
 

The only issue I currently have is that Avian doesn't update colliders when the game is paused, so for now I just don't pause in build mode ๐Ÿ˜…

4
 
 

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

5
6
 
 

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

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

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

8
 
 

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

9
 
 

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!

10
 
 

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

11
 
 

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!

12
 
 

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

13
 
 

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

14
24
Bevy 0.16 (bevyengine.org)
submitted 1 year ago by neme@lemm.ee to c/bevy@programming.dev
15
 
 

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

16
 
 

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.

17
 
 

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

18
 
 

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.

19
 
 

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

20
 
 

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

21
 
 

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

22
 
 

A virtual meetup where we talk about Bevy :) This time I will be one of the speakers! Link to the blogpost with more details about the format.

Scheduled for March 6th 8 pm CET.

23
18
submitted 1 year ago* (last edited 1 year ago) by Shatur@lemmy.ml to c/bevy@programming.dev
 
 

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

Kinda our 30th anniversary ๐Ÿ˜… This release introduces remote triggers. The API is similar to our networked events. Hereโ€™s a quick showcase for client triggers:

app.add_client_trigger::<DummyEvent>(ChannelKind::Ordered)
    .add_observer(receive_events)
    .add_systems(Update, send_events.run_if(client_connected));

fn send_events(mut commands: Commands) {
    commands.client_trigger(DummyEvent);
}

fn receive_events(trigger: Trigger<FromClient<DummyEvent>>) {
    info!("received event {:?} from {:?}", trigger.event, trigger.client_id);
}

Server triggers have a similar API. Targeting entities is also supported.

We now also provide an example backend and examples that directly from the bevy_replicon repo. The examples have also been re-written to take advantage of the latest Bevy and Replicon features.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_replicon

24
 
 

Refined the bindings menu for my game and ported it into a standalone example for bevy_enhanced_input.

Alice (the author of LWIM) and I quite like the main concepts of the crate, and weโ€™re planning to refine it further to create the ultimate input manager ๐Ÿ™‚

25
11
submitted 1 year ago* (last edited 1 year ago) by Shatur@lemmy.ml to c/bevy@programming.dev
 
 

Thanks to ongoing work on no_std, people continue to try running Bevy on unusual platforms.

Today, @Mathspy from Discord managed to run it on the Playdate:

For what it's worth, Bevy's app, ECS, math, state work on the playdate with no patches
And Bevy's time works with a minor patch https://github.com/bevyengine/bevy/pull/17577

For rendering they're making playdate render calls in PostUpdate: https://github.com/Mathspy/bevydate/blob/1b4f02adcde079cf9757fd3c7d20331c9ab04513/src/lib.rs#L429-L441

view more: next โ€บ