5 ms·
Show HN: Powderkeg, a realtime, synchronous, multiplayer HTML5 action game
- statico 14y agoIf the game doesn't load in Chrome, try using an incognito window since you're probably a Ghostery user. (Sorry, I swear I had fixed that...)
- richtaur 14y agoCongrats you guys :-)
- SeanDav 14y agoVery cute little game. Quite laggy for me. I used Chrome. Also please add Computer players at some point.
- Liongadev 14y agoExtremly lagging. Let me guess, Node.js?
- statico 14y agoTCP. If you mouseover the tiny, hard-to-see lag meter in your colored square while playing a game you'll be able to see some stats about your connection.
- kzahel 14y agoI love this game. It is a themed copy of Hudson Soft's Bomberman game that I originally played on the SNES. The creators have a blog entry about latency and websockets. With even a minimal amount of packetloss, TCP makes for really bad latency - http://blog.artillery.com/2012/06/websocket-performance.html http://blog.artillery.com/2012/06/websocket-performance.html It's too bad we won't see any playable twitch games in the browser until there is some way to do UDP. I don't see why browsers don't just allow UDP subject to same origin policy, perhaps only on pages which serve a special "X-Allow-UDP" header. From what I understand, the only reason browsers shy away from being able to send UDP packets is fear of DDOS. This does not seem to be an issue if packets are only sent to same host that the page is served from.
- kzahel 14y agoA similar game, http://bombermine.ru/ http://bombermine.ru/, that seems to handle the latency/synchronization in a friendlier way. (found on http://blog.artillery.com/2012/07/six-impossible-problems.html http://blog.artillery.com/2012/07/six-impossible-problems.ht...)
- cykod 14y agoWebRTC allows for general UDP packets (in the spec at least - haven't tried it in Chrome stable) so hopefully this will be a workable solution as it gets more support.
- kzahel 14y ago"The Data Channel API is not implemented and its implementation is being discussed in the standards committee" http://www.webrtc.org/faq-recent-topics http://www.webrtc.org/faq-recent-topics WebRTC is currently some weird wrapper around ICE and nat traversal protocols, not something that seems useful for sending generic javascript-land ArrayBuffers or similar.
- zackmorris 14y agoYa this appears to be the achilles heal of WebRTC and I was extremely disappointed (but not surprised) to hear that they chose to go this route of splitting data and media instead of layering media on top of data. All I can think of is that there might be pressure from media companies and ISPs to block the media or data components. This has happened before - we have UDP and TCP as independent protocols instead of having TCP built on UDP. This created the mess with firewalls and NAT that we have to live with today.
- kzahel 14y agouTP (micro transport protocol) is a TCP implementation based on UDP. Used by the majority of BitTorrent clients. It seems to work pretty well. It's interesting that you think TCP was a bad idea. Do you have any sources or reading material that you can share?
- rlp 14y agoI didn't have any lag. That was fun, kind of like Bomberman. Nice job!
- lrem 14y agoWould you consider adding on screen controls for tablet users? I'd guess this kind of thing is a better fit for mobile than desktop, but is unusable as is under Android Chrome.
- hayksaakian 14y agoRuns like ass on my nexus 7 and galaxy nexus
- fourmii 14y agoI just went on and played against someone called G...Maybe from HN? Anyway, fun game, pretty slick. I'm loving the stuff people are doing with HTML5. Well done!
- Ohadr 14y agoGreat game, well done! Expecting inevitable new features - Facebook integration, leaderboards, powerups, chat, AI.... Good luck
- n-gauge 14y agoLooks great! would you be supporting full screen support for 1366 x 768 (with no scrollbars)?
- nulluk 14y agoReally well done & polished. Had a few moments where the lag made it unbearable but besides that it works as expected.
- spindritf 14y agoIt gets laggy sometimes and forgets the name you chose (changes it to a color). Still very cool.
- lrm242 14y agoThis is a great little game. Just played a few rounds and had a blast but hit some nasty lag a few times. The basic game play is quite addictive. Nice job.
- catshirt 14y agoi have to ask... pun intended? i used the same wording originally, but revised after i realized what i'd said.
- witoldc 14y agoThat is amazing. That said, after the first game it was very laggy.
- kin 14y agoBomberman! This is a well done clone. I wish it were a bit smoother. I died because of the lag.
- avi_e 14y agoI'm getting these errors in Chrome (v. 22.0.1229.79 m): Unexpected response code: 404 :1 Channel error 'BROWSER_WS_ERROR': 'undefined' __runtime.js:1 Channel 0 closed. __runtime.js:1
- statico 14y agoThanks for the kind words and helpful feedback everyone! We appreciate it! If you're still having trouble with Chrome or Firefox, please reply below with your browser and version, and possibly with a gist/pastebin of any console errors. Mark and I will get on it. Regarding the lag: We match you with players based on your latency to each gameserver and the amount of time you've been waiting. If you experienced a lot of lag earlier, it might have been due to there being too few players online. However, 196 people are playing as I type this now, and hopefully there's now enough player density so you'll get matched with a lower-latency player who's nearby. You can read more on our blog post: http://blog.artillery.com/2012/10/play-powderkeg-html5-multiplayer.html http://blog.artillery.com/2012/10/play-powderkeg-html5-multi... We're also on VentureBeat today: http://venturebeat.com/2012/10/04/artillery-aims-to-make-web-browsers-into-game-consoles-exclusive/ http://venturebeat.com/2012/10/04/artillery-aims-to-make-web... Also, I'd like to thank our amazing artist, Adam deGrandis. Check out his portfolio — he's incredible: http://www.adamdegrandis.com/portfolio/ http://www.adamdegrandis.com/portfolio/ <3
- mrgreenfur 14y agoSweet game! It's a remake/rip of Bomberman, which is totally awesome because Bomberman is the best game ever.
- catshirt 14y agowow thank you for this. haven't thought about bomberman in years and within 5 seconds i was having a great time. lag issues ("waiting for other players") and passer-throughs are making it a bit difficult to get a game going though. edit: this has a few crippling bugs. seems like i have the most trouble after someone leaves a game. also, this desperately needs chat, or voice chat, and a high score. thanks again this is the most fun i've had in a while.
- atroche 14y agoYou might want to consider using client-side prediction and lag compensation. Here's John Carmack describing how he used the aforementioned techniques to make Quake playable over the internet: http://fabiensanglard.net/quakeSource/johnc-log.aug.htm http://fabiensanglard.net/quakeSource/johnc-log.aug.htm Here's how Valve do it: https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization https://developer.valvesoftware.com/wiki/Latency_Compensatin... And here's another good article on the topic: http://gafferongames.com/networking-for-game-programmers/what-every-programmer-needs-to-know-about-game-networking/ http://gafferongames.com/networking-for-game-programmers/wha... Oh, and here's one implementing it with Node / HTML5: http://buildnewgames.com/real-time-multiplayer/ http://buildnewgames.com/real-time-multiplayer/ Good luck.
- statico 14y agoAll good links, thanks! We are in fact using client-side prediction and lag compensation. It's extremely difficult to make a perfectly-playable action game with 500ms ping — you'd be kicked off a Quake server with that kind of lag :) Powderkeg uses lockstep network synchronization and every client sees the same simulation (though the player you control has prediction). The network framerate is 10 FPS and the server waits 2 ticks to collect input, so anyone with more than a 200ms ping to the gameserver will have a less-than-desirable experience.
- atroche 14y agoApologies! I just read your blog post, and it seems like you're way ahead of me. How come you decided to send input rather than state to the client?
- statico 14y agoThere's no need to send state if every client runs the same simulation. All you need to do is send every client a frame's worth of input and the frame's number. The gafferongames.com article you posted explains more about it :)
- 14y ago
- Tipzntrix 14y agoYour licenses page (http://powderkeg.artillery.com/attribution.html http://powderkeg.artillery.com/attribution.html) is down and otherwise, there's no reference to Bomberman here at all. It's a well-executed game though. Haven't found any flaws, but I can't really say it's original. Good proof-of-concept for HTML5!
- statico 14y agoWhoops! Fixing that broken link now. Thanks!
- arcatek 14y agoUnplayable ("Waiting for other players").
- RDeckard 14y agoNice, just beat someone named DJ.
- snizovtsev 14y agoAnother online bomberman clone with massive multiplayer from Russians: http://bombermine.ru/ http://bombermine.ru/
- statico 14y agoI've chatted with Ivan. He's very talented :)
- CaioAlonso 14y agoI visited the site using Firefox Nightly and it said: "Powderkeg can't run on your browser. Would you mind coming back with either Google Chrome or Firefox?".
- statico 14y agoYou mean, something about the absolute, bleeding-edge version of Firefox causes it not to work? ;) Kidding aside, I'll take a look. What OS?
- flipstewart 14y agoUnplayably laggy over here. I really wanted to like it, but it's so slow.
- user24 14y agoI enter my name and then what? Pressing enter does nothing, no other way to proceed. Firefox.
- steverb 14y agoAnyway I can invite other players by sending them a link and not use facebook?
- statico 14y agoThat's been on my plate for a week, but I simply didn't get around to it. Stay tuned!
- DrCatbox 14y agoAh bomberman! Very cool. The game is a bit laggy for some reason for me, but still cool. How long did it take to make the graphics/sprites?
- statico 14y agoAdam, our artist, was usually blocked on us, the guys implementing feature code. I believe it he spent around 130 hours from concept to completion.
- ritonlajoie 14y agoLooks great but I could not play with my azerty keyboard :p I guess for me you would map: z : up s : down q : left d : right
- statico 14y agoArrow keys should work for you, too.
- flexxaeon 14y agoGreat job. Lagged a but but it's likely my connecttion
- zio99 14y agoDude, that was awesome +1 Wish there were more levels
- enraged_camel 14y agoAll I see is a desert with a bunch of cacti? Nothing seems to be happening. Chrome Version 22.0.1229.79.
- bemmu 14y agoIs it possible to reach as low ping levels with Javascript or Flash as it is with a native app like Quake?
- tonetheman 14y agoyup yup good game. very fun. good job.
- muhuk 14y agoChrome user on Debian (Version 21.0.1180.89). When I load it in a normal window and click "Find a match" nothing happens. In console: > findMatch failed: CHANNEL_REQUEST_ERROR: 'BROWSER_WS_ERROR: WebSocket.readyState 3 != WebSocket.OPEN' When I try to load it in an incognito window: > XMLHttpRequest cannot load http://pk-cdn.prod.artillery.com/powderkeg/21/Scenes/MainMenu.scene http://pk-cdn.prod.artillery.com/powderkeg/21/Scenes/MainMen.... Origin http://powderkeg.artillery.com http://powderkeg.artillery.com is not allowed by Access-Control-Allow-Origin.
- cmccabe 14y agoThe graphics are very nice and felt professional. However, I don't think you're doing enough of the game logic client-side. I saw very noticeable glitches constantly, to the point where the game is unplayable for me. Even if some packets don't get through, you should continue to animate smoothly. Even when walking across the map, my character was glitching out-- moving a step or two, then getting stuck, then teleporting a few spaces forward, then getting stuck again, etc. One of the starcraft devs posted a blog entry here that should be instructive-- sorry, I lost the link, but it might still be reachable from the front page. Basically, you need to do as much as possible on the client side, even when packets are not going through, to make the interface feel responsive. The issue might also be exacerbated by a simple lack of bandwidth, or maybe some problem with HTML5 (I admit, I am not that familiar with HTML5 as a dev environment.) http://bombermine.ru http://bombermine.ru, on the other hand, was as smooth as butter for me. So I don't think the problem is insurmountable. Anyway, don't give up, I'm sure you can fix it! You probably should create some kind of test environment where packets are artificially delayed-- perhaps there is an iptables incantation in Linux that can do it for you.
- sabat 14y agoNice game, no complaints at all. I can see myself wasting a few hours at this. :-)
- alyx 14y agoUnfortunately does not work with IE 10