johan helsing.studio

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.

More →

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.

More →

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...

More →

Cargo Space - devlog #1

I've been working on Cargo Space, my space game prototype, for a couple of weeks now, and I wanted to share the progress I've made so far... and some yak's I've shaved along the way.

More →

I started working on a new project, again, but this time, I really feel like it’s something I’d like to finish. So I’ll do something I rarely do, I’ll talk about my plans and goals for the project before I start. I’m hoping this will help me feel accountable for what I do, stay focused, and avoid excessive amounts of yak shaving.

More →

I'm happy to announce that Matchbox 0.4 has finally been released on crates.io. Matchbox is a solution for painless peer-to-peer networking in rust web assembly.

More →

dice another day - jam devlog

Dice Another Day is a game I made for GMTK Game Jam 2022. It’s a puzzle game where dice are missing pips and you roll them around and try assemble the right pattern. In this post, I’ll go through its development, both tech and design-wise.

More →

evaporate - devlog and post mortem

evaporate is a game I made for Ludum Dare 50. It's a first-person 3d game where you encounter a camel-obsessed snowman, in the middle of a desert... And you try to help him survive. This is a devlog and a post-mortem, with source code included.

More →

Making Dis order - post-mortem and reflections on Bevy

I made a jame game, Dis order, for Mini Jam 100 using the Bevy game engine, I thought I'd share some thoughts on the experience.

More →

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.

More →

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.

More →

This is a brief and opinionated step-by-step guide for how to get VR working in a new Unity project.

More →

Introducing Matchbox

I'm very happy to announce the Matchbox project. A solution for painless peer-to-peer networking in rust web assembly.

More →

Dead Heroes Don't Cry Released for Android

I just finished up the last fixes for the Android version of Dead Heroes Don't Cry, and it's finally available on Google Play.

More →

Cmyk Zero

I made puzzle game about subtractive color blending. It's available online at itch.io.

More →

UniRx observable reference

UniRx is a great reactive programming library for Unity. However, I found it a bit difficult to write a clean reusable and decoupled user interface, so I wrote a small add-on library for UniRX which I think solves the problem quite nicely.

More →

Automatically building and deploying Unity applications to itch.io

When doing game jams, you can easily waste a lot of time fixing one bug, manually build for four or more platforms, upload each to itch only to find there is another critical bug and you have to start all over again. In this post, I'll explain how to set up continuous deployment so all of this will be done automatically when you push to your git master branch.

More →

Making Universal Render Pipeline Look Decent

In this tutorial, I'll start with an empty project/scene, add a couple of basic objects, make sure we're using the univeral render pipeline and step by step go from quite underwhelming to decent.

More →

Unity has released a lot of news lately about new graphics pipelines in Unity, and it isn't always obvious which one you should choose. While Unity likes to brag about the benefits of each pipeline, they don't really do a good job about explaining the limitations.

More →