An overengineered snake game

Multiplayer is coming soon (hopefully in a week or two), so it may be available while feedback is open.

Basic summary:
If you collect a powerup, you can 'overload' the snake, increasing your movement speed and making you invulnerable to walls for a short time.

Solo mode has 4 different difficulties, and you can see your highscore for each.
Campaign mode has a variety of cool missions to complete, complete with a level unlock tree.

Controls can be custom mapped to suit you, and volume and resolution can also be customised.
Default controls are WASD to turn, and SPACE to activate overload.

Linux and Mac only work with source (requires Pygame 2 and Python 3)

Comments (7)

 • 3 years ago • 

Hi IronScorpion,

I tried launching the game on mac using:
% python3

and I get the following error:

maartene@MatiBook snake_overloaded_source_demo % python3   
pygame 2.0.0.dev6 (SDL 2.0.12, python 3.9.0)
Hello from the pygame community.
Traceback (most recent call last):
  File "/Users/maartene/Downloads/snake_overloaded_source_demo/", line 11, in <module>
    from scripts.main.main import main
  File "/Users/maartene/Downloads/snake_overloaded_source_demo/scripts/main/", line 1, in <module>
    from scripts.main.window import Window
  File "/Users/maartene/Downloads/snake_overloaded_source_demo/scripts/main/", line 7, in <module>
    from import AudioHandler
  File "/Users/maartene/Downloads/snake_overloaded_source_demo/scripts/audio/", line 1, in <module>
    import pygame.mixer
ModuleNotFoundError: No module named 'pygame.mixer'

Do I need to run a different command? (note: I have pygame installed).

Hope you can help.

  • 3 years ago • edited • 

Hi @maartene,

That seems very strange, it looks like you don't have pygame mixer for some reason. I notice you have the dev6 version, I'd recommend updating to the newer release version (which has no .dev ending) to see whether that fixes anything.

I also found this reddit post which may (or may not) be of any help to you (try reinstalling/updating pygame 2 before you try reinstalling sdl_mixer)

Hope this is useful.

 • 3 years ago • 

First thoughts

Starting with campaign mode:

  • Music is too loud, even after changing the volume to 1.
  • The game was very small on my 2560x1440 monitor
  • The game start animation looked nice
  • The snake is very slow because the game has a lot of tiles
  • Retrying with space would be comfortable
  • I really liked the idea of the AI snakes competing you!
  • Surviving 2 minutes (lvl4) can be exploited by spinning in the same place. Eating is pointless.
  • The 1v1 on level 3 was very fun! The apples came a little slow, but this was my favorite.
  • Freeplay mode was also fun, but I think I liked the levels more.


  • It was a bit slow at times, but it had some good moments
  • It was a bit short so far.
  • I hope to see more creative levels just like these.


  • Music was great.
  • I would have liked some basic sounds when you collect things or when you die.


  • The tile-based graphics were quite unique, nothing too crazy and clean / simple. The design was intuitive.
  • 3 years ago • 

Hi @Sycix, thanks for your feedback.

A few points which I hope help:

  • Music too loud: I've had some issues with this, I think I may have messed up the volume scaling, I'll look into that - it may be something to do with linear vs logarithmic scales

  • Resolution too small: Under settings>display>resolution, you can set the resolution to 1920x1080, which I hope should mostly fill your screen.

  • Snake is slow: At least for freeplay, you can choose the difficulty, which varies the snake's speed among other things. Chances are, it is not lag but just the snake moving step-by-step. I wasn't sure whether to smooth it out or not, because then issues arise such as handling turning when the player is halfway between two squares. You can also turn fps display on to check there is no lag (settings>display>show fps)

  • Sound effects: That is coming, I admit that is a significant feature which I have not yet had time to implement, but I hope to add that around the same time as the multiplayer update.

  • Campaign levels: I'll look into redesigning level 4, thanks. I plan to add more too (hence the 24 placeholders)

  • If you're up for a challenge, you can manually unlock level 9 (which is currently unaccessible) by adding 8 to the levelsunlocked list in userdata.json

