
Bomberman massively multiplayer in HTML5 - cygnus
http://bombermine.com/#/play
======
jader201
I upvoted this because it is awesome, and it is, well... Bomberman.

But I'm genuinely curious: at what point will we stop being fascinated by what
can be done in HTML5, and actually start focusing more on what is actually
being done -- regardless of the technology used.

Or to put it another way: when will HTML5 games stop feeling like HTML5 games?

For example, if this were on a console, I think it would still be cool, but
it's lacking a certain "game" feel to it. It still feels like playing an old
school game on a PC keyboard, and there still seems to be a sort of keyboard-
to-response latency that I find in most HTML5 games. Not to mention, no
music/sound.

Again, I'm not knocking it for the effort. I still think it's pretty dang fun,
even for an HTML5 game. But it still feels like an HTML5 game.

~~~
Shish2k
Web Apps set us back 20 years in pretty much every respect except ease of
deployment (1992 - people are impressed that Wolfenstein 3D gets 60FPS on a
100MHz Pentium; 2012 - people are impressed that Wolfenstein 3D (in
Javascript!!!!111omg) gets 15FPS without sound on an 8-core 3GHz box).

With the exponential rate of development I doubt it'll take a full 20 years to
catch up, but it'll still be a while before we've _completely_ reinvented all
of the wheels...

