Hacker News new | past | comments | ask | show | jobs | submit login
MMO Asteroids (seb.ly)
307 points by catilac on April 1, 2012 | hide | past | favorite | 81 comments



Could this be an April Fools gag?

I wish I had screencapped it, but at one point I found myself in the middle of the screen, watching four swarm-like quadrants of fellow ships (top-left, top-right, bottom-left and bottom-right) all moving in relative unison. Anytime a swarm started to get close to me, I would inch away for a few seconds before the swarm turned back. I was able to stay in this middle, peaceful area for an extremely long time before random stray fire eventually finished me off.


A quick removal of your network cable proves it a hoax.

I almost want to learn JS and Node to build a real one. Just to spite the OP.


I worked on a Node-based multiplayer Snake game for a while last summer, and was really excited to see this post. I was hoping the code would be public so I could see how he handled the sync issues. Took me a few minutes to figure it out... disappointment of the week.

If anyone is curious or wants to hack on something like this, you could check out my (unpolished) code: https://github.com/roblourens/nodesnake . My first crack at both Node and a multiplayer real-time game.

Edit - and the game is still live at http://aws.roblourens.com/ but looks like it may be a little buggy yet - I wish I'd known something like this was going to be on the front page of HN, I would have taken another look at this project and tried to have a polished demo!


I do want to build a real one. However, I was going to build in command lag as part of the game. Weapons would be player "aimed," but they would be beam weapons that would activate if there were a weapons "lock" and if the ship were pointed in the right direction. There would also be missiles and area effect weapons. The point is to design a game based on dodging and positional tactics.


>The point is to design a game based on dodging and positional tactics.

Sounds familiar...

http://en.wikipedia.org/wiki/Spacewar!

PS: If you could do the awesome phosphor glow of the oscilloscope that the PDP used for a display; It'd make your game even more awesome.


Sounds familiar...(Spacewar)

I'm old enough to have played the Arcade Cabinet version of this game as a kid. Not exactly what I'm talking about, but perhaps an inspiration.

PS: If you could do the awesome phosphor glow of the oscilloscope that the PDP used for a display; It'd make your game even more awesome.

I'll keep that in mind.


>I'm old enough to have played the Arcade Cabinet version of this game as a kid. Not exactly what I'm talking about, but perhaps an inspiration.

I knew it wasn't exactly what you were talking about, but the general concept is similar. I like to think of it as an improved iteration.

>I'll keep that in mind.

If you're not sure what it looks like:

http://www.youtube.com/watch?v=7bzWnaH-0sg

Though for the sake of modern players eyes, pretend that the flickering never happened. (;

(More footage showing a full round: http://www.youtube.com/watch?v=MvGzAvNLcew)

EDIT: Considering what you've said in other comments. Maybe the best way to implement this would be a skin that players can buy as an upgrade?


Nooooo. Use http://en.wikipedia.org/wiki/Xpilot instead ! Far more fun.


You should make ships distinguishable so informal alliances can form.


Yes. Please do.


> I almost want to learn JS and Node to build a real one. Just to spite the OP.

I've been doing just that for the last couple weekends. You can see the work in progress at: http://okayarcade.com/everybody-shoot-everybody/

Note: The link will eventually die (since it's a really early iteration I quickly published when I saw this HN thread; you can't even shoot anyone else) when I take it back down. Uses ImpactJS, NodeJS, and Socket.IO.

edit: Controls: arrow keys = move;

edit 2: I'll probably be open sourcing the game (at least the non ImpactJS parts) once it's more production ready.


There's a real one, it's called xpilot.

Not browser based, but still MMO.


Yeah. But the whole point is that it's an cool HTML5 demo.


Here's a good screenshot I got after playing for 10 minutes. This tended to happen to me about every 1-2 minutes. Either those are some incredibly synchronized humans or it's just an April fool's joke.

http://imageshack.us/photo/my-images/832/screenshot20120401a...


You are right, this is not multiplayer.

How I know? I turned off my internet connection, and the game continued to work .


Same thing happened to me.


Yes. Another way to see this is that few (perhaps even none at all) other ships are constantly firing at maximum rate. If this were multiplayer, that'd be what most people would be doing.


Yeah, the ships are not moving "natural" at all. If this is just a joke I must say I'm disappointed.


It's easy to get this to happen. Just stay motionless until you have the attention of 3 or 4 ships. Then book it in a straight line. Suddenly, it zooms out and the ships start behaving like schools of fish.


Pro tip: if you're getting such non-random behavior, just clear your seb.ly cookie and you can play normally again. I'm guessing the more you play, the higher chance of non-random behavior there is, so that players gradually realize it's a hoax.


Try unplugging the network cable.


I just did and it's either so next level you no longer need a network connection to play against 2000 other players or a hoax.


For those who can't be bothered - the game just keeps playing, with all the players following/attacking etc.

I.e - it's fake. Such a shame!


All the ships on the screen just stopped flying around and started shooting at me in sync.

Ok, it happend again now... Something strange is definitely going on.


same here


Fiddler shows a connection to node.seb.ly on keep alive - not sure if any data is getting sent/received though....


Too bad it's fake. I wouldn't mind an xpilot revival at all.

http://en.wikipedia.org/wiki/XPilot



It still exists as Continuum -> http://www.getcontinuum.com/

From the website: Ever imagine what it'd be like to play Asteroids against your friends?


Subspace is exactly what I had in mind when I saw the OP. It even has a bot API, though unfortunately no one has made a fully-playable one yet.


May I plug my own game here? It's not multiplayer but still favor intense dog-fighting with AI.

http://gamesfrommars.fr/vibrant

A multiplayer mode is the most requested feature, but I don't know if it's worth it.


That game is evil. It ate at least two startup's worth of productivity from me.


this is one of my all-time favorite games.


There's no way, that's all just other players. TWO times a screenful of players, started to gank me.

Maybe I'm just a sore loser ahaha. Great game, anyway.


Yeah, I saw an entire screen of players turn toward me once before as well and turn away immediately later. Hopefully players end up in the same world with just a lot of computer opponents as well...


Apply the CounterStrike model of short 3 minute rounds and you'd have yourself an actual game here.


I'm so sorry everyone, I didn't think for a minute that anyone would be even remotely convinced. It was of course an April fool - here's my full confession : http://seb.ly/2012/04/gotcha-fake-mmo-asteroids-april-fool/

I hope you see the funny side :)


Anyone else only realise this was fake when they eventually opened the Network tab in developer tools to find out how it worked? After that, I double-realised when I noticed that none of the other ships ever idled while everyone else attempted to figure it out simultaneously.


Hmm, favorite strategy: zoom ahead full speed with a spammed bullet stream in front of you. After wrapping around enough times your bullet stream (and probably you) are going to nail someone. As you get better you can adjust your course a little to hit more, or hunt down people after that who are critically damaged by the bullet stream. :)

Fun, all in all, and an awesome tech demo. For finished games, there's already http://www.getcontinuum.com/ which is basically the game with rules and rounds and teams and whatnot. Although that is thick client.


Thanks for posting this. I am at work on an Asteroids-movement style MMO mashup with Elite. There will be "weapons lock" but there will be aiming and positioning as well, so dodging will be key.

Players will be able to design their own ships, which will have performance determined by their shape, and placement of components within. (So, the more wedge-shaped your ship is, the more armor value it has for shots from the front, but the slower it can turn because its structure is less robust. Also, the longer your laser-tube is, the better range it has, etc.) This will happen in a procedurally generated universe containing in excess of 2^128 worlds.

I'm doing this as a study in emergence in games. I want to implement an MMO where mindless "keyboard macro" grinding is totally absent. Wherever possible, we will replace a boring grinding mechanic with something akin to optimizing or micromanaging in an RTS or 4X. What's more, the optimizing/managing mechanics will actually be emergent themselves, building on the ability to write scripts for almost everything in game. (These will run on the server, so the user can license their scripts to other players for in-game money.)


Factions!


Any owner of a Warp Gate installation will constitute a faction. Players will earn micropayments for use of their jump gate. The "Winning" faction will be the one controlling the most jump gates. Jump gates will require considerable exotic resources to maintain. Falling behind in jump gate maintenance will cause ownership to revert to the Precursor maintenance bots.


As others have pointed out, this game is a bit of a prank. For example, the "CONNECTIONS" value is randomly generated:

  numPlayers+=randomInteger(1,5)
Though there is indeed some WebSocket communication between your browser and the server. Here's what most of these communiqés look like:

  {"type": "leave", "id": 133334510518} 

I wonder why the author even uses WebSockets at all, or what these "leave" packets are meant for.


I actually did this with Joust, something like ten years ago, using java sockets for the communications and dhtml for presentation.

The multiplayer version is long gone, but you can still get try out the original dhtml head-to-head version (provided you have IE3+ or Netscape Navigator handy):

http://www.jasonkester.com/joust/

Might have to spend a weekend cramming it full of Node.js and replacing the 1998 DOM referencing syntax with something a bit more modern...

Edit: Holy yikes, it actually works in the latest Chrome and Firefox. No idea how... http://www.jasonkester.com/joust/


Here's his blog page for this:

http://seb.ly/2012/04/node-js-experiment-mmo-asteroids/

Looks like his next iteration will be real multiplayer. That will be awesome


Hah! Great fun. I've found the strategy for long-term survival is simply to stay in the spawning point, spin, and fire as many rounds as possible. I suspect this is because the damage you take for hitting another ship's shields is set high enough that the probability of taking bullet damage is roughly constant whether moving or staying in place, while the probability of taking damage while moving is much higher than that of taking damage while staying in place.

Anyone with a more careful attitude towards quantitative analysis than I care to verify?


If these were humans, a standing-still ship would attract more aggression as an easy target, but bots don't seem to care about that, so it should be good option for maximizing kills/deaths. However, it takes a long time to kill anyone without active movement – hunting down near-dead ships is the best way to get best kills/minute. (and by hunting down i mean crashing into them of course, as well as point-blank fire).