Thanks for playing, I sincerely appreciate the detailed feedback you've given, and I hope I can fix the issues you've found quickly :)
If you have any particular requests (level ideas, features, extra settings options - e.g. a particular resolution, etc) please do comment either here or the page and I'll compile a document of things to add

 • 3 years ago • 

@IronScorpion I seem to luck out completely with pygame, because not even the built in test/example game works:

% python3 -m pygame.examples.aliens

pygame 2.0.0 (SDL 2.0.12, python 3.9.0)
Hello from the pygame community.
Sorry, extended image module required

Probably an issue with the macOS version of python/pygame. If someone gets this game to run on macOS, please let me know how. Looking forward to playing this game!

 • 3 years ago • 

This is a great take on the classic snake game! I had no immediate technical issues.

The graphic style is nice and communicates the game logic clearly. It is easy to distinguish all gameplay elements. The soundtrack is a nice tune that fits the style very well. It was a bit loud, but I just reduced the volume via the windows audio mixer.

The additions to the classic snake gameplay work very well and I had a lot of fun caging the enemies. The Power-Ups and Blocks are also a nice feature. I would love to see more levels and challenges, as they were really fun to play.

Multiplayer would also be awesome, I am looking forward to this.

I personally remember the classic nokia snake input scheme in a way that you only have left and right buttons and that the new direction will be the current direction rotated by 90 (counter-)clockwise, depending on which button was pressed. The current input scheme with all four directions works, but I had to get used to it, first.
The only downside I have is that a download of 100MB for a snake game seems like alot, but I don't know, which support libraries you need to ship, in order to make it work.

All in all, a great game, well done!
I would love to play the finished version. Speaking of it: Do you plan any commercial release?

  • 3 years ago • 

Hi @Laguna, thanks for the feedback.

I originally planned this game to cost a small fee on, but for several reasons, including the fact that the basic snake mechanics aren't original (the powerups and blocks were my own idea though), and also no one was willing to pay for the game when I tried releasing it for $1. I have allowed donations on however, so I'm hoping anyone who feels the game is worth something might donate - I'm planning to move to C#/Unity soon, and produce more advanced, better performing games (my first commercial game will hopefully be a 2D KSP-style rocket sim with alien and other features).

I am working on multiplayer, I've designed the networking 'protocol', and I've made most of the wrappers for the networking libraries, I just need to finish the multi-threading wrapper and then implement it. Hopefully no more than a week or so before a basic version is released.

Levels can take a while to design and test, which is why there are only a few, and I've been focusing on getting multiplayer working first.

I've had problems with audio on the compiled version, which is why I have had to resort to using .wav files instead of .ogg files (pyinstaller seems to hate .ogg files for some strange reason). The source download still uses .ogg files, which makes it a lot smaller. (If I remember correctly, the audio accounts for around 50% of the compiled version).

I have played snake on a nokia a few times, and I've always remembered the controls using four arrows, so I used this idea, now that you say it only had left and right buttons, I think you're right and I remembered incorrectly, so maybe I've just invented my own control scheme! I had to improve the system to make sure that if you pressed two different keys with very little delay between them, it wouldn't change the snake's position twice in the same 'step', but would queue that key press until the next 'step'. I felt this change made the controls much smoother and more intuitive.

If you feel like designing your own levels, it is not actually that difficult. You can probably see if you've looked in the level files, it's pretty much just a list of actions which happen at certain times/events, along with some metadata including how to detect if the player has completed/failed the level. I may upload the summary of the level file specs, as well as a basic level editor if people are interested.

I think the loudness of the music is due to the way pygame handles volume, or I've messed up the scaling of the volume sliders in settings or something.

Thanks for playing, it's great to know that you've enjoyed it.

Login to comment






High scores Submit score

Be the first to submit a score!