Thursday, March 29, 2007

Project Plan

At the end of last semester, Pete and I talked about starting a project and he pitched his idea to me about a multiplayer game that pits two players against each other in two different games, notably Tetris and Breakout. When we finished the year off, I did a bit of coding in C++ and OpenGL to have a look at how we would go developing this idea, it seemed achievable at the time because I had just finished learning OpenGL and C++ during uni so it was still very fresh in my mind.

Presently we've just started back at university, and its been a long four months. I really haven't had any time to keep coding since I've been busy working, but I think with a few weeks of coding I'll get back into the swing of things, I had the same problem at the beginning of last year and it only took me a week or so to get back to were I left off.

I've been working on and writing down notes on some things we can put in our project proposal, but I also took some notes down while Pete and I were at our studio's tutorial. Below are the notes I took down during the tute and the notes I came up with for the proposal and the project, the way I write down my notes should reflect my thought process and how I identify and solve problems.

What language should we use? C++ vs Java - Pros + Cons?
C++ is a very common language, it is very powerful and is favoured by industry when developing. On the other hand Java is a new and also very powerful language, it has a lot of libraries and classes that are easily accessed. I'm not going to go into in depth detail about the real pros and cons of both of these languages.

Do we want the game to be multi platform? Windows, Linux and OSX.
In my opinion, yes!@! Their is a shortage of good games available on non-standard operating systems like linux and osx. Obviously this isn't a major issue and is actually probably quite trivial, but none the less I think its important that we think of these type of things.

We will need to implement modules like a Particle Engine and Collision Detection, which can both be fairly complex, especially when dealing with 3D graphics (OpenGL/DirectX).

A GUI (Graphical User Interface) will be required to operate the game(s), what will this look like? How will it be implemented, using OpenGL or Swing controls?
I can't really explain how the GUI might look at this stage, its still early days, but I should try and get a concept idea drawn up for this project plan, just for show. About implementing it, well initially we WILL be using Swing controls because its a quick and easy way of debugging the game and testing it to see if things work.

On the topic of testing, we might actually need to get a few friends or associates to help test the game(s) for bugs, I don't think between the both of us we will have enough time to accurately debug all of them before the end of the semester.

The networking side of things, do we develop just a client? Do we develop a client and server, using application tier architecture?
We'll the networking part of the project should be the most interesting, this is the sole purpose of creating this project in the first place, so players can compete against each other. Well, making a client that can serve as the host of the game should work most effectively, I've seen many older games like this before and they have been successful. What would be the need of having a server? A centralised server could be used for advertising open games so players are not just limited to playing with their friends, and also possibly a scoring system or ladder for recording players high scores or ranking. This area has a lot of room from discussion and a bunch of ideas, but I think we need to stay conservative and try to bite off more than we can chew.

OpenGL or DirectX?
To start with, I have zero experience in DirectX, but i do have some in OpenGL, I was fortunate enough to have James Sofra teach me 3D programming last semester, which I enjoyed thoroughly, and feel confident that we can tackle this project head on in this department. Though I don't have a LOT of experience in OpenGL and this will still be a major learning curve developing something of this scale and magnitude.

Which IDE do we develop in? Netbeans? Eclipse? VS.NET?
I think any one of the IDE's above are capable and usable, Pete and I both have experience in all of them. I think the main reason for asking this question is to find out more specifically what CVS client do we want to use? Concurrent Vesioning System (CVS) was designed for developers to use as a way of keeping track of changes to the system, and allow multiple developers to work on the project simultaneously. If two developers write a patch of code in the same file at the same place, they will be shown the differences between each part, and the opportunity to fix up the code, and merge the two patches together. This sort of system is perfect for our project and will play a major part in the development.

No comments: