Game audio basics for a small 2D game, from sources to code
Game audio basics for small 2D games: where to find sound effects, licences to check, mixing levels, pitch variation, music loops and playing sound in Rust.
by Felicity Marrable
A reading room for people who build games close to the code. How small engines are put together, Rust patterns that survive a real game loop, wgpu and shaders explained from the first triangle, pixel art that reads at a glance, and the checklists between a jam prototype and a release.
Fixed updates, variable rendering, and a little interpolation to hide the seams. The full walkthrough explains each line.
use std::time::{Duration, Instant};
const STEP: Duration = Duration::from_millis(16);
fn main() {
let mut world = World::new();
let mut last = Instant::now();
let mut lag = Duration::ZERO;
loop {
lag += last.elapsed();
last = Instant::now();
while lag >= STEP {
world.update(STEP.as_secs_f32()); // the same tick on every machine
lag -= STEP;
}
world.draw(lag.as_secs_f32() / STEP.as_secs_f32());
}
}Game audio basics for small 2D games: where to find sound effects, licences to check, mixing levels, pitch variation, music loops and playing sound in Rust.
by Felicity Marrable
How to release an indie game on Steam, step by step: the Steam Direct fee, when to open the store page, wishlists, builds and depots, review, and launch day.
by Felicity Marrable
How to scope a game jam entry you can actually finish: an hour-by-hour plan, what to cut first, the order to polish in, and how to submit without panic.
by Felicity Marrable
How to ship a Rust game to the browser: the wasm32 target, WebGL2 or WebGPU, audio that waits for a click, async asset loading, file size and itch.io uploads.
by Kasimir Lund
How to paint a pixel art background with depth: value and saturation by layer, tileable strips, a parallax factor table and parallax scrolling code.
by Jun Takemura
Designing a pixel art character that reads at 16x16 and 32x32: silhouette, palette ramps, idle and walk cycles, facing directions and a sheet layout.
by Jun Takemura