How to play
History of Multi-mine
Multimine was conceaved during the summer of 2002/03 with this email
-----Original Message----- From: Clive Sent: Friday, 13 December 2002 3:53 AM To: 'email@example.com' Subject: Network Minesweeper + Linux and modems Get this. Linux detected tone's internal modem no problems. Windows didn't! How cool would playing minesweeper with multiple sweepers! Well I think it would be fun. You could double the speed.. well maybe not quite. Thanks, Clive Gout - It's French for style.
As you can see, the name for the game wasn't quite there yet.
Thankfully Quin sent along the next email
-----Original Message----- From: Quin Sent: Friday, 13 December 2002 10:38 AM To: firstname.lastname@example.org Subject: Re: [UWA spam] Network Minesweeper + Linux and modems You're a CS Honours graduate. You've done the networking course. You write it! :) (no, really, it sounds like fun. I was a big fan of minesweeper. You could have some sort of scoring system where you get one point for each mine adjacent to each square you uncover...) Extra points if you use OpenGL to make it look funky. Extra points for cross-platformness.
Well, at this stage I still wasn't considering making the game. I mean, damn making a game, who would do that! Conrad’s email followed.. since then I’m not sure why he wanted to make the game, while a fan of minesweeper to my surprise, he wasn't very good at it. But never the less, the emails for support do help
-----Original Message----- From: Conrad Sent: Friday, 13 December 2002 11:05 AM To: email@example.com Subject: Re: [UWA spam] Network Minesweeper + Linux and modems That really does sound like fun!
I guess after that perhaps I had begun to start to think about making the game. That's where this email comes into play.
-----Original Message----- From: Clive Sent: Saturday, 14 December 2002 12:55 AM To: firstname.lastname@example.org Subject: RE: [UWA spam] Network Minesweeper + Linux and modems You know. That's just crazy enough to work! Let's make it my 'Learn C++ project.' If not in C++ then just plan C with the windows API. Mmm.. Cross platform.. yeah :P actually, Sam was using this great API that worked in both linux and windows. Wouldn't that be fun. Well I think I'll investigate that and then maybe just do it in windows :P I still need to finish my linux box you know. And start applying for jobs :( Stupid life. Still looking for the >'s in Outlook. I'll find it soon enough. Infact, I'll start looking now. I just watched two episodes of enterprise... and it was DEAD FUCKING BORING. I need some stargate to wake me up. Thanks, Clive Gout - It's French for style.
I'd say C/WinAPI is the way to go, to start off. Or use something like GLUT or glAux to create the window for you. ...nah, just learn to program Windows. It's kinda fun, in an annoying sort of way. :)Tone mutters
i'm in ToneAnd finally the team is complete when Conrad says
Youre all getting me wanting to learn c++ .. in fact I started this morning.. :)
And so the team was made. Over the next month or so we three had a few meetings about how we were going to do things, whether we should use winapi, glut, and most importantly, the name of the program.
Whether this had a dash in the middle, as multi-mine or just multimine it is undocumented but I have used the two interchangeably. The project is called Multimine, but the title of the window is Multi-Mine. After that it sorta petered out as Tone started his PHD and Conrad got his job.
Six months passed until I started to look into windows programming using C++ and multimine.dsw was created on the 18th of June 2003. From that, I made an overall plan about the design of the program, and the interactions between all the different objects. The overall picture was
Input -> GUI <-> Game Controller <-> network <-> server
As I became more and more Object orientated in the design the GUI broke down into ten different objects, the game controller was separated into nine objects, some involved with the GUI and others with the game, the network was broken down into three objects.
The initial design I thought was very well thought out, very modular, and very object orientated, taking a lot of inheritance, polymorphism and other miscellaneous buzz words into account : This was most probably the most thought out project that I had done, where I had most things planned before I actually began coding. It was well thought out because as aposed to my honours project where I didn't know what the end product would be, I knew exactly what I was trying to achieve and the steps to get there.
Now, What happened to Tone and Conrad? Well when I created the project I also created a CVS server where everything was held in the hopes that Conrad and Tone would both check out source code and contribute to it. We had split up the task into Clive does the GUI and game engine, Tone does the networking, and Conrad does the server.
After over a month of hard work on my part, working most days on the project, I had gone too far ahead with the game that neither Conrad or Tone could really pick it all up. I had documented all the functions that I created using doxygen, but it didn't seem to help. When they both turned in the towel I stopped documenting : and just went ahead on my own.
Come August I had done as much as possible without networking, so I began my very first C++ networking program. I started reading about CSockets and CAsycSockets and what not, but when I realised that I couldn't figure out how to get MFC stuff into non-mfc programs, it made it quite difficult. I turned to sockets which I guess are the lowest simplest networking things around. After much reading and trial and error about a week later I had got the program to connect to a server. Finally came the 13th of August, the first day where multimine became a reality!
We started to play around 1:43. Unfortunately tone had a version where the minefield's hash was calculated a different way so every time he would join it would reject him! It was then I realised that having versions would be a good thing to fix that ever happening again. We finally started playing the first game ever of multimine at 2:04 we played on intermediate level and the game was over by 2:05 !
Two weeks later, on the 29th of August almost all of the bugs had been ironed out with a lot of help from all the beta testers, quin, tone, conrad, Richard, cindy, swan to name a few, and ironically the version multimine was up to was 18, so I called it adult multimine.
What was quite funny, was that a lot of the problems which I thought I had fixed in version 18 seemed to have come back and I had a huge long list of problems, scoring was out of whack was the worst, but I think I had finally gotten the chatting working!
Version 19 came with all the problems in 18 completely fixed with a whole new scoring system. As far as I am aware, there is only one more problem to fix in version 19 and when I get around to doing that I hope that version 20 will be the final release of "Multi-mine."