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

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

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!

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

I just released bevy_trauma_shake on crates.io. It's a super-simple 2d camera shake plugin for Bevy. The goal is minimal amount of config to get started. Simply add a `Shake` component to your camera entity and use `shakes.add_trauma(0.2)` to start shaking.

It modifies the Transform in PostUpdate and restores it in PreUpdate, to stay out of the way for your other camera logic.

https://github.com/johanhelsing/bevy_trauma_shake

#bevyengine #rustlang #gamedev

GitHub - johanhelsing/bevy_trauma_shake: A Bevy plugin for shaking 2d cameras

A Bevy plugin for shaking 2d cameras. Contribute to johanhelsing/bevy_trauma_shake development by creating an account on GitHub.

GitHub

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

Bevy 0.12 is out now!

It features Deferred Rendering, Bevy Asset V2, PCF Shadow Filtering, Light Transmission, Material Extensions, Rusty Shader Imports, Suspend/Resume on Android, Automatic Batching / Instancing, Renderer Optimizations, One Shot Systems, UI Materials, and more!

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

Bevy 0.12

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