Show HN: I Built Multiplayer Deathmatch Joust
joust.life
joust.life
Over the weekend, I brought it up to date a bit and introduced it to Socket.io. Thus far it hasn't seen more than a dozen players at a time, so I'm curious to see what happens when a bunch of folks jump in at once.
I'll stick around to answer questions (and likely post-mortem the bits that catch on fire).
I was a bit confused about how to fight, before checking the wikipedia page
It would be nice if you could change the scaling to use nearest neighbour on the players so they don't look all smooged,
img {
image-rendering: pixelated;
}
Lop that off (or uncheck it in dev tools) and you can have things as blurry as you please.There are many other methods, some are more precise and compressible than others:
Trailing State Synchronization
https://www.cs.ubc.ca/~krasic/cpsc538a/summaries/38/
Basic ideas
https://www.gafferongames.com/post/state_synchronization/
https://engineering.monstar-lab.com/2021/02/09/Game-server-S...
https://www.gabrielgambetta.com/client-side-prediction-serve...
I tried only sending updates every 3rd tick, but even there I could notice the difference.
You're right that it'd be worth experimenting with sending keystrokes instead, and backing off the full resync to once/second or so.
I remember making a CGI (that's an ancient, simple server backend for the young-ins) IM chat in 1996. It used the keep connection open trick present in HTTP 1.0 and a tiny bit of Netscape JS.
The game gets increasingly jittery as it gets busier. It might be worth writing some tests to simulate lots of players moving around so it's easier to tune the performance.
I imagine today I would have built the whole thing in canvas. But it's cool how quick you can get something up and running if you let the browser do most of the work.
I had to change them to 6% to comfortably play this game.
I just thought I had my speakers too loud :)
You can also iterate between Space + Up + W keys to boost your jumps.
Found Tyrian a few years back.
Error
--
We encountered an error when trying to load your application and your page could not be served. Check the logs for your application in the App Platform dashboard.
The whole thing is running on a $5 Digital Ocean Apps server (well, two actually, one in New York, one in Frankfurt so that I can get low latency here in France), so it's amazing that it survived as long as it did.
Had I known it was going to get this much love, I would have spun up a dozen more servers.
A suggestion: when you kill someone, you receive the points that they had (min 1). Have each player's point total hover around their sprite. This would set a higher bounty on the better/luckier players and balance the gameplay a little.
Bug report: Me and another player happened to spawn on the same spot, locking us in place and producing a satanic screeching sound.
Other than that, great mechanics!
Fortunately, Portland got one at Ground Kontrol not long after. It was a lot of fun recruiting new people to try and fill in all 10 spots. It was pretty funny when a snail win got close and people started chanting “snail! Snail! Snail!”
I tried a tournament and had less fun. The game needed balancing and it took some time to get out there.
Still, very cool it evolved from a physical game.
Iirc, some valley-based startups bought some of the original cabinets. Anyone know which?
I just played on my pc and the only issue I encountered was a noticeable amount of lag.
I'm a little disappointed the sound effects of the feet are missing - that was one of my favorite things about Joust.
I have the footstep sounds ready to go, but I found that I really needed to limit what sounds I played because they get overwhelming pretty quickly. There's now a pretty tight radius to the player for what gets played.
First cut was to have all 200 players' flapping sounds audible to everybody. That was suboptimal...
> We encountered an error when trying to load your application and your page could not be served. Check the logs for your application in the App Platform dashboard.
I'll have to link this to my Dad so that we can have a quick deathmatch!
/. atleast earned the right to coin the term.
edit: after closing the tab they stopped.
[0] https://champ.games/downloads ("RobotWar 2684", Games in Progress section)