Skip Navigation
Bevy

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

Members
359
Posts
56
Active Today
1
Created
2 yr. ago
  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃幃 Bevy Enhanced Input 0.13.0 is out!

    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

  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃К Bevy Replicon 0.34.0 is out!

    It鈥檚 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.
  • Bevy @programming.dev
    Shatur @lemmy.ml

    Bevy on PSX

    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!

  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃幃 Bevy Enhanced Input 0.12.0 is out!

    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

  • Bevy @programming.dev
    PotatoesFall @discuss.tchncs.de

    How/why are some components created implicitly/automatically?

    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!

  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃К Bevy Replicon 0.33.0 is out!

    It鈥檚 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

  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃幃 Bevy Enhanced Input 0.10.0 and 0.11.0 is out!

    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

  • Bevy @programming.dev
    Nemeski @lemm.ee
    bevyengine.org Bevy 0.16

    Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever!

    Bevy 0.16
  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃幃 Bevy Enhanced Input 0.9.0 is out!

    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

  • Bevy @programming.dev
    StudioLE @programming.dev

    Konstruo - The beginnings of a scenario based town building game

    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.

  • Bevy @programming.dev
    Shatur @lemmy.ml

    Adding networked multiplayer to my game with Bevy Replicon

    Not the author, but I found this nice article and wanted to share it 馃檪

  • Bevy @programming.dev
    Shatur @lemmy.ml

    Component-style API for bevy_enhanced_input

    It's an input manager crate for Bevy, inspired by Unreal Engine Enhanced Input. We use it for Project Harmonia, but it鈥檚 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.

  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃К Bevy Replicon 0.32.0 is out!

    It鈥檚 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

  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃幃 Bevy Enhanced Input 0.8.0 is out!

    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

  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃К Bevy Replicon 0.31.0 is out!

    It鈥檚 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 p

  • Bevy @programming.dev
    Shatur @lemmy.ml

    Bevy Meetup #9

    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.

  • Bevy @programming.dev
    Shatur @lemmy.ml

    馃К Bevy Replicon 0.30.0 is out!

    It鈥檚 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鈥檚 a quick showcase for client triggers:

     rust
        
    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](https://github.com/projectharmonia/bevy_rep

  • Bevy @programming.dev
    Shatur @lemmy.ml

    Bindings menu example

    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鈥檙e planning to refine it further to create the ultimate input manager 馃檪

  • Bevy @programming.dev
    Shatur @lemmy.ml
    imgur.com Bevy running on Playdate

    Discover the magic of the internet at Imgur, a community powered entertainment destination. Lift your spirits with funny jokes, trending memes, entertaining gifs, inspiring stories, viral videos, and so much more from users.

    Bevy running on Playdate

    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:

     undefined
        
    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

  • Bevy @programming.dev
    Shatur @lemmy.ml

    Remote triggers

    Spend last week working on remote triggers for bevy_replicon.

    Tried many approaches and finally satisfied with the implementation and public API.

    Client triggers example:

     rust
        
    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>>) {
        let FromClient { client_id, event } = trigger.event();
        info!("received event {event:?} from {client_id:?}");
    }
    
      

    Server triggers example:

     rust
        
    app.add_server_trigger::<DummyEvent>(ChannelKind::Ordered)
        .add_observer(receive_events)
        .add_systems(Update, send_events.run_if(server_running));
    
    fn send_events(mut commands: Commands) {
        commands.server_trigger(ToClients {
            mode: SendMode::Broadcast,
            event: DummyEvent,
        });
    }
    
    fn receive_events(trigger: Trigger<DummyEve