IS480 Team wiki: 2010T2 CrusNitor MidTerm
- 1 Project Progress Summary
- 1.1 Project Highlights
- 1.2 Project Management
- 1.2.1 Project Status
- 1.2.2 Project Schedule (Planned Vs Actual)
- 1.2.3 Project Metrics
- 1.2.4 Project Risks
- 1.2.5 Technical Complexity
- 1.3 Quality of Product
Project Progress Summary
The following are the chronicles of our IS481 journey up till the mid terms.
Steep Learning Curve
We had underestimated the initial time we needed to learn and get fully accustomed with the programming language of Objective C. Initially we had estimated that we will need about 2 weeks to master the language. However, we took about 5 weeks to grasp the basics and concepts of Objective C. The difficulty arises from stark difference between the syntax of Objective C and Java, the language we are most familiar with. Further complicating the learning process was due to the fact that we also had to learn the frameworks of OpenGL and later on Cocos2D.
Freelance Designers for Game Art
One of the most major concerns of our project was the apparent problem of not having any graphic designers in the team. This is a critical area as besides the game play, the aesthetics of the game also forms a major component and attractiveness of any games. We are fortunate enough to link up with a group of freelance designers. They were kind enough to design and develop the animation for our game characters for free, on the condition that they are entitled to the ownership of the game assets. Thus we developed an agreement where we will own the codes of the games and will feature a credit page within the game to give the designing team the due recognition for the game art.
Increased risk in terms of schedule and project control
While the collaboration with the freelance design team was a boon for us, it also presented us with increased risks. We have to re-factor our timeline and produce a more agile development schedule. This is because the game art and asset production takes time. This means that we have to possess the flexibility of working on other aspects of the game while waiting for the assets to be produced. Subletting the asset development out to the design team also means that we have increased the risk of not having full control over one of the main aspects of game development. As such, we will have to take this new risk into account and come out with mitigation strategies.
We have restructured our scheduling and development plans to induce more flexibility. This is so as to allow us to continue developing the game concurrently while the designers are developing the game arts assets. We aim to work on other aspects of the game whenever we experience waiting time from the asset development. This is to ensure that the project will keep on progressing. This also allows us to periodically analyze our game system and conceptualize development areas that we have overlooked during our preliminary planning sessions in the Inception and Elaboration phases.
|Wireless connectivity||Fully deployed and tested||1||May install a heartbeat mechanism to enhance it.|
|Directional-Pad||Fully deployed and tested||1|
|Primary attack||In progress 10%||0.9|
|Special ability||In progress 5%||0.8|
|Artificial Intelligence||In progress 15%||0.8|
|Game score||Not yet started||0|
|Basic UI Server-side||In progress 10%||0.8|
Project Schedule (Planned Vs Actual)
Among the main realizations that we have made is that the development of the game artificial intelligence (AI) and game physics will have to be developed incrementally as the project progresses. This is very different from our initial conceptualization where we figured that we can develop these two components in a one-time off basis. These components will be continually build upon and revisited at the start of other iterations so as to ensure that the development is in line with our vision for the final game product.
The 14 March deadline takes into account of our Alpha game version milestone and gives us some time allowance to factor in feedbacks from our UATs before we freeze our development work before the code freeze milestone is induced.
|Iteration||Feature||Planned Date||Actual Date||Comments|
|Construction Iteration 2||Milestone First Playable Version||11 Feb 2011||25 Feb 2011||Delays in game asset production|
|Construction Iteration 2||Game AI Development||28 Jan 2011||14 Mar 2011||Development will be ongoing instead of one-time off task. Will be revisited at the start of each iteration.|
|Construction Iteration 2||Game Physics Development||8 Feb 2011||14 Mar 2011||Development will be ongoing instead of one-time off task. Will be revisited at the start of each iteration.|
We had set aside a buffer time of about 10 days within the project schedule. This buffer time acts as a safeguard to give us time allowance in the event that we go behind time. This buffer time can also act as the spare time for us to work on extra features that we would like to develop in the future or introduce features that we have overlooked during our preliminary planning. We designed a schedule metric that takes into account the number of buffer days left.
Optimally, we would want to leave the amount of buffer time we have untouched for rainy days. However, realistically we may experience delays throughout the project. The highest risk of this situation occurring is getting the game arts asset production to keep pace with the speed of development.
Thus whenever we go beyond schedule, we will deduct the number of days that we have gone beyond the schedule from the buffer day bank. We have color coded the status of the balance to reflect the gravity of the situation as follows:
Green – 8 days or more left
Yellow – 4-7 days left
Orange – 0 – 3 days left
Red – less than zero days left
We would want our schedule status to remain at least in the yellow zone. Should we ever hit the orange or red zone, we would then know that we have to take drastic measures to overcome the predicament. This portion will be covered within the risk assessment and mitigation strategies section.
We have designed a metric that helps us to track and trace the bugs encountered. The main units of measurement for the metric are the total number of bugs raised, resolved and closed.
- Bugs raised – Refers to the bugs that are found by the tester and referred to the developer team for resolution.
- Bugs resolved – Refers to the bugs that have been solved by the developer team.
- Bugs closed – Refers to the authentication that the resolved bugs have ceased to produce the failed test case outcome and the bug report closed. This acts as a 2nd layer of check.
Bugs found will be prioritized by the tester in the test case documentation. Bugs that have higher priority will be put in front of the queue so that it can be resolved first. The priority level are assigned by the following guideline:
- Priority 1 bug - Bugs that affects core functionalities of the application critically and in need of urgent resolution
- Priority 2 bug - Bugs that affect the game play of the application but not in a critical way.
- Priority 3 bug - Bugs that are minor in nature and does not cause major disruption to the game play
The statistics we can derived from the number of bugs raised, resolved and closed will allow us to forecast on any possible delays that we may encounter during the course of the project. For instance, having numerous unresolved Priority 1 or 2 bugs would signify possible bottlenecks in the development work, as these bugs would not allow nor facilitate the later development works to function properly.
The following are the revised risk assessments we have made since our Inception Phase.
|Risk ID||Risk||Likelihood||Risk Impact||Comments|
|1||Slow progress due to steep learning curve of Objective C||Medium||High||Likelihood raised to 'medium' from previously 'low'. We had underestimated the complexity of learning the language and relevant frameworks needed for the game development. Even at this stage, we are still learning many new things with regards to the Objective C language.|
|2||Lack of experience in game development||Medium||High||Likelihood lowered to 'medium' from 'high'. We have coped well with the development work. Our main developers Jaryl and Clement had been spearheading the direction and coached the team with the mechanisms of game development. Referring to books and online forums has helped to mediate this risk.|
|3||Fall behind schedule||High||Medium||This risk came about as the game art assets production will take time and not keep pace with the development work.|
|4||Lack of control over game art asset production||Low||Medium||This risk comes about as we have let out the design portion of the project to the design team.|
Risk Mitigation Strategy
|Risk ID||Mitigation Strategy||Mitigation Type||Risk Impact after Mitigation|
The technical complexity of our project can be categorized based on the following areas:
- Programming Language
- Graphics and game art
- Game concept
The programming language utilized for our project is Objective C. The structure and syntax of this language is extremely new for us. Unlike most other programming language, Objective C is based on message passing to object instances. Furthermore, it requires to have the interface and implementation components of its classes to be declared separately, by placing the interface in a header file and the implementation in a code file. The instantiation of the objects are done by allocating the memory first and then initializing it. It has a very different syntax as compared to most other programming language. Unlike in Java, we have to handle the garbage collection by ourselves in Objective C. These new learning points (and many more) made it extremely challenging for us to pick up Objective C in the relatively short time that we have before we started our development work. Even till today, we are still learning and familiarizing with the language.
The usual methodology of coding in Objective C is usually based on the inheritance hierarchy. For the purpose of our game application however, we had adopted a component-based architecture. A component-based architecture allows us to introduce the element of reusability and allows us to develop programs quickly. For instance, within our game, there are multiple assets that share the same components of health. The component-based architecture allows us to create a generic health component. The health component can be shared by all the assets, where adjustments can be made to the health properties of each individual asset.
We also adopted the Cocos2D framework for our game development purposes. Cocos2D is a framework for developing 2D games and graphical applications. This open source framework allows us to maximize the flexibility it induces and optimized data structures. It also has an active community, allowing us to have sources of references for our development. Many game development elements are present within this framework, allowing us to have a relatively easier and faster time developing the game application.
Graphics and game art
We are also exposed to the different stages of game art and assets development, courtesy of the design team that is collaborating with us for this project. The art is first drawn and sketched by our artist and is put forward for amendments and approval. Once approved, the artwork is then digitized and modified to fit to our game context. Animation is then added to induce movements and actions on the assets. The design team is also responsible for the design and production of the game UIs. We are appreciative to have been exposed to this aspect of game development, as no one within our FYP team has any prior knowledge nor experience with art and animation design.
The game concept is relatively new and not yet prevalent in the gaming scene. Using the iPad as a console and iPhones as game controllers as a concept is still in its infancy stage and there is very little games within the iTunes AppStore that adopts this methodology. Hoping to be a trendsetter, we have almost no points of references to model our project after, further adding to the complexity of the project.
We have utilized multiple software during the course of our project. Given the nature of our project, we are exposed to many new software which we had not have the opportunity to do so during the course of our education in SIS. Among the software that we had utilized are:
- XCode - IDE for Objective C
- Tower - a tool we utilize for subversioning our codes and collaborative work
- Zwoptext - creation of sprite sheet
- Photoshop/ Illustrator - Editing of graphics
- Navicat - for database purposes