Shatur

joined 3 years ago
MODERATOR OF
 

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

 

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

 

For the past few days, I've been working on the ultimate quick-start guide for bevy_replicon.

It now contains much more information, including details on how to write a messaging backend or implement client-side prediction. My talk at the last Bevy meetup helped me with this. Any feedback is appreciated πŸ™‚

 

Some people steal games from itch.io, add some AI crap to them, and put them on console stores.

 

Previously, I used a special ClientId type to refer to connected clients and stored their data in several resources.

I wasn't satisfied with this API and decided to try turning them into entities. Now, Entity is the identifier, and components store related data. I'm quite happy with the results, but waiting for a review from the second maintainer: https://github.com/projectharmonia/bevy_replicon/pull/423

If you have any suggestions or ideas, feel free to comment πŸ™‚

Just preparing the crate to the upcoming talk at Bevy Meetup #9. Still in a break from actual game development.

5
NESFab (pubby.games)
 

It's a virtual meetup about Bevy, and I will be one of the speakers!

My topic will be Networking in Bevy with ECS replication, where I'll talk about bevy_replicon and networking in general.

I'm currently focused on crates that I use in the game, just to take a small break from the project. But I hope to get back to it soon :)

11
Bevy Meetup #9 (www.meetup.com)
 

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 5 months 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 5 months ago* (last edited 5 months ago)

Sims

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

[–] Shatur@lemmy.ml 5 points 5 months ago* (last edited 5 months ago) (1 children)

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 5 months 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 5 months ago (1 children)

Never heard about it, but looks cool!

[–] Shatur@lemmy.ml 3 points 5 months ago

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

[–] Shatur@lemmy.ml 2 points 5 months ago* (last edited 5 months 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 5 months 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 5 months ago (1 children)

How do the buttons feel?

[–] Shatur@lemmy.ml 5 points 5 months 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.

[–] Shatur@lemmy.ml 1 points 5 months 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 5 months 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.

view more: β€Ή prev next β€Ί