Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Architecture Postmortem: Maintaining 1:1 240Hz Physics & Zero-Sample Audio Parity across WebGL 2, Godot 4.7.2 & Unity 6 (OBOL)

A topic by ANKH Studio created 3 days ago Views: 489
Viewing posts 1 to 1

OBOL 3-Engine Architecture Showcase

Hey fellow game developers!

For OBOL: The Cursed Coin Pusher, we took on an unusual engineering challenge: shipping the exact same 1890s occult coin-pusher roguelike with 1:1 deterministic physics, camera, shader, and procedural audio parity across three engines: Three.js WebGL 2, Godot 4.7.2 (Vulkan Forward+), and Unity 6 (URP + PhysX).

1. Solving Multi-Layer Coin Stacking at 240Hz (dt = 1/240s)

At standard 60Hz, a reciprocating hydraulic shelf shoving 85+ overlapping cylinder tokens against a back stopper wall causes severe Baumgarte popcorning and tunneling. By stepping all three physics engines at a fixed 240Hz substep (Time.fixedDeltaTime = 1f/240f in Unity 6; physics_ticks_per_second = 240 in Godot 4.7; 4x substep impulse solver in WebGL 2) with 3-layer overburden friction damping, coins hang up to 55% over the front brass lip before cascading.

2. 25-Category Zero-Sample Circular Plate Modal Synthesizer

Instead of bundling megabytes of static .wav files that comb-filter during 40-coin avalanches, we synthesize all 25 metallic & mechanical foley categories in real time using 4-mode Chladni circular plate eigenfrequencies (f0 * [1.00, 2.14, 3.41, 4.92]) routed through an iron-booth convolution impulse response.

Live Builds & Technical Breakdown

Which engine stack are you targeting for your current project, and how do you handle deterministic physics across web and desktop builds?