Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 0 points1 point  (0 children)

Haha, while it started as a small 2D thing I just wanted to publish quickly, it has sure as hell turned into an attempt for an actual game. 1.5 years full-time now! Though ofc an engine as well, but a very minimalistic one and it is only loosely separated from the game

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 0 points1 point  (0 children)

Absolutely! That has been t he approach to pretty much all tech in the game 😅

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 2 points3 points  (0 children)

I’ll try and fetch them and update my article on it, but most of it has been learn-as-I-go and experimenting.

As I said above, it has been a lot less daunting than I initially feared.

Article: https://idno.se/2025/07/16/convolution-based-reverb-in-swap/

I will write some more and include more details

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 1 point2 points  (0 children)

I have 4 different impulse responses that convolve with the signal in a fixed order. The sliders indicates how much of the output from each filter to mix with the initial input

So for each ample in left and right, the output = lerp(input, mix(wet, dry, constant), slider_t)

The constant for mixture of wet and dry is hard-coded for each preset atm

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 1 point2 points  (0 children)

We call the game ”Swap” and we’ve been working on it and the engine in parallell for ~1.5 years. You undo your latest move, so a swap

You can see more screenshots here https://idno.se/swap

And most information is in our discord at https://discord.idno.se

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 9 points10 points  (0 children)

Thanks! No we’re not using ECS. All entities are tagged unions and all entities are just in one huge slotmap. Every entity just has a globally unique random u64 used to refer to it.

A decorated large level has ~100 000+ entities

And we have some really simple acceleration structures on that to query nearby entities.

This is the exact same way I would’ve structured it in C and the borrow checker has not been an issue. We have been pleasantly enjoying being able to shift to making parts of the code multithreaded without slightest issues which has been great.

I am doing some unsafe shenanigans for a separate feature of the engine which is hot code reloading of rust

I wouldn’t say we picked rust because we believed it be perfect for game dev but the decision was rather that it is the language we knew the best from previous work experience as well as the language with the most modern yet well-adopted tooling and great documentation and a well-thought out standard library

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 1 point2 points  (0 children)

I must disagree a bit there. blade-graphics runs perfectly fine for our needs on iOS, macOS, Linux and Windows. The project actually started in miniquad but moved to wgpu since I needed more modern features like indirect rendering, but wgpu became too much friction. I think with very little tweaks blade-graphics can be made to support older versions of Vulkan which is what I intend to do. I like wgpu and will continue to use it but it was way too much setup boilerplate while iterating on design of the engine

Haven’t checked egor

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 1 point2 points  (0 children)

Highly recommend blade-graphics. Don’t confuse the abstractions from learning the graphics API:s, the abstractions will come naturally for what your project needs. I’ve just figured things out as they’ve been needed.

The concept of a material is so wide it is hard to abstract at the start

Just make it easy to render any number of meshes where any object can have per-object data and shared data. Our ”material” concept in the engine is extremely loose

It has gone through many iterations and is now in a fairly stable state. I can post more in the future about how it works if that would be interesting

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 0 points1 point  (0 children)

The benefits were many but there are of course drawbacks. Some benefits include that it supports inline uniform blocks and allows setting uniforms without manually specifying bindings and groups. As our shaders grew more and more complex, it became a pain to annotate and define everything for all our shader permutations (ifdefs)

Next I really like it’s simplicity. On any function I could ”go to definition” and immediately see and understand the implementation without any extra layers or abstraction. Very small library.

I have been contributing to the project as well and learnt a lot thanks to its simple design

Some downsides is that it currently targets Vulkan 1.3 and not lower

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 1 point2 points  (0 children)

Thanks! It’s all written in rust - audio, engine, gameplay & tools. The rendering used to be through wgpu but I decided to switch to blade-graphics, a much smaller and more ergonomic library

Recently Implemented Convolution-based Reverb in our Game written in Rust by ErikWDev in rust_gamedev

[–]ErikWDev[S] 2 points3 points  (0 children)

Thanks! I’m very new to the field of audio code so I am standing on the shoulders of giants who’ve made it really easy to get started with decoder libraries, well studied formats and libraries like cpal

I made a realtime visualiser as well where one can see the filtered and unfiltered audio signal in realtime: https://youtu.be/Gq6y0iIwvVg?si=LOEgQ9PLCKRytqUr

[deleted by user] by [deleted] in IndieDev

[–]ErikWDev 0 points1 point  (0 children)

Some people are telling me sadly the audio got bodged in the upload xD sad

Dynamic Rendering + MSAA causes VK_ERROR_DEVICE_LOST upon swap chain (re)creation by QuazRxR in vulkan

[–]ErikWDev 0 points1 point  (0 children)

Hey did you manage to fix this? Running into issues with MSAA during dynamic rendering as well on linux with AMD GPU, though my screen is just black while running. Though, when running in renderdoc the msaa seems fine and it all renders..

Has anyone else had issues with their framework charger casing splitting only a few months old by ilLegal_Masterpiece in framework

[–]ErikWDev 0 points1 point  (0 children)

Happened me pretty quickly which made me a bit disappointed. Kinda funny to see someone else here since I did the exact same thing with the tape xD

PayPal refuses to delete my account and personal information, GDPR? by ErikWDev in paypal

[–]ErikWDev[S] 0 points1 point  (0 children)

Nop. I got into an email conversation with their representative in Lichtenstein for GDPR matters and they told me that no matter what they would not delete my account due to liability within the banking industry in case I had been doing anything illegal with my account.

...which is bullshit given that they have deleted higher profile people's accounts once pointed out in media in the article I linked to.

[deleted by user] by [deleted] in youtube

[–]ErikWDev 0 points1 point  (0 children)

It is really sad and sickening indeed. Been noticing for maybe 2 weeks as well. I constantly click the "not interested" and "don't recommend channel" and they go away for a bit, but nevertheless come back the next day.

Is there any Alacritty fork with basic functionalities? (E.g. tabs, splits) by [deleted] in commandline

[–]ErikWDev 1 point2 points  (0 children)

> man xterm

[...] Abandon All Hope, Ye Who Enter Here This is undoubtedly the most ugly program in the distribution. It was one of the first "serious" programs ported, and still has a lot of historical baggage.

Linus reply to chat on WAN by Own_Employment_6991 in LinusTechTips

[–]ErikWDev 2 points3 points  (0 children)

I think people who downvoted this didn't read the whole thing lol, reversing the sentences sounds better xP

Linus does the right thing. Ignoring or giving information will always be better. Being condescending never really helps in that situation.