masoug / dodgeball

Simple network-based dodgeball game.
1 stars 0 forks source link

Dodgeball

3D Dodgeball Game

NOTE: Check the wiki for the latest up-to-date information. This readme will only be updated when there is a major release.

In dodgeball there are two teams of six players on opposing sides of 10x10 m court. For the sake of simplicity, this game will not include all the rules and regulations of dodgeball as laid out here (such as substitutes or "The Rush"). Ultimately, this game will allow the users to:

Unfortuantely, due to real-life time and resource constraints, there is a large chance that most of these features will not make be complete. In fact, 3D computer games are notorious for ruining a student's project due to the involving nature of games. It is very likely that over the course of the ten weeks, there will be crippling problems that surface at extremely inconvenient times. But it is this uncertainty that makes game projects so thrilling :)

Plan

In order to address the issues above, I'll be taking a two-phase approach: The first phase is a proof-of-concept app that demonstrates the feasability of the game. If the proof-of-concept app yields negative results, then the project will convert to implementing a simple path tracer. If the proof-of-concept app yields positive results, then the project is officially greenlighted (second phase).

Unfortunately, even though the proof-of-concept shows that such game is possible under given constraints, it is most certainly does NOT indicate a successful project. Chances are, there will be major roadblocks that cripple the project. To account for that, my plan will have "plan Bs" laid out beforehand in case things go awry. Ultimately, if everything crashes and burns, my project will default to the Google AppEngine CMS.

The main objective of the project is to learn how games are put together and how to bring together various different components in a cooperative environment. The actual game's usability or user base is second to learning. Therefore, I predict that the end result of this project will lie between two "states":

Worst-Case

Many roadblocks are hit, causing major parts of the game's features (but not functionality) to be omitted from the result. This is the state where the resulting game doesn't differ much from the original proof-of-concept.

Best-Case

Where all features listed above are met. If I get here, something is wrong with the world (or I just got extremely lucky).

So somewhere between best-case and worst case is where this project will most likely end up if the proof-of-concept passes. In other words, I really don't know what will happen :) The project is a success if it ends up at least the worst-case state.

Timeline

Each week there is a goal that must be met or else the project will immediately revert to the app engine or path tracer "mode" depending on how far along the project has already reached.

Prototype (Week 1)

A proof of concept app must demonstrate:

Multiplayer (Week 2)

This stage must demonstrate multiple players in the game. Players can be controlled with keyboard strokes. Only one screen/view is required, no split-screen needed.

If these requirements cannot be met, then the project is converted to a pathtracer.

Multiplayer II (Week 2)

The multiplayer-ness is enhanced, allowing 6 players on either sides of the court.

If these requirements are not met, then the project is converted to a pathtracer.

FPS Enhancement (Week 3)

Dodgeball requires a wide field of view. Therefore, the camera projection matrix will need to be modified.

If these requirements are not met, then the project is converted to a pathtracer.

FPS II (Week 4)

I'm anticipating issues with the HUD and FPS-ness of the game. The object for this week is to freeze further development and assess the project's state. There may be requirements that have been pushed around, and this week would be the time to fix them.

This is the "point of no return" for the project: Past this point, there's really no turning back. All "failures" after this point would cause the project to convert to the AppEngine state. So I'll be assessing the situation at this point to see if I should consider switching projects to a more manageable one. This is also the point at which if I think the game will not make its goals, then I'll switch my project to the pathtracer. This is the scary part ;)

Networking (Week 5)

Networking will be tricky. Irrlicht is a C/C++ library yet I really want to use python's twisted API. So this week will be to check the feasability of networking. I'm thinking of running a Twisted server that tells each client when to start/stop the game and the ip addresses of all the other players. So the question I want answered by the the end of this week is: Will this game be networked?

Networking II (Week 6)

I'm anticipating that if I deem networking the game feasible, it will take multiple weeks to get it working. Therefore, this week is devoted to planning and designing the roadmap for networking the game. By the end of the week, I want to determine:

Networking III (week 7)

This week is dedicated to implementing last week's network specifications. Specifically, by the end of this week:

Super-Balls (Week 8)

Start experimenting with cheats in the system such as missile balls that track a specific player. Other ideas below:

Finalization (Week 9)

Home stretch! This is the time for polishing the game's functionality, clearing bugs and finishing TODOs.

ROLLOUT! (Week 10)

Further development is now frozen and all effort goes towards fixing bugs and testing the corner cases. Further cleaning and refining of the code and user interface is good, but no new features should be pursued. Possibly employ some "beta testers" to help check the game?

Yay! (Week 10)

Hopefully by now the game is in a good, working state. :) All there is left to do is to play it!

NOTE: If for a given week that most but not all requirements are met, then those unmet requirement(s) may be moved to the next week.

Final Thoughts

This is an ambitious project, and not every part of it will work. There is a good chance of the whole thing crashing and burning but there's an equally good chance that it will succeed. Its like landing the rover on Mars; risky, but fun nonetheless.



Sammy's Project

Right now, I have two ideas that I have been bouncing around in my head:

Right now I'm debating between the game and the appengine projects; the major battling point is between practicality/awesomeness :) Specifically, the game will take gobs more time and effort to complete, BUT its a little funner. On the other hand, the appengine project is very likely to work, BUT it is mostly just reading the API docs and calling functions.

For now, I'm leaning towards the game...