Wiki HomeWinLibre Home

The Sneaky Snakes

Google SoC 2005 logo by KZ (


This game is a project within Google Summer of Code program, mentored by WinLibre, written by Michael Rybak and Cate Zagorska.

See the development log if curious.

Published under MIT license


Windows (exe)

Any platform (sources)

Dependencies (needed to run from sources)


You control a snake. A snake looks like this: A snake!. It’s a number of balls connected with springs. You mouse/kbd motions affect the snake’s head, and the rest of body adheres normal physics.

Coefficients are selected in such a way that you have a feeling of under-water motion.

In multiplayer mode, your opponent is another snake, controlled by your friend. You can play at one PC or via LAN

Initially you both have 100 hp. The goal is to kill the opponent’s snake by shooting. But you don’t have any bullets, because you yourself consist of almost nothing but bullets! To shoot, you need to spin around and release your tail , which will fly on and (hopefully) hit the opponent. The damage caused depends on the impulse of the clash.

Your body initailly consists of a head , a spiky tail , 4 body-balls and 6 bullet-balls . This means you can shoot away 7 elements from your body, and you’re out of ammo. You can pick your bullets back though. Touching a bullet-ball inserts it back to the body. Note: the spiky one can only be attached to the current very last ball of your snake.

Apart from the snakes, there are walls and clouds on the field. Walls are just walls. Clouds are something you need to revive yourself when low on hp; periodically (but randomly enough) they throw out bounties, which you may and should pick up. A banana is a hp +10, a cake is a hp +25, and an apple (or what’s left of one) is a surprise that I won’t spoil by telling you :)

There’s also single-player mode. Here, you still control a snake, but your opponent is a bee-looking spider: (I insist on this being a spider, yes!). Gameplay is pretty similar to 2-players modes, except that the beast doesn’t release any tails; to shoot, it has 2 (blackish) spidies attached, which it furiously throws aiming at you. At the picture above, only one spidy is still attached, another’s fired.



Running latest (CVS)

Use anonymous access to get latest from, the SnakeGame module.

To run you should have Python, PyGame and Psyco (desirably) installed.

I use Python 2.3 with appropriate PyGame & Psyco:

Just double-click on Source/


The game isn’t ready yet, especially in respect of clean code, so please don’t bother commenting on that. I would appreciate any other comments/feedback at, please, or leave it here:

01. Replace me
02. Replace me
03. Replace me

Oh Gooooooooooooooooooooood Game But you improve the GUI any way great work done

[Rybak] Thanks! Could you please be more specific about improvements?

explain controls

On this page you do not mention how to control the snake. In the game I can see there is use for keys ~, 3 and E but I don’t know what to do (is it the speed ?), how does it work on a foreign (say french) keyboard, does the key position imports or the key sign (in which case I won’t be able to play with a french keyboard as ~ needs alt+gr). Those kay don’t seems well choosen (too far away one from another), better choose space to fire, w for low speed, a for medium and q for high speed).

Could you give some basic trick on how to go with the snake and how to fire well as it’s not so easy and one may feel discouraged (learning curve too steep).

[RYBAK] thanks for a relpy. To begin with, there’s a nice pdf which is available from CVS (but not yet from the links above unfortunately), that explains all the keyboard and mouse actions. Basically, there are 4, not 3 keys for the left hand: ~, 3, E, C. ~ is for sticking the head to the ground, C is fire, 3 and E is speed up and slow down respectively. I’d prefer a better layout, of course, but I faced some problems with PyGame: when space is assigned to fire, pressing 3 or more keys at the same times has the keyboard stuck. Maybe it’s only my PC, but you really need to press 3 keys simultaneously sometimes, so I wanted to choose a layout that’ll work everywhere. In fact, you can get used if you place your hands properly:

Let’s enumerate the fingers from 1 to 5 (1 for the thumb). Place you hand so that:

  • 5 is at ~
  • 3 is at 3
  • 2 is at E
  • 1 is at C

This should be handy enough I hope.

does the key position imports or the key sign

I used built-in constants which hopefully correspond to key’s indexes, not characters, so should work fine for you

As for the learning curve - yes, that’s what people complain about a lot. I feel so bad about having totally no time to complete the project, and am hoping to get back to it whenever possible; anyway, one of the most important things I plan to add is a step-by-step tutorial, when you see those instructions appearing in the corner that say: “Now try moving the mouse around, slowly and wide enough, to achieve this and that...”, and some missions, when you have no opponent and simply learn the gameplay.

I also want to add demos recording, i.e. it’ll be possible to record a game and to playback, like in Quake, FIFA etc. This would certainly help a lot to catch the idea right away.

As for some basic tips: you need to learn to spin around properly. That’s the main thing - to be able to spin around some point, and to stop spinning and start moving in some particular direction. To spin with a mouse, move it slowly enough, around a circle of a wide enoght diameter (15 cm or so). To shoot, you need to make several spins and then release your tail in a proper moment so the angle corresponds to where you aim at. It’s not hard at all after you play for some time.

Oh, and did the “HOWTO PLAY” page not help really? I thought that pictures’ highlighting explains it completely - you move a mouse on a keyboard’s key or a mouse key (on screen), and the corresponding image get’s highlighted. I hoped that would be self-explanatory enough, but looks like it’s not :)

Anyway, hope you enjoy the game, and thanks for your interest. I’ll get back to development ASAP, really.

Bug reports

Ok can I feel happy now that there’s not a single bug report in 4 months? In fact there was one, not written here:

Soundcard missing leads to a crash

[RYBAK] In case there’s no sound device installed, the game won’t work. Already in my TODO list

The initial proposal

You may find it interesting to compare the initial proposal with what I have now.

game/snake.txt · Last modified: 2011/07/21 14:29
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki