const onResize = () => {
const { innerWidth: w, innerHeight: h } = window
camera.aspect = w / h
camera.updateProjectionMatrix()
renderer.setSize(w, h)
}
window.addEventListener('resize', onResize)so here's the github link to click on from HN: https://github.com/brianrisk/SYNTHBLAST
Also, maybe have the music fade in so I have a chance to save my ears. "Blast" indeed. :)
The sound is very reminiscent of the old video game arcades. Just about every game cabinet was pumping out some soundtrack and game sounds like this, so the entire place had a certain acoustic character which was very unique. I'd hate it now with my older sensitive ears, but as a kid it was a siren song.
And this isn't an arcade. It's a web page. It's a common courtesy to people visiting web pages to not get immediately blasted with sound at the high end of the range.
Maybe I'll use your code as a baseline for it if I get the motivation.
In terms of actual feedback, the game itself has a lot going for it. I would, at the very least, add some 'juice' to it, which would probably add a lot. There are many videos on it but the most enlightening one I found was from Nijman of Vlambeer [1].
You might need to take care with literal screenshake as it's 3d but there are many other suggestions that are relevant (kick back from firing, enemy blood/armor splatter, detritus persistence, small variations in bullet direction, etc.).
This plus the macos app Plash makes for a sweet desktop wallpaper.
Better yet, check this article and implement some really high quality texture filtering: https://bgolus.medium.com/sharper-mipmapping-using-shader-ba...
- Maybe a warning for tanks behind you? Felt overwhelming at times
- Maybe top down tile one level sooner?
- In top down mode maybe larger bullets
There was something sort of terrifying about the enemy tanks. Maybe a minimap would help with this, but I almost got Slenderman vibes when I would turn around and see a tank right there in front of my face. Got my heartrate going.