Bevy

391 readers
1 users here now

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

founded 2 years ago
MODERATORS
1
 
 

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

Highlights

  • Command-based API for mocking:
commands
    .entity(context)
    .mock_once::<Player, Jump>(ActionState::Fired, true);
  • โจโจโจโจโจActionSettings::consume_inputโฉโฉโฉโฉโฉ now defaults to โจโจโจโจโจfalseโฉโฉโฉโฉโฉ. This should make the input less footgunny.

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

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

2
 
 

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

There are no breaking changes. However, bevy_enhanced_input also received a 0.22 release with a few minor breakages. It's recommended to upgrade to 0.21 first during the Bevy migration, and then proceed with 0.22.

3
4
 
 

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

Last week, I updated all my crates to Bevy 0.18 RC and finally started working on the game!

As I mentioned earlier, I'm starting from scratch since I want to change too many things. But the old code helps me as a reference.

Finished implementing game speed controls today. Had to make a few changes to BEI to make it play nicely with it.

5
 
 

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

This release features a new visibility system. It's component-driven, so you don't have to maintain visibility separately from your gameplay logic. And it now supports both component and entity visibility. It took quite some time to refactor the codebase to support this, but I'm very happy with the result ๐Ÿ™‚

See the changelog for the full list of changes.

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_replicon

6
 
 

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

I usually don't write about patches, but this one worth mentioning.

Highlights

  • Combo input condition to bind a sequence of actions. You can use it for things like double-clicks or Vim-like shortcuts.
  • Pulse::with_initial_delay and Pulse::initial_delay to add a special delay before the first repeat. This can be used to implement key repeat.
  • Reworked quick start guide - check it out if you're new to the library. Huge thanks to Alice for it ๐Ÿ™‚

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

๐Ÿ“œFull changelog ๐Ÿ“ฆbevy_enhanced_input

7
 
 

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/

8
 
 

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.

9
10
 
 

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

11
12
 
 

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

13
16
submitted 5 months ago* (last edited 5 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

14
 
 

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

15
16
 
 

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

17
 
 

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

18
 
 

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

19
 
 

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!

20
 
 

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

21
 
 

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!

22
 
 

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

23
 
 

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

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

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

view more: next โ€บ