Skip to content

Instantly share code, notes, and snippets.

View erlend-sh's full-sized avatar
🐠
Working on Fish Folk

Erlend Sogge Heggen erlend-sh

🐠
Working on Fish Folk
View GitHub Profile
@erlend-sh
erlend-sh / weird-generator.md
Created May 5, 2023 01:39
Weird webpage generator
@erlend-sh
erlend-sh / legendofworlds2.md
Created February 25, 2023 10:11
Dev Log 2 - Core Engine

Legend of Worlds

⚔️ Salutations fellow legends! ⚔️

Wow! Time has passed quickly since our last blog post, however, much progress has been made! Today, we're going to go over the technical aspects of the core engine for Legend of Worlds and what has been accomplished so far. The core of the engine has been completed, and now we are at the point where we can focus on gameplay and world creation logic!

Legend of Worlds is a cross-platform, cross-play, 2D online sandbox multiplayer experience where you can join, play, create and share player created worlds. This blog post covers the open-source game engine I've created in order to build this game.

The Problem

In the last post, we discussed the benefits of Rust and WebAssembly in our game engine architecture. Rust gave us many benefits, but one issue it gave us was long compile times, depending on the more code and libraries we jammed into one module. This was getting to be a problem, as a Rust project starts off on my machine as a few seconds to compile

@erlend-sh
erlend-sh / cargodev5.md
Last active February 10, 2023 09:08
Cargo Space devlog #5 - Adventures in physics engine development with bevy_ecs

Cargo Space devlog #5 - Adventures in physics engine development with bevy_ecs

I started filling in the gaps in my home-made physics implementation. In this post I go painstakingly detailed about my adventures in implementing one-way platforms and prematurely optimizing broadphase collision detection. Bonus yak-shaving sections on bevy_screen_diagnostics, and bevy_sparse_grid_2d

Ignore common sense and make a physics engine?

Why on earth am I making a physics engine when there is Rapier?

As I've now experienced first hand, and we'll see in the rest of this post, making physics can be a deep rabbit hole, with so many yaks to shave you never get out.

@erlend-sh
erlend-sh / spicy-lobster-open-gamedev-company.md
Created January 21, 2023 02:30
Spicy Lobster (Open Gamedev) Company

Spicy Lobster (Open Gamedev) Company - Fish Folk: Jumpy by Spicy Lobster

[Posted 22. February 2022] [Author: Erlend]

Our 🌶Spicy 🦞Lobster studio venture is among the first of what we hope will become a common type of company, designed first and foremost to Do Good by means of radical openness.

Good Game Development

@erlend-sh
erlend-sh / cargo-space-devlog-3.md
Created January 18, 2023 22:31
Cargo Space devlog #3 - Sprites, de-syncs, cross-platform p2p, kayak_ui, cargo-deny

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

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.

Debugging de-syncs with GGRS’ synctest session

Last time I thought I’d managed to get a completely deterministic simulation. As I tested more thoroughly with friends over the internet, that turned out not to be the case. After a long time of playing, positions of players and the ship would go slightly out of sync.

I’d run out of obvious non-determinism bugs to fix (

@erlend-sh
erlend-sh / soundshandling.md
Last active December 13, 2022 15:50
Handling Sounds During Rollbacks

"How I Didn't Clip the Sound Effects" Redux - Handling Sounds During Rollbacks Handling sound effects during rollbacks is a difficult problem!

Now that all the issues with sounds-during-rollbacks are resolved in Skullgirls, I'm gonna document what I did so that everyone else doesn't have to figure it out from scratch.

The title is a reference to Mauve's now-deleted article about Rollcaster, titled "How I didn't clip the sound effects" (archive.org) which is incomprehensible. I feel okay saying this because when I started working on sounds-in-rollbacks I talked to Mauve, who said, and I quote, "This is incomprehensible, why did I write it like this?" :^)

Now, I lied - handling sound effects during rollbacks is fairly simple. You just have to have someone else think about it for a long time first to come up with the simple way. :^P

Many systems in games, like well-written menus or even the characters in FPSes(!), sometimes work by keeping two states: a "desired" state, and an "actual" (or "displayed")

@erlend-sh
erlend-sh / architecture.md
Created December 6, 2022 21:01
Planck ECS introductory docs

Planck ECS: A Minimalistic Yet Performant Entity-Component-System Library

If you already know what an ECS is, jump to the "Comparison With Other ECS" section.

The title is a lie. In reality, this is an Entity-Component-Resource-System library.

First, let's start at the beginning. What is an ECS you ask?

Event Chaining as a Decoupling Method in Entity-Component-System
Joël Lupien (Jojolepro, jojolepro@jojolepro.com)
https://patreon.com/jojolepro
================================================================================
Context
================================================================================
In game engines, we often have a lot of dependencies between modules.
For example, the user interface often depends on the renderer, window and
@erlend-sh
erlend-sh / amethyst-september
Created October 2, 2019 10:20
Amethyst september update
### Amethyst
**TODO**: **_ping @erlend-sh!_**
### Amethyst tooling
- Amethyst Engine v0.13 was released. A new `amethyst_tiles` crate was added and the Pong tutorial is now complete with the addition of an audio section.
https://github.com/amethyst/amethyst/releases/tag/v0.13.0
https://book.amethyst.rs/stable/pong-tutorial/pong-tutorial-06.html
### Keybase proof
I hereby claim:
* I am erlend-sh on github.
* I am erlend_sh (https://keybase.io/erlend_sh) on keybase.
* I have a public key ASANSV_y13B_rLvgFpB25kwGFy6JWqoZktFT72DBJ1en5Qo
To claim this, I am signing this object: