top | item 5156813

Show HN: Multiplayer Snake in Go

156 points| paulrosenzweig | 13 years ago |hipstersnake.com | reply

75 comments

order
[+] afterburner|13 years ago|reply
Nice. One complaint: when it's really slow in the beginning, you can apparently do a 180 in place and kill yourself, but it looks like you didn't turn at all. Unless that's how the classic played too...

EDIT: I've had a few TRON-like cut-off or near-cutoff moments. Very cool.

[+] lotu|13 years ago|reply
I agree the ability to kill your self with a 180 kinda sucks. It's not fun when you do it to yourself and it is not satisfying when your opponent does it either. I would make sure that it was impossible to do.
[+] josh2600|13 years ago|reply
This is amazing. I have fond memories of playing Lightcycle/tron-style games on some older computers against my brother as a kid. We got that program installed and we played forever.

This has a lot of potential, some suggested improvements:

* Chat System

* Rematch (both players agree, then yes, one says no, then no)

* Names for players

I like this and I'm sure you could monetize this with ads if you wanted to. Have you thought about supporting more than 2 players? There are many directions you could go with this, but this is an excellent MVP, if you want it to be an MVP.

[+] paulrosenzweig|13 years ago|reply
Thanks for your feedback! A chat system might get a little ugly, but I like the rematch idea!
[+] psionski|13 years ago|reply
I've played WAAAY to much tron to be bothered to collect the blue dots :P If nicknames are added, mine's gonna be Mongoose.
[+] jiggy2011|13 years ago|reply
Might be hard to chat and play snake at the same time. I guess you could smack talk between matches.
[+] rogpeppe1|13 years ago|reply
i'd like to see a score system, and some kind of score ladder scheme where you only play people with on adjacent rungs of the ladder. then the folks that are really good don't end up playing against people like me who just crash into themselves all the time :-)
[+] smokinjoe|13 years ago|reply
Love it. Refreshingly addictive.

Only complaint is that I can't automatically tell which color I am to start. Maybe I'm missing something, but it's never immediately known - I need to jiggle left and right.

[+] paulrosenzweig|13 years ago|reply
You're red. Sorry I should have made that more clear.
[+] phasevar|13 years ago|reply
Pretty cool. Although when you start, you have no idea which snake you are. I end up in the wall half the time because I suspect I'm the other snake.
[+] phasevar|13 years ago|reply
Ok, so I figured out that you're always the red snake. Might want to point that out on the page.
[+] bmiranda|13 years ago|reply
In my first game we were both confused about which snake we were and ended up hitting the wall at the same time.
[+] dgudkov|13 years ago|reply
Can you tell a bit more about Go's performance in this project? Number of connections, RAM footprint, etc. Thx.
[+] paulrosenzweig|13 years ago|reply
Current load: Load average: 0.02 0.01 0.00

Looks like it's using about 50Mb, but I think that's just the reserved memory.

It's preforming well, but even more than the performance, I think Go was a good fit due to the concurrent nature of a multiplayer game.

[+] phasevar|13 years ago|reply
The controls don't react if you press them too quickly. How about queueing up key presses and then each additional step of the snake would dequeue a key press?
[+] shmageggy|13 years ago|reply
As an expert in this area (I implemented snake, once, in ascii for kicks) the problem with that approach is there's no way to undo your presses. So if you erroneously press left when you meant to press right, you're screwed. The best control strategy I found, and the one that seemed to correlate with classic implementations, is to simply take the most recently pressed key at each tick, and only allow the keys that correspond to left and right relative to your snake's direction.
[+] SeanLuke|13 years ago|reply
Who thinks that north/south/east/west is the right way to control a snake? The proper controls are left and right.
[+] graue|13 years ago|reply
The old QBasic Nibbles game that shipped with DOS 5.0 used up/down/left/right, and that was the one I always played as a kid. All the clones I've seen over the years use up/down/left/right as well. Which versions did you play that only use left/right?
[+] dkarl|13 years ago|reply
I agree. It's very hard to get used to. I can handle it when the game is slow, but the faster it gets, the more my decades-old instincts take over.
[+] Timmmmbob|13 years ago|reply
Every snake game since Nibbles uses north/south/east/west.
[+] jaredsohn|13 years ago|reply
It would be nice if it would let me restart via the keyboard (spacebar?) rather than having to move my hand from the arrow keys to the mouse/trackpad.
[+] phasevar|13 years ago|reply
Does anyone else think the stages ramp up too quickly? How about cranking down the speed multiplier a little bit for each round? By the time I get a long snake I spend more time just not running into an outer wall than actually trying to corner my opponent.
[+] tjbiddle|13 years ago|reply
Awesome! For some reason when I want to turn around very quick (Left/Right + Down or Left/Right + Up depending which way I'm going) I just "Die". I wouldn't run into myself in that case, so not sure what's going on. Apart from that, very cool!
[+] afterburner|13 years ago|reply
I think it turns in on itself inside one pixel, which I don't think is right compared to the way the classic played (one turn always meant at least one pixel in that direction, no matter how fast you pressed)
[+] testuserrrr|13 years ago|reply
The colors scheme of the snakes/points/bg are pretty painful for the eye - even though I like background stashsnake a lot!
[+] tantalor|13 years ago|reply
The changes in speed are too discontinuous. It would be nicer if the speed smoothly transitioned (e.g., ease-in-out).
[+] gren|13 years ago|reply
Right now, It's more a 2-player than a "multiplayer snake".

I would love to see how your game will evolve.

It reminds me another cool multiplayer snake https://twitter.com/syl_mat/status/154136259588141056 (it supports more than 2 players, the game is never ending but player accumulate points, it also has bots)

[+] srikrishnan|13 years ago|reply
I saw quite a few opponents mistake themselves to be the wrong snake and crash out. A little callout saying "this is you" at the start of a match would help!

Took me back a decade to days of playing Gnibbles with 3 others on the same keyboard in my computer lab in school :D.

[+] Timmmmbob|13 years ago|reply
Nice, but doing everything server side kills the game unless you have really low latency. You should synchronise clocks between the players, then run the game physics client-side, and resolve conflicts after-the-fact.
[+] HunterV|13 years ago|reply
Without a point system the one thing I've found is that the multiplayer makes it a disadvantage to play the normal game. The bigger you are the harder it is, you win when the other player crashes. Just a thought.
[+] lotu|13 years ago|reply
If you are bigger it is easier to make the other player crash into you.
[+] orangethirty|13 years ago|reply
Ha, I just went Kamikaze on someone. This is so fun. Hope traffic does not die for a while, because I plan to play the shit out of this one. Anyone interested in forming an HN league?