function boom() { for (var a = 0; a < 100; a++) { for (var d = 0; d < ships.length; d++) { var e = ships[d]; if (e != player) { if (e != undefined) { e.hit(); } } } } setTimeout("boom()", 2000); } function restoreHealth() { console.log("restoring health"); player.energy = 200; setTimeout("restoreHealth()", 100); }

setTimeout("restoreHealth()", 100); setTimeout("boom()", 2000);


A friend and I have been working on an MMO game called Pixza: http://pixza.com/lite

Unlike MMO Asteroids, we don't fake the multi-player element. (Try pulling the network cable :) ) But with that comes the problem of bootstrapping the game to get a critical mass, since the game is boring with a few players. Building an AI engine for the game seems very complicated because it's a strategy game.


Some good April 1st jokes become real eventually though.


I'm thinking of building a simple game like this(but not with shooting stuff) using node on the server side since it's the cool thing to do now. But idk how many players a server could sustain or if the browser client might slow down when rendering many players on the screen.

Anybody want to help? Should just take about a week to build something playable i think.


If an mmo version of asteroids sounds interesting then you should try out Continuum (http://www.getcontinuum.com/) It was released commercially in 1997 and subsequently abandoned by its developer. The community took over the client/server and it has evolved into a pretty complex game.


Sorry for the noob question:

How does one prevent cheating/hacking with a client-side runtime? Is there a crucial dividing line of functionality between server- and client-side functions? Say perhaps fog of war and client's only get the position updates of visible enemies?

If there are best practices / conventional wisdom, pointers (links) would be appreciated. Thanks!


This reminds me of the (real) game Realm of the Mad God, a "run 'n' gun" MMORPG with 8-bit style graphics built in Flash:

http://www.edery.org/2011/06/realm-of-the-mad-god/

Now that I think about it, the game is basically a Gauntlet MMORPG! :)


For a real old school MMO you should all try Jet Set Willy Online, it involves a small client download rather than being browser based but it faithfully captures the original feel of the game. http://jsw.ovine.net/


Check chrome://net-internals/#events and include actual bytes under "capture". The data being sent through seb.ly is not enough to for the game:

    .#{"type":"leave","id":1333318871470}
It does look like he's updating the players coming in and out though.


If you hadn't guessed already, the author confirmed this was a fake this morning: http://seb.ly/2012/04/gotcha-fake-mmo-asteroids-april-fool/


My GF couldn't get over that I was spending my Sunday evening blasting away at 1900 other "nerdy hackernews-ers", until I realized from the coordinated attacks it couldn't be real. Still a ton of fun.


Lol yes this is lots of fun, however I seem to continously pickup some stalker hellbent on destroying me in particular and chasing me all across the universe. Well, atleast it makes me feel special :)



Damn it! I commented on it earlier noticing some irregularities in the way the players moved... I just realized this was an april fools joke!


This reminds me of Netrek. http://en.wikipedia.org/wiki/Netrek


Fun fact: if you're in chrome, enter ctrl+shift+j. When javascript console enters you can play with it.

Try entering player.energy = 100000 :)


This was one the of things that I worked on to avoid, when building Pixza (pixza.com) a HTML4/5+JS+Erlang MMO game. I wrote a script to obfuscate all the JS object and member names to random strings before deploying the code.


Very interesting. I guess this is always a risk when writing javascript. good mitigation though.


Aghh can't believe this is fake...

Does anyone know whether this is actually feasible to make using Node.JS (or any other technology?)


Very similar to http://rawkets.com/ by Rob Hawkes from the UK.


This is insane! I was surrounded by at least 8 players all shooting at me. Really funny though.


I love it but I think it would be more fun with teams.


This is great. An MMO pong would be fun...


SIGGRAPH 1991 and 2006 featured demos of the ~3000 member audience playing Pong. Each half of the room controlled their paddle by holding up colored wands to vote up or down. I think the 2006 show also had the audience pilot a flight simulator. It was amazing at how quickly the audience got really good at the games!

Here are some photos. I saw a video somewhere, but I can't find it now.

http://stage.itp.nyu.edu/history/timeline/cinematrix.html

http://www.4colorrebellion.com/archives/2006/08/03/siggraph-...


This is madness, but I love you for it :)


Add a tweet / FB share button :>


Node.js is the real APFJ.


I really loathe April 1.


Fun, but crowded.


oh this isn't real?


I once saw pretty much all 20 enemy ships nearest me suddenly turn towards me in near unison. Those were bots, not real people. I like the idea of the game. I feel a little disappointed that he appears to have lied about it actually being MMO.

I'll grant him one "get out of jail free card": perhaps it can be MMO, but if not enough human players are playing at any time he fills the world with bots. That's about the nicest guess I can make.


As others have said, this is fake but I give it one day until someone does a 'Show HN' with a real version.


xpilot.....nuff said


Add me, guys. My username is 'reason'. I'm up over in the top left corner.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: