How I built it:
I built the whole thing with the Rive CLI. The scene is written in RML (view model, data binding and state machines), the game logic runs in Luau scripts (a Director for the story, camera and rules, and a script for the ghosts and pumpkins), and the torch, the fog banks, the rain and the ground mist are WGSL shaders on the GPU Canvas.