But yeah, for the forseeable future, "look at how I re-implemented this
ancient technology with modern foundations, and it only took half the time!
(And 10% of the efficiency and 100x more RAM)" is all we have to look forward
to :-(

~~~
ruok0101
I think this overlooks all the pluses of this new "medium". How did you get
your copy of wolfenstein in 1992? Travel to the radioshack, get a stack of
disks, feed them one by one into your trs80? Within seconds this morning I was
playing this game - with a 1000 other people simultaneously. Amazing in my
book.

~~~
teamonkey
It's not competing with 1992 distribution though, it's competing with 2013
distribution.

~~~
ruok0101
I just bought my son a digital edition of Diablo 3 the other day. It was far
from smooth sailing.

~~~
Buttons840
You had a problem with it? I haven't tried Diablo 3 specifically, but I find
in most modern distribution platforms like Steam (or similar utilities from
Blizzard) you just buy, click, walk away for 2 hours, and when you come back
the game is installed and ready to play. It couldn't be easier to install
native apps! -- when every thing works correctly.

~~~
perbu
One particular thing I noticed about Diablo is that it was playable long
before it actually finished downloading. Most of the maps, video and artwork
was downloaded as I played the first few levels. Pretty cool.

------
ivanpopelyshev
Pardon my English.

Team consists of two programmers and four helpers, we live in different cities
near Moscow.

I started developing the game in April, published link at habrahabr.ru and
since then i'm optimizing network and rendering.

We were preparing for Mozilla GameOn, posted a link to /r/webgames, it became
viral. We're in shock :)

Game Core: Pure Java.

Game Client: cross-compiled with GWT. Angular.js for UI (scoreboard, chat).

Game Server: Haproxy -> Jetty

Web backend: nginx -> node.js

Servers are hosted in cloud and begin to slow down after 800 players.

We'll rent dedicated servers to archieve 1500 players on a map.

P.S. Langoliers are eating the time you spent in bombermine.

~~~
Eliezer
Hi! This is awesome from a technical perspective and was initially fun to
play. Being reset when I died was a major problem, especially when joining for
the first time in the middle of a round and playing against players who
already had lots of stuff (at which point one tends to die quickly... and then
have to start over).

I'm not an expert in game design (just psychology) but from a hedonic
perspective I _strongly_ suspect that you should not be stripping players of
assets when they die.

In general, the case for "punishing" a player is weak (why cause the user
pain?) and punishing them in a way that makes it hard for them to catch up in
a highly competitive game is worse. The "Death" counter going up and losing
your current position is sufficient incentive not to get killed, or there
could be loss of points, or you could _maybe_ strip off a single distance unit
from the bombs.

In the long run you might want some sort of way for early players to catch up
quickly, like drops near a player becoming more frequent when they're less
advanced compared to other players. Meanwhile, ceasing to strip assets when a
player dies, or stripping off only a single unit of distance (not number of
bombs, having only a single bomb slows down gameplay a lot) will greatly
increase game playability.

Especially don't strip the ability to kick bombs. This makes it far too easy
for freshly respawned players to be killed.

~~~
psionski
I like games with harsh punishments - my favorite is hardcore mode in Diablo -
death is permanent and when you die, you loose MONTHS of work, every item you
have on you, every skill and level you have gained, everything. This really
gets the adrenaline going when you're in a tight spot.

~~~
GFischer
What happens when you have a blackout / internet failure / computer error, or
another random problem? You lose everything as well, and usually through
someone else's "fault" (and no adrenaline for you :) ).

I used to play Mario 3 on the NES, and at the time my country had a bad
electrical infrastructure, I hated going back to the beginning due to a
blackout.

~~~
psionski
Agreed, this can be incredibly frustrating! Has never stopped me from playing
the game, though... One time I even broke my keyboard (hit <esc> with a fist),
but within minutes borrowed another keyboard and started a new champion... I
guess when the game is good you can make your "users" (in both meanings)
suffer through anything.

------
ZeroGravitas
This is what I imagine when I hear HTML5 gaming. Just like "fun" on a PC looks
different from "fun" on a console, and even more so from "fun" on a Wii, or a
DS or an iPhone, "fun" on the web needs to take advantage of the nature of the
medium.

~~~
purplelobster
In my opinion, HTML5 games (and apps) have a few key advantages that people on
here would like to conveniently leave out (I COULD PLAY THIS ON PENTIUM 100MHZ
etc...).

1\. Accessibility. It never get's easier than typing in a URL. It's so easy
that I can get my grandmother to play. At every step on the way to the game
you will lose people. download Steam -> download game -> wait for download ->
click on game. You've lost 90% of people right there. Being able to spread a
link can create a much bigger viral effect as well.

2\. Cloud based means that you can continue your game literally anywhere. I
switch computers all the time, but every computer, phone or tablet has a
browser, so there is no barrier to playing on them.

3\. Cloud based also means that multi-player come naturally. You already have
a server to serve the game, so the step to including multi-player is small.

4\. Instant updates. Invalidate the cache and BAM, the user has the latest
version of the game. This allows for some seriously fast iteration.

5\. No walled garden app store 30% cut crap. Host your own servers and you're
free from all that. Users might not find your app like they do through those
app stores, but when a game is available directly through a link, do you
really need app stores for discoverability? Shouldn't forums and review sites
and whatnot take care of that?

~~~
catshirt
_"In my opinion, HTML5 games (and apps) have a few key advantages that people
on here would like to conveniently leave out (I COULD PLAY THIS ON PENTIUM
100MHZ etc...)._ "

you sure about that?

also, none (with the exception of maybe the "walled garden" argument) of those
benefits are exclusive to html 5 or the web in general.

------
hkmurakami
What I found interesting is that when you "scale" a game from n < 8'ish
players to n > 10 players and make it MMO style and continuously running, the
strength disparity between the players who have been alive for quite some time
and the "newly spawned" players becomes so large that a Quake/TF2-like system
where players can instantly become "fully buffed" (by picking up an uber gun,
for instance) becomes necessary.

Furthermore, I think an interesting game design challenge is what we can
introduce to these scaled up games to make the psychological rewards enticing
enough to have players keep playing. After the nostalgia feeling wore off
after a few minutes, I personally no longer really felt like continuing to
play since it was going to be the same stuff over and over again without much
variability or depth.

~~~
rplnt
It's not continuously running. There are rounds.

~~~
hkmurakami
oh oops I guess I quit too fast T_T

------
swah
I'd love to know how was AngularJS used in this app: not the kind of app I
imagined AngularJS would be helpful in writing!

~~~
ivanpopelyshev
UI. Scoreboards, Chat, Single Page Application.

------
sukuriant
The langoliers are a nice addition to the game, I have to say.

<http://en.wikipedia.org/wiki/The_Langoliers>

(the pac-man type things eating up the level near the end of a round)

------
jamieb
Awesome, but one exploit makes it less fun:

Smart players who are trapped by a foe are dropping their own bombs so that
the foe doesn't get the kill.

I blocked a player in an alley. Right before he died he dropped his own bomb.
I got no point for the kill. That means any skilled player can prevent anyone
from scoring points for killing them.

The solution is to use a kill chain. When a bomb kills a player, look to see
if that bomb was detonated by another bomb. Keep going until you find a bomb
that is not owned by the dead player. That owner gets the kill.

~~~
ivanpopelyshev
We're using kill chain :)

------
neya
"How the fack?" was my first reaction..Because this is so awesome! Revives old
memories, yet also seems really fun (especially when you try to bomb others)!!

A few questions:

1) What backend technology do they use for real-time and concurrency?
Node.js?? Scala??

2) How does one update the players' real time positions/actions??

If someone could shed some light on these questions, it would be so freakin
awesome!!

~~~
Thaxll
1) They're using HaProxy + probably NodeJs ( i'm 99% sure )

~~~
krsunny
How can you tell they are using HaProxy?

------
kayoone
This excites us developers, but sadly the gamers couldnt care less. Sure it
doesnt require a plugin, but thats not really a dealbreaker for most web
gamers.

~~~
Buzaga
I think you haven't given it a good look, this game is SOLID, awesome and fun

