GNOME Nibbles 3.20

GNOME Nibbles is probably my favorite GNOME game. This Snake game has been around for a while, and unfortunately the current version is showing its age:

Nibbles 3.18
Nibbles 3.18

Iulian Radu, my Google Summer of Code student, worked on modernizing this game last summer, with top-notch design and artwork assistance from Allan Day, and some good contributions from Gabriel Ivascu and Razvan Chitu. The result will be released in two short weeks as Nibbles 3.20. I’ll let a screenshot speak for itself:

Nibbles 3.20
Nibbles 3.20

As you can see, it’s still mostly the same Nibbles as before. There are only a few minor gameplay changes; you now have a countdown before each level starts, for example, and there’s now some extra time for you to get your bearings when your worm dies and respawns. The biggest change is that players now start with six lives rather than ten. The reason for that change was probably just to be able to fit all the life icons nicely in a line, but it seems like an appropriate gameplay change too, as you won’t lose many lives on invisible obstacles on maps with teleporters anymore, an annoying bug in the current version of the game that no longer occurs. It’s a lot easier to progress when your worm isn’t dying seemingly at random.

Iulian also rewrote the game from scratch in Vala. Due to uncertainty regarding the future of the language, I’m not sure if I would recommend Vala for an important desktop application, nor would I recommend rewriting large applications in general. But it’s undoubtedly a very nice language, and it’s a huge readability and maintainability win that significantly lowers the barrier to entry for new contributors. I think it’s an excellent choice for a little game like Nibbles.

There’s also a new scores dialog, which resurrects an old feature: if multiple players play under the same user account, you can once again store your high scores under separate names:

What's your high score?
What’s your high score?

Nikhar Agrawal began developing this as part of a little scores library for his Google Summer of Code project in 2014, and the code is finally ready for prime time. In 3.20, this library will be used for scores by GNOME Klotski and GNOME Robots as well, and probably by all our games that track scores in the future. This means we can make changes in one place, instead of making the same change in a dozen different games. For instance, if anyone wants to fix the column spacing, or bring back the ability to share scores between user accounts (which was removed a couple years ago), that should now be possible without modifying any of the games. Unlike past scores transitions, no old scores will be lost this time around.

Lastly, a few tips. Watch your tail closely whenever a diamond (which reverses enemy worms) appears on the board. It’s easier to notice diamonds if you turn on the sound. Be careful on level six, keep to your half of the map on level seven, and congratulate yourself if you can make it past level 15 (as far as I’ve ever managed to reach).