Hey Thanks for the great feedback, first of All I'm really happy that you enjoyed your time with this little project of ours.
It's funny to me that not everyone gets stuck on the same levels but that the difficulty curve overall seemed to have done it's job.
Regarding the tail, and sorry If I get way to technical, to understand the issue you must know that the snake is comprised of segments, each segment multiple things one of which is the spirte. The snake segments are stored in an Array And I change the sprite of each position considering multiple things: position in array (first is head, last is tail), last key pressed, orientation of segment before in the array.
When the snake "eats" and apple it actually adds a segment to the back of the snake, but since the "old back" was displaying the tail, the "new back" spawns with a tail also and you end up with a snake, that has two tails one after the other, mechanically all fine but graphically very immersion breaking.
My sleep deprived brain found a workaround to this bug that was moving one tile forward, since I'm updating the sprites of each segment each time it moves so It graphically fixed itself...
The next day I realised that was supposed to be a quick fix ended up being quite an interesting puzzle mechanic forcing the player to think a bit more before blindly moving and eating.
we are intending to add an "enthusiastic lunge" animation each time the snake eats an apple to better convey this "Bug" turned into a "feature"
So yeah, The project has quite a bit of technical debt as every game-jam submission I suppose given the time constraint but this is something I will leave in even after the factoring of the codebase. But yeah I rewrote my whole collision detection that holds together with duct-tape and a dream as you have seen for yourself ^