Yesterday I've played it for like 3 hours straight and had a blast, gamers
will care(and are probably already caring since the servers are full) because
it's fun and that's it

------
kerno
Aaaaand it's midnight and I'm meant to have written a 1,000 word post.

------
jbrooksuk
This such a great example displaying the power of HTML5. I'm going to be
playing this quite a lot!

Is this going to be open sourced any time? It'd be neat to see how this works
on the server etc.

------
shocks
I wonder what they're doing about cheating? I guess this type of game is not
so easy to 'cheat' with but I'm sure it is possible.

I was thinking about building an Unreal Tournament clone in WebGL, but I'm
still not sure what to do about cheating.

~~~
bayesianhorse
In this case they don't have any trouble with cheating because the game logic
seems to be entirely server-side.

Also cheating is only trouble when it degrades other player's experience or
when they are hacking/hurting the monetization.

~~~
shocks
In this case it seems okay, but not in all cases. Consider an FPS. Javascript
tweaks could be used to automatically change to a shotgun when close range,
assist in aiming, highlight players behind walls, etc. I wonder what the most
effective ways to combat such cheating would be?

~~~
martinced
_"I wonder what the most effective ways to combat such cheating would be?"_

As stated, if the logic is performed on the server-side then the only way a
client can cheat is by modifying the inputs.

The _one_ thing that makes it hard for client to know in which way to cheat
the inputs is... Randomization.

Do not make something where players are recompensed when doing a super skilled
move, like a headshot. Or you'll have aimbots. As simple as that. Player has a
shotgun? Make it fire 30 miny bullets at once with some server-side
randomization (that's how many shotguns work btw).

Do not want to give info about the other side of the map so that a rogue bot
cannot shift to the correct strategy automatically ? Use server-side fog of
war. That way the very info needed to "map hack" simply is NOT available on
the client.

It is hard to combat all forms of cheating. But maphack can definitely be
mitigated and randomization can really help with many aimbots.

Regarding the "highlight players behind walls": two things to do. 1) do not
allow to fire through walls (unless the first Counter-Strike, which was
totally silly in that you could fire through 2-meters wide wall with a simple
pistol) and 2) server-side fog-of-war. Do simply not send to the client the
info that would allow the client to determine that an ennemy is behind the
wall too early.

Sure, at one point you need to give the info: give it as late as possible and
make is so "super crazy high reflex" are not rewarded in an insane way. For
example make it slower to "switch gears", etc.

It all comes to a balance between fun and anti-cheat but _many_ things can be
done to make cheaters life way harder and, most importantly, way less
efficient.

~~~
shocks
Very interesting ideas, thanks for your reply. :) I'm really excited to start
working on this idea now! xD

------
alexkus
Server has been bombed it seems. All game servers dead.

No idea whether it was HN related or a separate issue.

~~~
petercooper
It did well on Reddit a couple of days ago, well on Twitter yesterday, so I
think it's spread around quite a bit and picking up traffic from all over.

------
Kartificial
The workspace has been shutdown here, too many bombermen.

------
sukuriant
The play button seems to have stopped working; and the number of players seems
to be shrinking slowly. Something broke?

~~~
chm
Still not working at 12:52 AM ET.

------
rartichoke
The game is back to working now. Really solid job man. It's really smooth in
Chrome on my low end desktop.

My only concern is that there's no client side prediction for movement? Every
input key feels delayed by my ping and is most noticeable when moving
diagonally by pressing 2 keys at once.

------
sk3tch
Anyone got any background on the backend tech involved?

~~~
sk3tch
Answering my own question but:

>Thanks :) Follow us @bombermine — we have plans to write an article about how
game works. In few words: java, jetty, gwt, javascript, node.js, html5 [1]

