244 comments

[ 3.2 ms ] story [ 279 ms ] thread
This is way more interesting than I thought it'd be. I bet it was a blast to build, too.
My head hurts.

I love it.

The level that really made me smile was one with about twenty "exits", only one of which was real.

One of the cursors sat by the real one and danced invitingly until everyone noticed.

Community spirit <3
My big smile moment was in the level with a torturously long path between blue barriers that snaked around... UNLESS someone was on the blue barrier.

At that point, everyone was free to go straight to the exit (except the kind soul, who had to wait for someone to hit the cyan trigger and let them out)

I'm actually the guy that designed that level and was lucky enough to have the dev put it in.

My design let you go from spawn directly to the obstacle removal button, but the dev edited that part out.

I really like trust exercise levels, even though an entire heard of cursors left me in the box once.

I edited that out because I felt like everyone would just go top and hope someone would save them. By introducing a long path before they can help others, it makes them think "Well, I could just finish the level, or trust that someone will save me and help them..."
Did they figure out which was the real one, and then restart the game and get to that level just to point out the correct answer?
I did that for a bit - you can observe that people's cursors don't warp to the beginning at that exit.
When I got to that level a cursor was drawing an arrow to a false path. I couldn't figure out how to draw, so I assume a "fake cursor" was part of the level.
You can draw by holding ctrl.
(comment deleted)
"Warning: Next iteration in a genre of basic addiction games."

These games really are impressive though. I wonder if there's been a good thesis written on them yet.

So much fun, great to see how people work together to help each other win.

I gave up on the one where you had to squeeze through a bunch of narrow red pathways, it's not so easy on a trackpad.

I was staring at that one so intently that the walls started morphing.
I started seeing green where there was none. :D
Not to sound snobby, but it's easy on a good trackpad :)
Mine's at least as good as yours. It's not.
'Cheat' to get you past thin red pathways: line yourself up with the pathway, and jam yourself against the wall opposing the path. Take your cursor outside the game box, then bring it in from the opposite side. Your cursor will snap across to the wall opposite where it currently is. My hand is a bit too wobbly for those paths, so I had to 'think outside the box' to get past them...
I just turned on mousekeys (on windows) and then used the number pad to travel vertically/horizontally.
or command option F5
It's doable on a trackpad (Macbook Pro) since I did manage to beat the game, but it was hard!
Scoot your finger down the edge of the track pad (so that your finger is half on, half off) to go straight.
I love it. I learn to be sometimes sacrificing myself and sometimes to be selfish enough.

Ps: I just realized you can draw something on board. Hint: Press and hold Ctrl.

Ahh, that's what the "Area too full, drawing is disabled" was for. I saw some drawing in a later level and didn't connect the dots.
I think no, that is the message from the server whenever it was overloaded. The drawing is not persistent. It goes away after a while.
Hold Shift on Mac
Everyone seems to be loving it, but doesn't work for me. I don't control any of the cursors. There's a message in the bottom corner "Area too full, drawing is disabled". Latest Firefox.
(comment deleted)
The control is hard if you disable the cursor lock, which I had to do to get it to work in Safari. If you lose track of your "game" cursor, you get the red circle around your "real" cursor until you link them back up.

It worked as expected for me in Chrome (then I went back and tried it in Safari after figuring it out).

