Johan Helsing

@johanhelsing
268 Followers
118 Following
69 Posts

Game development, rust and open source.

I'm currently working on Cargo Space, a 2D coop space game made using the Bevy game engine.

I post about its development and the various tools I make, use or improve along the way.

bloghttps://johanhelsing.studio
githubhttps://github.com/johanhelsing
itchhttps://jhelsing.itch.io
discord serverhttps://discord.gg/ye9UDNvqQD

Most of the Bevy crates I maintain have now been updated for 0.16. I ended up making a graph to track what needed to be done first, including dependencies I was waiting for

- bevy_matchbox: direct p2p, including web
- bevy_ggrs: p2p rollback
- bevy_pancam: map-like cameras
- bevy_trauma_shake: camera shake
- noisy_bevy: cpu/gpu noise
- bevy_pkv: persistent key value store
- bevy_web_asset: http assets
- bevy_roll_safe
- bevy_sparse_grid_2d
- bevy_crossbeam_event

#bevyengine #rustlang #gamedev

@mo8it @emerald a bit out of the loop lately, but a couple of months back, bevy_xpbd was not sufficiently deterministic to do deterministic rollback. Maybe you'd have some luck with server authoritative and state synchronisation, but it's not really my thing.

I just finished porting my extreme bevy tutorial series to Bevy 0.14 (how to make a p2p multiplayer web game).

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

That finally concludes this version's porting work for me, the following crates are now bevy 0.14 compatible:

bevy_matchbox
bevy_pancam
bevy_roll_safe
bevy_smud
bevy_pkv
bevy_web_asset
bevy_trauma_shake
bevy_lospec
bevy_crossbeam_event
bevy_sparse_grid_2d
noisy_bevy

Let me know if I missed a crate you care about.

#bevyengine #rustlang #gamedev #matchbox

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
@devlike
Thanks! I like explicit ordering with ambiguities set to errors because it forces you to think about the relationships between the systems, so you avoid 1-frame delays and similar. Otherwise, you might easily miss some of these interactions, like: Should the bullet move before checking collision, or other way around?

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

I just released matchbox and bevy_matchbox 0.9.

It's a solution for painless peer-to-peer WebRTC networking for rust wasm (and native).

New in this release is Bevy 0.13 support.

https://github.com/johanhelsing/matchbox

#matchbox #bevyengine #rustlang #gamedev

GitHub - johanhelsing/matchbox: Painless peer-to-peer WebRTC networking for rust wasm (and native!)

Painless peer-to-peer WebRTC networking for rust wasm (and native!) - johanhelsing/matchbox

GitHub

#Bevy 0.13 is out now!

It features Lightmaps, Irradiance Volumes, Approximate Indirect Specular Occlusion, Reflection Probes, Primitive Shapes, ECS System Stepping, Dynamic Queries, Inferred Command Flushes, 2D Nine-Patch, Camera-Driven UI, and more!

https://bevyengine.org/news/bevy-0-13/

Bevy 0.13

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

@erin_catto really interesting watch, and great reference for comparing solvers. I'm a bit surprised xpbd did so poorly. I've been dabbling a bit with it, and i was also struggling a lot with friction...

I'm also wondering how the performance with the different solvers are? If one is cheaper maybe you could afford to do additional substeps or iterations?

Recently I started a side project called Solver2D https://github.com/erincatto/solver2d. The idea is to create a platform for prototyping and comparing many different 2D rigid body solvers. So far there are 8 solvers including PGS, TGS, NGS, and XPBD. I've created many tests that push these solvers to their limits. Read about it here https://box2d.org/posts/2024/02/solver2d/ and see the solvers compared here https://www.youtube.com/watch?v=sKHf_o_UCzI
GitHub - erincatto/solver2d: A project for testing rigid body solver algorithms

A project for testing rigid body solver algorithms - GitHub - erincatto/solver2d: A project for testing rigid body solver algorithms

GitHub

I am following this fantastic #XPBD tutorial in #Bevy by @johanhelsing and I highly recommend it after learning some of the basics of Bevy 😍

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

The tutorial isn't complete yet, but the first 6 parts are already a lot of material!

The attached GIF is the result of the first part ✨

@johanhelsing thank you for this treasure 🥰

PS: I know there is the physics library bevy_xpbd, but I want to implement XPBD from scratch for learning :D

#RustLang #Rust

Tutorial: Making a physics engine with Bevy

In a sudden and ambitious outburst of not-invented-here syndrome combined with hype-train, I decided there weren't enough physics engines out there and it would be a good idea to write one myself using all the latest buzzwords. In this tutorial series, I'll explain step-by-step how to build an extended position-based dynamics (XPBD) rigid-body physics engine using entity component system (ECS) architecture in rust.

Johan Helsing Studio