Light snakes by Sentmoraap
How to play
This is some kind of multiplayer snake or light cycles. Your goal is to score points by letting other players crash into your tail. Intersecting yourself counts as a suicide and makes you lose one point.
Each time you die, your length resets and you are temporarily a ghost. You must break blocks to grow. Your length is reduced when another player crashes into you.
When two players have equal points, the player who scored the lastest is beaten by the other player.
This game is for 2 to 4 players. I didn’t have the time to implement bots. If you want to try it alone, map some keyboard keys to other players controls, press them randomly to give other player random directions and pretend it’s very dumb bots.
Controls
|Action|Keyboard|Gamepad| |-|-| |Pause|Tab|Start| |Reset|R|Select| |Turn left/right|Arrow keys|D-pad or left joystick|
Controls are remappable.
Default controls assigns 1st player controls to the keyboard and the 1st controller, and other players controls on subsequent controllers.
Keyboard controls are scancode-based. For example, on a DVORAK keyboard reset is P.
Installation instructions
Just uncompress and run the binary.
On Windows you may need to install Microsoft Visual C++ Redistributable packages.
Note that whatever counts as a “initial engagement” costs 0.00€ (≃ 0.00$) so all the installs shouldn’t cost me a fortune.
Stuff used
- Dear ImGui
- Lazẏnput
- nlohmann::json
- OpenGL 3.2
- SDL
- SFXR
- My own base code using all of the above
- A custom fixed point template class
My goal was to see how annoying it is to use fixed points. There was some annoyance and bugs due to fixed point, but the biggest pain was C++ metaprogramming.
Thanks
Sébastien Garnier from Start Coffee for some playtesting.
Screenshots



| Link | https://sentmoraap.itch.io/light-snakes |
| Link | https://sentmoraap.itch.io/light-snakes |
| Link | https://sentmoraap.itch.io/light-snakes |
| Original URL | https://ldjam.com/events/ludum-dare/54/light-snakes |
Ratings
| Overall | 246th | 3.354⭐ | 26🧑⚖️ |
| Fun | 223th | 3.313⭐ | 26🧑⚖️ |
| Innovation | 158th | 3.52⭐ | 27🧑⚖️ |
| Theme | 264th | 3.3⭐ | 27🧑⚖️ |
| Graphics | 99th | 3.86⭐ | 27🧑⚖️ |
| Audio | 136th | 3.396⭐ | 26🧑⚖️ |
| Given | 32🗳️ | 25🗨️ |
I only played on my own for a bit, but this seems really neat. Having a direction-dependent turn is crazy difficult for me though.
It's very impressive what you managed to create without using an engine in such a short time!
however since i'm alone right now i will wait someone to play a real party to give a fun rating .
If you were dots after shrinking and not crossing anyone, it’s because you crossed youself. It may happen after destroying blocks, especially while turning. If you just shrunk, then it’s because you killed someone and you are shrunk up to the collision point. The latter is done to balance the game.
1. I tried to launch the linux build, but it depends on libglew 2.2 and I only have 2.1 (Ubuntu 20.04)
2. Not discouraged, I downloaded the windows build and tried it under wine, but I was missing the Microsoft Visual C++ Runtime Redistributable. I installed it in wine, but it looks like my version of wine is missing some APIs the game uses, so it crashes on launch.
3. I then tried building from source. This gave compilation errors on my machine because `Lazynput/PrivateTypes.hpp` contains a declaration of `StrHashmap<ConfigTagPresent>` but `ConfigTagPresent` is an incomplete type at that point, which is something that apparently compiles fine with some STLs but not others. Swapping the definitions of `ConfigTagBindings` and `ConfigTagPresent` fixed the error for me, and I was able to build the game.
4. I then tried to run the game, at which point it segfaulted immediately. I can't seem to get a debug build working due to linker errors with my system's libinotify, which I assume is a dependency versioning problem.
5. Finally, I tried to see if I could run the windows build under Proton, where it worked just fine. Kudos to Valve.
The game is super neat! The movement feels super smooth and the whole thing has a nice feel. I wish there were a "person-v-computer" mode, though, so I could get a better feel for the mechanics. The turning radius is a bit wide, but I think that adds nicely to the challenge and could imagine getting more skilled at controlling the snake. I think it might be better if it weren't possible to accidentally clip yourself, though, since that seems to happen fairly easily when bouncing off walls while turning and somewhat limits the ability to perform tight maneuvers.