I just updated Extreme Bevy, my tutorial series on how to create a low-latency p2p web (and native) game using matchbox and bevy_ggrs to Bevy 0.13.

And I also finished chapter 5, on procedural generation. It's starting to look like an actual game now :)

https://johanhelsing.studio/posts/extreme-bevy-5

#matchbox #ggrs #rustlang #bevyengine #gamedev

Extreme Bevy 5: Procedural generation

In this part, we'll explore how to seed a random number generator and use it to generate a map.

Johan Helsing Studio

bevy_matchbox and bevy_ggrs have been released, with Bevy 0.12 support.

bevy_ggrs in particular has some shiny new features:

- clone-based snapshotting (better perfomance)
- exchanging checksums across peers for desync detection
- checksumming foreign types (like Transform)

I've updated my "Extreme Bevy" p2p web game tutorial series to take advantage of them all. Including a new chapter on desync detection:
https://johanhelsing.studio/posts/extreme-bevy-desync-detection

#matchbox #ggrs #bevyengine #rustlang #gamedev

Extreme Bevy 3.5: Detecting Desyncs

In this part, we’ll look at how to be completely certain all of our players are seeing the exact same game state.

Johan Helsing Studio

After almost two years since part 3, I finished part 4 of the Extreme Bevy tutorial series. The series is about making a p2p rolllback web game with Bevy, GGRS and Matchbox.

Part 4 explains how to use states in a rollback safe way, and how to add a simple ui for scores

https://johanhelsing.studio/posts/extreme-bevy-4

#rustlang #gamedev #bevyengine #matchbox #ggrs

Extreme Bevy 4: Keeping score

In this part, we’ll be implementing respawning and adding a simple UI for keeping track of score.

Johan Helsing Studio

We just released bevy_matchbox 0.7, compatible with the latest Bevy release, and I updated my tutorial series on how to build a p2p multiplayer web game using rust, Bevy, ggrs and matchbox.

https://johanhelsing.studio/posts/extreme-bevy

#rustlang #bevyengine #gamedev #matchbox #ggrs

Extreme Bevy: Making a p2p web game with rust and rollback netcode

In my previous post, Introducing Matchbox, I explained how Matchbox solves the problem of setting up peer-to-peer connections in rust web assembly for implementing low-latency multiplayer web games. I said I'd start making games using it and I figured it's about time I make good on that promise, as well as write a tutorial while at it. I'll explain step-by-step how to use Bevy, GGRS, and Matchbox to recreate the old classic Extreme Violence by Simon Green with online p2p multiplayer using rollback netcode.

Johan Helsing Studio

Oh, and I've updated the Extreme Bevy tutorial series (How to make a p2p web game with rust and rollback netcode) to Bevy 0.10, bevy_ggrs 0.12... and it's using the new bevy_matchbox crate :)

#rustlang #gamedev #bevyengine #ggrs

https://johanhelsing.studio/posts/extreme-bevy

Extreme Bevy: Making a p2p web game with rust and rollback netcode

In my previous post, Introducing Matchbox, I explained how Matchbox solves the problem of setting up peer-to-peer connections in rust web assembly for implementing low-latency multiplayer web games. I said I'd start making games using it and I figured it's about time I make good on that promise, as well as write a tutorial while at it. I'll explain step-by-step how to use Bevy, GGRS, and Matchbox to recreate the old classic Extreme Violence by Simon Green with online p2p multiplayer using rollback netcode.

Johan Helsing Studio

I wrote a post about how I handled sound effects and rollback netcode in Cargo Space. Curious if anybody else have similar solutions?

https://johanhelsing.studio/posts/cargo-space-devlog-4

#cargospace #bevyengine #rustlang #gamedev #ggrs #cargospace

Cargo Space devlog #4 - Playing sound effects in a rollback world

I know there isn't supposed to be any sound in space, but I decided I didn't really care :) So I went ahead and added some sound effects to Cargo Space anyway... In this post, I describe the challenges with adding sound to a game with rollback-based netcode, and how I ended up solving them. I present my solution in detail so you could easily adapt it to your own rollback-based Bevy game.

Johan Helsing Studio

I just released Matchbox 0.5 (painless p2p networking for wasm)

Native-to-web cross-play is now finally supported :D And a nasty Firefox issue is also gone.

Here I'm dogfooding the feature in #cargospace starting a three player session between chrome, a native windows build and firefox on my phone (streamed back to my computer for capture).

Thanks, everyone who contributed!

#bevyengine #rustlang #ggrs #gamedev

Cargo Space devlog #3: Making a coop 2d space game with #bevyengine

This time: Finding non-determinism/desyncs with bevy_ggrs' synctest session, cross-platform p2p, trying out kayak_ui, setting up automated builds with xtask/gitlab-ci, cargo-deny.

https://johanhelsing.studio/posts/cargo-space-devlog-3

#cargospace #gamedev #indiedev #devlog #ggrs

Cargo Space devlog #3 - Sprites, de-syncs, cross-platform p2p, kayak_ui, cargo-deny

I drew a couple of sprites, added cross-platform multiplayer, added some ui using kayak_ui and fixed a lot of network-related bugs. Last time, I thought I would be able to take a break from the technical side. It turned out I was wrong. I had a lot of tough bugs, both with de-syncs, and NAT-traversal. I guess it’s one of those reasons why they tell you not to make a networked multiplayer game.

Johan Helsing Studio

Cargo Space devlog #2. Making a coop 2d space game. This time: using leafwing-input-manager with bevy_ggrs, rollback networking and debugging non-determinism, 2d platforming on moving ships.

https://johanhelsing.studio/posts/cargo-space-devlog-2

#gamedev #indiedev #cargospace #devlog #ggrs #bevyengine #rustlang

Cargo Space devlog #2 - ship physics, networking, input

Cargo Space, my coop 2d space game prototype is chugging along. Since last time, I’ve added physics to ship modules, thrusters, terminals, and peer-to-peer multiplayer. In this post I’ll go through the challenges I encountered and how I solved them. And some challenges I solved that I didn’t really need to solve…

Johan Helsing Studio

#introduction time :)

Hi all! I'm a (semi-)independent #gamedev, also making open-source tools, libraries and tutorials, focused around #rustlang and #bevyengine.

I made #matchbox, a rust crate for easily making p2p connections on web and native. I wrote "extreme bevy", a tutorial series for how make a game with it, Bevy and #ggrs that I try to keep up-to-date with new bevy releases.

I also maintain a handful of Bevy plugins: bevy_pancam, bevy_smud, noisy_bevy, bevy_pkv, bevy_web_asset, ++