Firefox's cursor hiding breaks it, won't let you move the cursor, so don't enable it. Red circled cursor is your actual mouse position, grey circled one is the 'ingame' cursor that's blocked by walls. Move the red onto the grey to start.
I found disabling the cursor lock on FF helped
No trouble here. FF 31.1.0esr.
FF 33.0 here, no problems so far, it even asks you politely if you want your cursor to be trapped when you enter the webpage.
Doesn't work on Safari either, same problem. Tried every combo of checkboxes.
On Chrome I get "Area too full, drawing is disabled". The site disables my cursor (if I give it permission) and then I simply can't move my cursor, but I can click which creates a ripple around my cursor.
There was a bug with firefox. Should work now.
And it's dead.
And we were so far along, too :( crosses fingers for persistent state
I got a "Lost connection to server" Anything went wrong?
A simulated social experiment it is. This is pretty much how societies will need to be like. WIN - WIN - WIN!
I went AFK after reaching a particularly hard level, and came back to "Lost connection to server." Apparently it boots you if you're AFK for more than a minute or two.

A bit frustrating, considering how much "work" I put in to get to that point.

It's hands-down the best HTML 5 game experience I've ever had. I look forward to more.

I have that message too now, I think the server simply went down, as I was not AFK at all.
Dev here, yep. Server was restarted.
I'm an active gamer and this is the first time I've had fun playing something in years.

Thank you.

It'd be great to have some sort of session restore... it's really frustrating to be booted back to the beginning when the connection fails.
Nah, I lost connection to server even though I was actively playing. I'm pretty sure it's just high load.
Got to big maze and... "Connection Lost"
Thanks to this game I finally decided to upgrade my ball mouse to LASER.

(and unfortunately I got "disconnected from server" about 15 levels in)

"Connection to server lost"

I had myself convinced for a few minutes it was just a clever way to end the game when you got to the last level.

Dev here. There's an editor at http://cursors.io?editor, but it can't submit the level to me yet. But you can type "generateCode();" and put it on pastebin and email it to me at me [at] m28.io and I'll put it in game if I like it.

My server is getting hammered pretty hard, that's the reason for the disconnects. The spike caused by hn: http://d.m28.io/ZCWdy0m1DHOG.png

I'm gonna sleep now but ask anything and I'll reply when I get up.

Edit: Sleeping is not an option anymore, the server is having some... troubles.

Curious what the tech stack and data flow looks like for this, is the server running a C++ game representation and pushing updates to the javascript clients via WebSockets?

Noticed the string from the level editor `std::vector<LevelObject*> wallByColor[`

Yep the server is in C++. The level editor is mostly for personal use right now, so it just generates the C++ code that I need to paste into a file. I plan to make the editor public and make an easy process to submit levels so maybe some day no one will ever be able to reach the end.
what linode box are you using?
They're really overpowered for what they're using atm. I'm just keeping extra capacity just in case. Web server is on a Linode 2048 and Game server is on a Linode 4096 (not even using 15% of the CPUs).
what does that translate into ram and cpu?

what are you using for your web server?

Web server is just nginx. The RAM and CPU usage are really low, there isn't anything CPU or memory expensive in the game to be honest.
i just want to know how much ram and cpu i need to handle front page hackernews traffic.
If you're not hosting heavy files (big images, videos, etc.), not much, really. The cheapest plan on linode is enough.
Seems like you already have this on your to do list but it would be nice to save state on local storage or something like that so that it doesn't reset every time the connection is lost.
Keybind found so far:

* O: spawn * A/S: change paint color * W: exit? green block

More Keybinds from Code:

* A: Prev Paint Color

* S: Next Paint Color

* B: Create Click Button

* Z: Undo

* W: Add Exit Block

* O: Move Spawn Point

* N: Create Hover Area

* Arrows: Change Size

You, sir, have crafted a beautiful, wonderful experience. I was playing with ~700 people, a figure that jumped to nearly 900 before I turned back to doing real work for the day. (Your Reddit posts must be gaining steam.)

The thrill of messing with people on the level with the large spiraling maze with red blocks, the agony of waiting for someone to come relieve you on the "go out of your way to man button clicking stations" levels... It's almost shocking how much depth can be pulled from such an incredibly simple concept.

It makes one wonder if you've inadvertently stumbled across the Holy Grail of game design: Did, through the game mechanics themselves, you create True Art?

Let's say it was absolutely completely 100% intentional and I surely knew what I was doing.

The game seems to have gotten popular on /r/webgames, but if it gets popular on /r/gaming or something, then it's gonna explode.

Lost connection to server a couple times now. Gets old trying to get through the beginning levels.
I think we need a save/load button or the auto-save feature
I started playing this while some code was compiling and ended up getting completely sucked in.

That giddy thrill of enabling a restless mass of fellow cursors to rush through a gate, or the temporary, unspoken bond between the lone cursor selflessly manning a button and the new arrival sidling up to them to see if they want to change shifts... there's a lot going on in this seemingly simple game. I'm glad I got to play while it's at critical mass.

(Developers, are you logging the cursor movements? This would be fascinating to analyze later.)

I am not logging anything at the moment. I started writing this a few days ago.
This is going to be H U G E.

Stats about one's own selflessness etc would be really cool. Or even aggregated stuff. X% is selfish, Deciles of goodness etc.

The potential for game theory experiments here is very possibly unparalleled.
I was completely expecting some stats read out at the end, saying I had spent X time in levels that selfless people had spend Y time in.
You should play "Trappy Tomb", if you haven't already.
There's potential for a really neat prisoner's dilemma study here. Should be an exercise for many a philosophy course.
And I thought it was some social experiment where I'm going to see how egoistic I am.
Arrgh, how do you guys write these awesome, complex projects (with networking! and built-in tools!) in just a few days? If I tried my hand at making this, it would take me, like, a month. What is the trick that lets you leap across this order-of-magnitude-sized time gap?

Great work!

You just have to be familiar with your tools. I even wrote my own websocket server implementation, because there wasn't any good ones for libuv.
Your profile doesn't have much info but a blog post or something would make for a fun read.
The game is really creative and addictive! I am a Ph.D. student and I would like to use the game as a platform for research. Do you plan on making the logs available any time?
This is, hands down, the most awesome game I have ever played through a web browser!

Please start logging as soon as possible. Simple heat maps of cursor positions, draw areas and pings would be awesome to look at. It could be shown to players in the end of the game.

If you collect data, I will help you process it. I am especially interested in measuring the percentage of players who volunteer to change a poor soul trapped far away, just because it is a nice thing to do. Percentage of players who never do that would also be interesting, just as players who figure out that they can click 2 or sometimes 4 buttons by oneself, freeing several cursors.

(comment deleted)
> I started playing this while some code was compiling

Likely excuse! Cue xkcd linkbot.

Broken in Safari -

    [Error] TypeError: undefined is not a function (evaluating 'w.requestPointerLock()')
    	ma (client_out.js, line 1)
(As the error suggests, checking the 'no pointer lock' button fixes it, but it shouldn't be silently failing.)

Edit: Ouch, I was disconnected from the server after getting several levels in.

Thanks for the bug report, should be fixed now.
Playing this was a mistake on my part considering I have plenty of networking HW due tomorrow, but then again looking at HN was the first mistake. Great job! It's a simple game that ended up being significantly more fun than I thought it would be.
I really wanted to see how many people were at each level, to get a sense of how far up the tower this goes, and how many people were up top, and how soon I'd get there.

It'd also be cool if the higher up you go, you can see a previous level, and affect it in some way, like helping more cursors get up to your level, or hinder them to be evil.

I get nothing either in Firefox or Chrome :(

Firefox says:

> SecurityError: The operation is insecure. client_out.js:30

Chrome says:

> Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.

Doesn't work for me on Firefox Aurora, console shows: ReferenceError: WebSocket is not defined

I see just a rectangle with border, when I move cursor to it it disappears, when I move it out it appears again.

How many levels are there? I played until about 12
Not that many, 23 or so. Finish it, it's satisfying.
About 40 at the moment.
Some indicator would be great. Maybe even of "cursors in the earlier levels that might come soon". Is there branching? I was stuck with 3 people in a room where we needed 5-6 (or super good clickers) to proceed and gave up waiting for new cursors after several minutes. (The spiral with 5-6 "5 click" buttons that were all blocking the exit in the lower right.)