Shatur

joined 3 years ago
5
NESFab (pubby.games)
 

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.

[–] Shatur@lemmy.ml 2 points 1 week ago

I heard good things about Veloren. It's not a classical MMO, but I think it qualifies as one.

[–] Shatur@lemmy.ml 2 points 1 week ago* (last edited 1 week ago)

Sims

No promises, but I actually working on one πŸ˜… See this comment.

[–] Shatur@lemmy.ml 4 points 1 week ago* (last edited 1 week ago)

Same! There are almost no proprietary alternatives either!

It's funny that the first comment is about The Sims πŸ˜… My wife and I are working on a life simulation game in Rust using Bevy. I've been working on it for almost a year, and feeling a we are feeling a bit demotivated recently. So right now I took a small "break" and focus on improving crates that I used inside the game (input management and networking). I know the project is quite ambitious, but I've always wanted to create something like this. Seeing this many upvotes on your comment is quite encouraging πŸ™‚

I post my progress at !projectharmonia@lemmy.ml and here is the GitHub page. The project name is a placeholder. I haven't managed to come up with a nice name yet.

[–] Shatur@lemmy.ml 9 points 1 week ago (2 children)

A federated MMO would be interesting! But cheating might be a concern. Anyone could create a server with fully-equipped character and just federate.

But maybe servers could whitelist trusted servers? πŸ€”

[–] Shatur@lemmy.ml 2 points 1 week ago (1 children)

Never heard about it, but looks cool!

[–] Shatur@lemmy.ml 3 points 1 week ago

A president simulator? This sounds great! Never heard about these games, thanks for sharing!

[–] Shatur@lemmy.ml 2 points 1 week ago* (last edited 1 week ago)

Also wanted something like this! Maybe for MMO it will be easier to create a re-implementation πŸ€” Because it's not only hard to develop, but also hard to fill with content.

 

Just curious πŸ™‚

[–] Shatur@lemmy.ml 1 points 2 weeks ago

I have a special trait that generates a reverse command. And store a stack of commands. Here is the source.

I presume you don’t delete the entities on undo but hide them instead?

No, I do a full despawn. Just remember it's data to spawn again thanks to the mentioned trait.

[–] Shatur@lemmy.ml 4 points 2 weeks ago (1 children)

How do the buttons feel?

12
submitted 2 weeks ago* (last edited 2 weeks ago) by Shatur@lemmy.ml to c/europe@lemmy.ml
 

Green light for marketing of UV-treated whole Tenebrio molitor larvae powder added to EU "novel food" list. Attempt to block a yes vote in the Environment Committee at the EU Parliament fails.

[–] Shatur@lemmy.ml 5 points 2 weeks ago

The difference is the same as between Bevy's regular triggers and events. We aim to mirror the Bevy API and simply make it networked.

Events are buffered and pull-style, while triggers are called on commands flush and can target entities and components. Triggers were introduced in Bevy 0.14. Generally, you should use triggers for events that happen rarely and events for things that need to be processed in batches.

15
submitted 2 weeks ago* (last edited 2 weeks 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

 

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 πŸ™‚

10
submitted 3 weeks ago* (last edited 3 weeks 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

[–] Shatur@lemmy.ml 1 points 3 weeks ago (1 children)

Ah, you are right. But I didn't know where to upload them. What would you use for files?

[–] Shatur@lemmy.ml 2 points 4 weeks ago

Just additional supported platform for the engine. This also showcases how flexible Bevy is - I don't think you can port Unreal Engine, Unity or even Godot to GBA.

It's possible thanks to the ongoing work on no_std support for Bevy. This simplifies porting to other platforms.

 

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:

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:

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<DummyEvent>) {
    info!("received event {:?} from server", trigger.event());
}

Observers are so nice, I use them in my game a lot and not having them networked was quite limiting.

After a review from second maintainer I will merge it and draft a new release πŸ™‚

 

Bevy is a game engine written in Rust. It targets regular PCs, but thanks to it modularity, it's possible to port it to unusual platforms. These examples replaced the rendering with the one specific to GBA.

Post from @bushRAT in Discord:

Thanks to the ever growing support for no_std in Bevy, I'm now able to use Bevy on the GameBoy Advance! Using the current main branch (which will be included for 0.16!) you can use a crate like agb (and some boilerplate I'm hiding) to write GameBoy Advance games almost as easily as you would for any other Bevy platform. Systems, plugins, resources, queries, the gamepad input API, it all just works. See the attached ROM if you have a GameBoy Advance emulator handy, but I recommend the MGBA emulator as it can also show debug logs (yes, even all the logging just works)

Links to GBA files:

If you have a real GBA or an FPGA console, the author will appreciate if you try :)

Repository: https://github.com/bushrat011899/bevy_agb_test

view more: next β€Ί