[1]
[http://www.reddit.com/r/WebGames/comments/199urs/bombermine_...](http://www.reddit.com/r/WebGames/comments/199urs/bombermine_html5_mmo_bomberman_with_hundreds_of/c8m8j6h)

~~~
rartichoke
I wonder what parts of their code is using Java. Really looking forward to
reading that upcoming article.

------
basicallydan
Honestly, not only is this incredibly fun but also really innovative and
clever. Well done.

------
marvwhere
man that is really fun!! we did a bomberman on a hackerthon, but only for 4
people each time, i like the mass multiplayer idea...

are u planing to put it on github? will be awesome to host in our own server
to play against company people only

------
jiggy2011
Oh god, have work to do. Must resist urge to waste entire afternoon..

One thing that always seems to be missing from these web games is support for
gamepads for that authentic console experience however.

~~~
dreen
this is a pc game, and an mmo as well, why would you want to play with a
gamepad? besides you could say the same about any pc version of bomberman ever
made, i doubt any of them had gamepad support, because people rarely use
gamepads on pc.

~~~
jiggy2011
It's a console game at heart though, my earliest games of bomberman were on
the SNES I believe. It just has much better feel on a gamepad. There are also
APIs in browsers to support gamepads now.

There are quite a few PC games with gamepad support, about half of the games
on my Steam list are playable with a gamepad.

------
BklynJay
It is impossible to love more than I love this right now.

------
dylanz
It's cool to see AngularJS was used for the templating engine. I'd be curious
to see how deeply it's being used.

------
bayesianhorse
Actually, this is what I believe is the place of Go (the language) in HTML5
programming. I don't know if this was done with Go on the server side, might
as well be node or gevent, but Go would be faster and easier to build a
multithreaded game server with.

~~~
robotmay
I've been fancying building a game with Go + JS. I only have 2 problems:

1: I can't think of a game 2: Most JS libraries/frameworks drive me nuts.

However there are quite a few decent looking JS game frameworks about. Are
there any recommendations?

~~~
pkorzeniewski
Turbulenz[1] looks very promising and their framework[2] seems to be quite
advanced, well thought out with a really nice documentation.

[1] <https://turbulenz.com/>

[2] <http://biz.turbulenz.com/developers>

~~~
robotmay
Wow no kidding; I hadn't come across that one and it does look pretty swish.

------
muyuu
Looks like their servers cannot deal with the onslaught...

I love Bomberman. Looking forward to try it.

------
madsushi
I closed the window on myself a few times with CTRL+W, whoops.

~~~
rttlesnke
Same here! >.<

------
deanclatworthy
Undoubtedly the most fun I've had with one of these HTML5 games. Does anyone
have any resources on how to keep clients in sync without lag?

------
ssewell
Who's up for massively multiplayer Double Dragon?

------
yskchu
Thanks for sharing, brings back good memories...

------
jader201
Am I the only one seeing:

> Disconnected from server...

UPDATE: This had something to do with my login. I just logged out and back in,
and was able to get in.

------
sairamkunala
Its eating up my CPU . The problem is that its an addictive game so far.
Levels getting reset with the pac man is hilarious !

~~~
ivanpopelyshev
I'll enable webgl renderer ASAP. At this moment it have some bugs.

------
tferris
Definitely the best browser multiplayer game ever.

And nice to see that it's build on Node (among other tech).

------
ivanpopelyshev
We got 1500 players at US Public Server #1. 100kbit/s per user, i'm gonna
optimize it.

------
friendly_chap
Quick, everyone come up with the HN nicks so we can resolve the disputes
there!

~~~
jbrooksuk
I grabbed jbrooksuk because I use that everywhere.

------
qoo
The bomb! Great game and great execution! Kudos to the Bombermine team.

------
wodow
It's working ok in the EU!

------
itsbits
awesome game...wat did the developer use for realtime updates??

~~~
ivanpopelyshev
WebSockets

~~~
itsbits
cant we see those requests in Chrome Inspector tool???

------
FreshCode
Well, there goes my evening. What stack is this built on?

------
afshinmeh
All servers are down.

~~~
sgt
Massively so.

------
jqquah
This is my first comment ever on HN and this is AWESOME!

------
tcohen
This is an amazing game! Such good memories.

------
sshillo
I think it just broke. The game just froze.

~~~
DoublePlusWill
Broken here too. It's interesting. Even though the game is frozen and won't
let me start playing the ping times and times till the server's refresh still
updates.

------
inspiredworlds
Awesome! Loved this game on Super Nintendo!

------
zoobert
Really well done. Love it I am 13 again !!

------
orangethirty
Why aren't you taking payments yet?

------
oceanician
This is fantastic. Thanks :)

~~~
wasif_hyder
Beyond fantastic. I could just hug whoever made it!

------
vincentperes
nooooo, don't post this kind of link here!! my working day is over ;)

~~~
conradfr
Bomberman is so addictive that I played it during 15mn while I'm on an open
space with everyone seeing my screen :p

------
Maven911
what other games are out there that are as neat as this ?

------
aren55555
This made my day.

------
asc76
Very impressive.

------
darkedge3
Awesome!

------
mceoin
THIS IS HECTIC!!!

------
martinced
OK, so how many pixels / sprites can I push per frame (and at which framerate
; ) on this HMTL5 thinggy?

Btw I was eating mode 7 for breakfast on the SNES and ruling the Amiga co-
processors (eg to do copper bars), so I happen to know a thing or two about
very nifty optimization that can be used in games.

I'm pretty sure a few old dogs could teach some young monkeys a few tricks in
this HTML5 thing...

------
njx
Awesome, I had once developed a bomberman clone for palm pilot.

Here is what HN users have commented on your game
[http://www.infocaptor.com/bubble_viz/newsycombinatorcomitemi...](http://www.infocaptor.com/bubble_viz/newsycombinatorcomitemid5291843.html)

