This was perhaps the quickest thrown-together project I’ve ever produced. It started off as a way to cheat at an online Boggle game a lot of my friends were playing in the ICT suite at college, and moved on to become much more.
What I eventually ended up creating was a multiplayer network implementation of the Boggle game, where a number of players have a set amount of time to find words in a grid of 5 x 5 letters. One a word has been found, it can’t be scored by other players in the game. Longer words get higher scores – the score awarded for any given word is it’s length to the power of 2. Netboggle was written entirely in C# over a few of the closing weeks of my 7 years at Bolton School. Apparently it’s still played occasionally even now, I like to feel it’s something of a legacy I’ve left there.

The Netboggle home screen - a familiar sight for Year 13s
It needed to be Peer to Peer because of the restrictive nature of the network at school, and also the fact that people would drop out randomly and might not be in the same room. I started by writing the game engine, that is, the core logic that determines acceptable words using a dictionary and a given grid of letters. This was then combined with a network engine that coordinates the game state across several peers, adding other options like the ability to request to skip a given game (for example, if the set of letters presented is terrible or similar to a previous run) and a chat system to entertain users waiting for the next game to start.Later I added other features like a high scores system (this became heavily contended and pointed to the requirement for some anti-cheat systems to try and avoid the use of the ever-present “Boggle-Solver“ websites – which perhaps ironically this game started out as).

The Netboggle game screen
The best thing about this project was that it was all able to run in the extremely harsh and restrictive environment of the Bolton School internal network. Negotiation for the storage of high scores on external servers required authenticating with various proxies and the evasion of tedious NATs along the way, but it all worked out quite well.
I later added the ability to transfer a game state from one host to another, so if one user hosting a game disconnected, the game could resume on another machine within a few seconds and the players would notice little delay.
Unfortunately, due to the speed at which I wrote Netboggle (spending only lunchtimes and free periods in the ICT suite, coding away, surrounded by 3 or more computers just for me – another familiar sight for Bolton School sixth formers at the time), it isn’t particularly portable. That is to say that it depends quite heavily on the specific network setup at school, for example it looks for certain proxy servers that are obviously not accessible outside of Bolton School.
It is a shame that it couldn’t continue in that form, but it is far too much of a copyright infringement for a start to even consider releasing it. Until then, I suppose my small web-based implementation – NetWords – will have to do; but that’s another story for another time.