General Discussion

Yup, MySQL is fine, with SQLite for local database (i.e. not authenticated).

I'm going to post the components in about 5 minutes.
 
Okay, so these are the main components of the system as I see them. Feel free to add any comments as to whether you think certain components are missing or shouldn't be there, etc.

Simulation Engine
This is the core component. It will be responsible for simulating the matches given the teams and grounds and such. The subcomponents/further description follow:

- Three engines (T20, OD, FC)
- Most current rules (no balls, free hits, powerplays)
- Commentary
- Game state/strategies (intelligent batting pacing, intelligent bowling changes)

Backend
This component is basically the database layer. It will be abstracted enough that we do not have to write any (or too much) SQL code. Additionally, the location of the DB must be abstracted so that the rest of the program doesn't differentiate between where it is writing to.

Statistics
This portion is responsible for managing statistics of the simulator. The various requirements/subcomponents are described below.

- Database design
- Creating/editing statistics (player, team)
- Querying (by player, by team, by tournament)
- Records (individual records, team records, batting and bowling records)

User Interface
This is the UI that is used by the simmers. It must support the following operations (CRUD = Create, Read, Update, Delete).

- CRUD players
- CRUD teams
- CRUD tournaments
- Play matches (select line-ups, pitch condition, output scorecards and commentary)

Fixture Engine
This component is responsible for constructing the fixtures. Ideally there should be some sort of generic way to specify fixtures (I'm thinking XML). The engine should be able to parse that format and construct the required matches.

- Define XML format
- Use results to compute tournament details (update points table, net run rate, etc.)
- Provided XML for specific tournaments (PCCL, PCPL, Bilateral Series, Triangular Series, World Cup)

Authentication
This is used to authenticate access to the database. This may be as simple as using the built-in MySQL user lists to authenticate, but just in case we don't, we can abstract away authentication.

- Access control lists
- Authentication to server for DB manipulation

--

Feature team, please let me know what features you are interested in. I think we should leave the Simulation Engine for last, and build all the intermediary components first. For example, we should be able to complete the Statistics component without having the simulation engine done.

Once everyone has told me what they'd prefer to be working on, I'll split us into teams. People may belong to multiple teams. Team leaders will be responsible for designing a class diagram/UML/interfaces for their component. If anyone is not familiar with this, I can provide examples. Once everyone is satisfied with the design, I will unleash you to coding your various parts!

And a note on SVN, it will be coming soon. Once we finalize our component list I will create a project for each component and upload the solution to SVN. Everyone will then be able to log-in using the username/password they gave me and download the files. I can give you a little SVN primer at that point if you want. For now, if you are on Windows and don't have an SVN client, you should go ahead and download TortoiseSVN.

sohummisra added 1 Minutes and 47 Seconds later...

Cool.. You'll have to explain a lot though. I'm starting to feel n00bish.
Don't worry. This is my first time managing a project. I've worked on a fair number of projects with team sizes > 1, so I've got some experience on what works and what doesn't work.

If you are at all interested in software as a profession, I promise you that you will take a lot away from this experience--more than just knowledge of C#. Heck, even if I am a crappy project manager, you will learn how not to manage projects. ;)
 
Cheers mate, You're doing a great Job so far.

Just downloaded TortoiseSVN. - don't know whats the use though.

Certainly interested in the Simulation Engine, Backend and Statistics.
Not sure about the fixtures part, coz i haven't got a clue about XML.

I suppose the people associated with the UI, will have to be active in the Simulation Engine as well, for ease of understanding.

Due to limited manpower at the moment, splitting into teams may not be a very good option.
 
Just downloaded TortoiseSVN. - don't know whats the use though.
SVN (== subversion) is a version control software. This basically allows you to (a) work on the same files as a team at the same time and (b) backup your previous changes in case something goes wrong. So all the changes are going to be stored on the SVN server (hosted on cricketcareer.net--auth details forthcoming). Everyone will be able to checkout a copy of the code using TortoiseSVN or some other SVN client. You will then be able to work on your changes even while someone else is working on the same file. When you check back into the server, it will be intelligent enough to merge things together (or it will prompt you telling you to manually merge).

So if your computer crashes, all the files will still be on the server. If the server crashes, hopefully someone will have the latest copy of the files. ;) And we don't have to be emailing source files around and waiting on each other to give us the latest version.

Certainly interested in the Simulation Engine, Backend and Statistics.
Not sure about the fixtures part, coz i haven't got a clue about XML.
Cool, I'll make a note of it.

Due to limited manpower at the moment, splitting into teams may not be a very good option.
Good point. I'll see what others think of it. If we decide to work on everything together then we will have to come up with a timeline of what we want done when. I think everyone should work on the simulation engine, but other things may be split up better. Even with teams, you will belong to multiple teams to make sure you don't get bored working on one thing. Also, each person will be responsible for a component being finished--not responsible for coding it himself. Of course, I'm willing to rethink this team structure.
 
With commentary do you want us to submit lines for that? Maybe we can take some from TAOC or Battrick and alter them a bit.
 
Could I join you guys in some lesser role? I've only recently started taking courses in Java, C++, and C#. I just finished my first year in college actually, so I am not as experienced as you guys, but I would like to learn from observing you guys work and perhaps doing some things myself.
 
Could I join you guys in some lesser role? I've only recently started taking courses in Java, C++, and C#. I just finished my first year in college actually, so I am not as experienced as you guys, but I would like to learn from observing you guys work and perhaps doing some things myself.
Most definitely. :D
 
Thanks, Sohum. I'll start reading up on relevant programming guides on MSDN.
 
Great. We need more people to join in as coders :)

Pal, I've got very less experience as well. I recommend, start with basic programs, and try out various examples to get the confidence :)

Abhas added 20 Minutes and 28 Seconds later...

@ Sohum, I have been using labels and goto in my programming. I know it is not recommended, and i worked a way around, using while loops and recursive functions.

I would like to know whether it is okay if a few goto and labels are used?
I remember my teacher in school used to frown and make stupid faces the moment she saw a label :p
 

Users who are viewing this thread

Top