PROJECT MANAGEMENT
Project Management One of, if not the most important aspect of software development It is also one of the most neglected Programmers aren't good at it But it s not too hard if you've done the prep work We'll describe something light and easy, suitable for your type of project Inspired by agile methods, particularly Scrum
Overview The creative aspects of game development resist heavy up- front, on paper design Iterative methods embrace the chaos more effectively We've broken up your assignments into several milestones A working version of a game that incrementally converges to the final product So, how could you go about working on your milestones?
Creating a Feature List First, define the features that comprise your game This includes any documents, designs, art, sounds, code, etc. And assignments! Derive this from your high concept (assignment #1) Get as much detail as you can, but keep in mind there are a lot of unknowns at this point The whole team should agree with this list
Estimation and Prioritization For all the features, estimate time to complete all aspects of the feature Coding, tuning, testing, documentation, integration Be conservative Adjustments can and will be made throughout the project Assess risks unforeseen circumstances will come up Consult with us if you need help Determine how important the feature is to the quality of the final product (impact) Priority is a function of cost (time) to complete and the impact to the project Watch for high-impact, low-cost features (high priority),and low- impact, high-cost features (low priority)
Risk Management Why? Why? Risk analysis is a requirement of the technical design process Games are never finished early Not everything can be known in advance People tend to be optimistic with estimates Specifications change People quit, get sick, have family obligations For you: other courses, midterms Identified risk can be managed Unknown risk will bite you at some point
Risk Management Process Identify risk Decide: Will deal with it proactively, i.e. eliminate it upfront Adding contingency padding to the schedule is the default option Try to be smarter than that Usually still need a reactive plan Will deal with it reactively, i.e. when it happens Requires clearly defined triggers Requires a contingency plan upfront Usually still need contingency padding to execute the backup plan
Milestone Definition Get the team together Examine the feature list Agree to the features that can be completed for the milestone Pull them off the feature list Agree who owns each feature Typically features need further breakdown into multiple tasks Determine dependencies between tasks Leave paper trail
Task Breakdown and Estimates Break down features into 1 hour to 3 day tasks If a feature requires a technical design, make this a task Don't forget non-code content Don't forget about integration, testing and tuning Try to balance work so everyone finishes at the same time Easier to do the less territorial the code is
Task Breakdown and Estimates Beware of vague tasks e.g. Graphics Engine: 2 weeks If a task estimate is longer than three days, break it up into smaller subtasks and track individually Graphics Engine: 3 weeks mesh rendering: 3 days background rendering: 1 day vehicle rendering: 3 days text system: 2 days etc.
Dependencies Task A has to be completed before work on Task B can begin Dependencies lengthen the schedule Track across tasks and across people Avoid log jams Utilize flexibility in the order tasks can be completed
Creating a Schedule First pass: 1. List all tasks to be completed in breakdown 2. Determine who will complete each task 3. Add up completion estimates This will generate an initial completion date for the milestone at the current level of scope The first estimate will be: Very late Wildly optimistic
Scoping Scoping is the process of dropping tasks/features of the game to make the milestone schedule achievable. Importance of features determined by the priorities in the master feature list. Start with lowest priority features first. Re-evaluate schedule after each scoping pass. Scoping can happen at the feature (pre-milestone), or task level (during milestone).
Creating a Schedule After the first pass of scoping: 1. Add 30-50% contingency padding 2. Determine and balance dependencies Iterate until it works Variables: Number of tasks Scope of each task Person assigned to the task
Tracking Progress Scrum style Get together every day for a 15 minute meeting Everyone answers three questions: What did you do since the last meeting? What are you doing until the next meeting? Is there anything impeding your progress? The first two questions are used to track the progress of the milestone (are you late?) The third identifies issues that require additional action (recall risk analysis) Leave paper trail
Adjustment What do you do when things start to go off the rails? Use up some of the contingency time Redefine the task (make it smaller) Steal time from another task Work longer hours to "make up the time" What you do depends on the task in question Is the task related to a critical, or optional feature?
Adjustment cont d Projects that are behind schedule stay that way unless swift action is taken to fix the problem Daily meetings catch problems quickly Excessive overtime creates stress, degrades morale, and ultimately lowers the quality of the product It would be nice if it could be totally avoided Honest project management works
Shipping a Milestone Give yourself a couple of days before the milestone date for integration and testing Last second feature additions will destabilize the build Get ready for the next one Were any features incomplete? Throw them back onto the master feature list Conduct a post mortem...adjust the process Revisit master feature list Examine priorities, make adjustments, estimate with new refined knowledge If adding features to the game, use a zero-sum approach An equivalent cost feature has to be removed Repeat!
A Good Overview http://codebetter.com/blogs/darrell.norton/articles/50339.aspx
Conclusion Agile project management accounts for the inherent unknowns of game development It's not hard to employ in practice Fine grained estimation, tracking and adjustment keeps you honest Problems are found early You aren't flying blind