Project Progress Summary
What unexpected events occurred?
- In iterations 2 & 3, our game play changed twice because of pieces of feedback received from our user tests and the team's decision. The main issues which resulted in this was regarding the fun aspect of the game and game scalability. The difficulty with making use of user feedback in refining our game play often results in much deliberation and analysis within the team before moving forward.
- In iteration 4, while registering for a Google Play Store developer account, Google Wallet was unable to process the payment. This resulted in a deferred launch of our game by 2 days. Although this did not affect our tasks planned in our project schedule, we had to look towards other available Android markets as backup alternatives should the issue with Google Play Store not be resolved.
- The APK deployed on Google Play Store was not compatible with several Android devices, which was more than we anticipated. We are currently working to resolve the issue
- We face the difficulty of bringing in high volume for the downloads of our game, a challenge faced by many game developers. Without a budget to work with, our marketing efforts are based on best practices adopted from various credible sources to help increase awareness of our game through different methods.
70% of project completed
- Completed 3 stages (with checkpoints 1 to 4)
- Tried out 4 different sets of game control
- Tried 2 different scoring calculation (Distance travelled versus Time)
- Tried out different life concept of Gralch (Health vs Energy)
- Optimized our project files (APK file size of approximately 19mb)
- Implemented running Gralch and trap obstacle
- Implemented music and sound effects
Starting Iteration 6 on 8 Oct 2012
- Build Stage 4 (with checkpoints 1 to 4)
- Implement Gralch dying animation
- Implement poisonous cherry
- Implement trail of cherries (redesign the levels)
- Implement invincible booster
||Confident Level (0-1)
|Completed 3 stages of endless world gameplay (with checkpoints 1 to 4)
||100% completed and deployed
||Launched to Google Play store
|Tried out 4 different sets of game control
||Performed user testing to determine which control is most preferred
|Tried 2 different scoring calculation (Distance travelled versus Time)
|Tried out different life concept of Gralch (Health vs Energy)
|Optimized our project files (APK file size of approximately 19mb)
|Implemented running Gralch and trap obstacle
|Implemented music and sound effects
||It was difficult to source for free royalty musics that is suitable for our game
|Build Stage 4
||Will be done in Iteration 6
|Refinement of game design - to make it fun
||Started on gameplay refinements
||Will be done in iteration 6
|Implement collision visual effects
||Will be done in iteration 7
||Will be done in iteration 8
Overview of changed schedule
We have planned for a total of 8 development iterations
- Except for iteration 5, the rest are 2 weeks
- Aim to do as many iterations to create a fun game
We have only changed the scope of each iteration
- Number of iterations remains the same
- Start dates of each iteration remains the same
Project Schedule (Plan Vs Actual):
Delay #1: Initiation and prototyping
Task delayed: Implementation of swinging vine and Gralch aiming controls in functional prototype.
Reason: The task was more complicated than what we had expected. It was a challenge to mimic the swinging action of the vine in Unity3D and we have to seek help and advises from Unity3D forum.
Delay #2: Iteration 3
Task delayed: Flash prototype feedbacks gathering
Reason: The feedback gathering took longer than expected because Larry and Wilson was occupied with internship commitments.
Delay #3: Iteration 4
Task delayed: Launch of App to Google Play Store
Reason: There was some issues with the Google Play payment gateway. Thus, payment could not be made to complete Google Play Store developer registration for several days.
Delay #4: Iteration 5
Task inserted: Game optimization - to reduce APK file size and reduce the number of visible object count in a frame.
Task pushed back: Building of stage 4 was shifted to iteration 6
Reason: Team feels that game game optimization is needed because we have to meet Google Play store requirement of less than 50Mb APK file size. We also need to reduce the visible object count because the game lags a lot on Samsung Galaxy SII.
Plan Project Schedule
Change of gameplay
Details of the change in game play can be found here: [Game Mechanics]
User feedback collected were analyzed and reviewed by the entire team where game play was concerned, because it affects our project plans and execution. The team deliberated on various issues concerning the fun aspect of the game play, length of the game play, scalability of the game, and appeal of the game to various age groups. Till date, we had two revision of our game mechanics.
Swinging vine game play
Bouncy platform game play
Endless world game play
Main findings based on user feedback is that the game is too simplistic and gets dull after a couple of tries. Looking into other potential issues such as scalability and the appeal towards our target age group, we realized that the concept was not enticing enough and should be refined.
Without wanting to lose the concept of the swinging vine, we incorporated this into our refined game play which looked at collection of tokens. However, user feedback revealed that the game is overly challenging and they get discouraged after a couple of tries. Moreover, they felt that the game was too static where Gralch was concerned and would like to see more animations
We decided on this final version of the game play after taking our project schedule into careful consideration as well as reviewing our user feedback. We kept obstacles and modified concepts from our previous two game plays and incorporated them into our final game mechanics. The results from our user tests were a strong indication to further our development and refinements.
We have completed a total of 5 iterations and have a remaining of 3 iterations.
A score of EC = 1 reflects that the team is on schedule, EC < 1 shows that the team is ahead of schedule while EC > 1 reflects that the team is slightly behind schedule.
In all iterations, the team has put in additional hours to ensure that all tasks are completed in time. This can be seen from the actual man hours compared to the estimated man hours, and the EC score of 1. For instance, in iteration 4 & 5 when we were preparing for our launch on Google Play Store, it coincided with the examinations week. To ensure that the team is on schedule (EC = 1), the team worked extra hours as seen from the respective planned versus actual man hours.
Refer to here:
Project Schedule Metrics
The impact of bugs on our development works have been generally low to moderate. Only two instances of a critical impact (BSI = 10) occurred in iterations 1 and 3 respectively. This was due to the changes made to our game play, which required new logic implementation for our codes. The immediate action was to halt development works until the bugs are resolved. These bugs were resolved within the stimulated task allocation duration and did not impact our project schedule
Refer to here:
The following is our prioritized risks as at Mid Term presentation. Click here to view our full list of risks and mitigation plan.
|Types of Risk
||Likelihood of Occurrence
||Mitigation Strategy/Contingency Plan
|Project Management Risk
We are not able to produce an engaging fun game
A standard game level template in Unity3D is in place to allow for more internal level design testing before the conduct of user test. More project iterations would be carried out to include additional rounds of refinement and user testing.
There may not be sufficient feedbacks from Play Store and online sources.
Ensure that sufficient efforts is spent on online marketing (website SEO, Google Adwords campaign) to ensure that the masses know the existence of our app.
As we build our game using Unity3D, we will also post our link to download the app on Unity3D forum and the community will provide us additional sources of feedbacks via the forum.
Contingency plan: Should we do not received more than 20 feedbacks per update release, we will base our gameplay refinement on our user testing.
The lack of Android devices
Plan for earlier launch of app into the Google Play store so that we can get more feedbacks, analyze it and use it to refine our gameplay.
Contingency plan: Borrow android devices from friends for debugging and testing purposes.
Essentially, there are 4 phases in graphics development: (1) Discovery Phase (2) Sketch Phase (3) Color Phase (4) Delivery Phase. The discovery phase is basically the communication of all ideas from the team to the designer to create the character and environment. This brainstorming session took approximately an hour. The sketch phase is where the initial design concepts of character and environment is being presented once again to the team. Typically, the first design draft gets rejected but the team's feedback and directions were helpful in materializing the final concept art. This process took approximately 2 weeks. The color phase comprises of a few character sketches with different colors. Again, many rounds of testing were done with the environment to see which color looks best on the character. Finally, the delivery phase consist of the final character and its frame-by-frame animation to be exported out for the game.
Below lists the many versions of design concepts:
Concept 1: https://wiki.smu.edu.sg/is480/Image:6P_concept_char_1.jpg
Concept 2: https://wiki.smu.edu.sg/is480/Image:6P_concept_char_2.jpg
Concept 3: https://wiki.smu.edu.sg/is480/Image:6P_concept_char_3.jpg
Concept 4: https://wiki.smu.edu.sg/is480/Image:6P_concept_char_4.jpg
Concept 5: https://wiki.smu.edu.sg/is480/Image:6P_concept_char_5.jpg
Concept 1: https://wiki.smu.edu.sg/is480/Image:6P_concept_env_1.jpg
Concept 2: https://wiki.smu.edu.sg/is480/Image:6P_concept_env_2.jpg
Concept 3: https://wiki.smu.edu.sg/is480/Image:6P_concept_env_3.jpg
Concept 4: https://wiki.smu.edu.sg/is480/Image:6P_concept_env_4.jpg
Concept 5: Forest Frenzy
Stage 1 - Day / Stage 2 - Night
Concept 6: Suburbone
Stage 3 - Day / Stage 4 - Night
Game Scenes Setup - Sprite collections with polygon colliders setup
Every images before appearing on the scene has to be added to a sprite collection library where its precise settings and parameters are manually set in order for the image to take shape in the scene and allow it to have natural interaction with other objects.
Game Scenes Setup - Scene setup
The following is an example of a scene setup that consists of 16 different objects laid out in one frame of the scene. The average amount of objects in one stage would go up to about 400 and the crucial part of making the game fun and challenging greatly relies on the precise manual positioning of every objects in this step.
Precise control of objects behaviour
The main focus of the development work of our project is to achieve precise control over the manipulation of the components' behaviour that are attached to all objects with the use of C# scripts, this includes collision and effects handling for every single event.
With the use of C# scripts, we are able to have precise control on every collision events and the desired outcome of each case:
- Gralch triggering a trap at the precise contact point.
- Gralch gains x amount of energy upon contact with y type of cherry.
- Gralch loses x amount of energy upon contact with y type of obstacle.
- Gralch passing a checkpoint which result to a notification to user.
- Gralch movements along the game
- Elevates upon touch and hold of mobile input on touchscreen
- Freefall on release of touch of mobile input on touchscreen
- Gralch animations
- Idle - During start of game
- Flying - Upon exiting contact with platform or planks
- Running - Upon contact with platform or planks
- Constant draining of Gralch's energy throughout game.
- Gradual speed increase of Gralch throughout the stage as player progresses to further checkpoints.
Game Controls - Pseudo Code For Touch & Hold
IF( Mobile Touch Input )
IF( GameHasStarted )
play flying animation
button pressed is true
flying is true
set rigidbody kinematic to false
IF(Audio not mute)Start play audio
GameHasStarted is true
flying is true
play flying animation
add force to rigidbody
IF(button pressed is true)
if(current animation is "Running")
play flying animation
add force to rigid body
Game Controls - Pseudo Code For Swipe
initialize flickTime to 0
get the current pixel position where the input is detected and store as posDown
take note of the time when input is detected and store as timeDown
get the current pixel position where the input is last detected posUp
take note of the time when input is last detected and store as timeUp
update flickTime to be the difference between timeUp and timeDown
update flickLength to be the distance between the posUp and posDown
calculate flickSpeed by having distance, flickLength divide by time, flickTime
IF (flickSpeed is beyond limit, flickSpeedCap)
set flickSpeed to flickSpeedCap
convert both pixel positions, posDown and posUp to the world position,
vectorDown and vectorUp
Calculate force to add to the object using this formula - (vectorDown - vectorUp) x flickSpeed
Add rigid body force to the object’s ForceMode property
Game Controls - Pseudo Code For Joystick
Initialize vector position of touchArea to be the bottom left of the screen
Get the center position of the touchArea to be touchAreaCenter (x + width/2, y + height/2)
//Linear Interpolation Method for the movement of joystick object
Creates an animation that smoothly interpolates through a range of data points
Takes in two data points, (xMin,yMin) and (xMax,yMax)
xVar in this case is the x position of the joystick object
Formula: y = yMin + (yMax – yMin) * ((xVar - xMin) / (xMax – xMin))
//Method to move joystick
Get the current pixel position where the input is detected within the touchArea to be posCurr
Get the difference in length between posCurr and touchAreaCenter and store it as posDiff
IF(posDiff is larger than the joystickRadius)
lock joystick.x and joystick.y at the joystick’s circumference (joystickRadius * PI * 2)
Convert joystick pos (-1 to be left (yMin), 1 to be right (yMax)) using joystick circumference as a limit
apply linear interpolation method to get horizontal property
vertical property is basically an inverted output of horizontal position
reset joystick.x and joystick.y position to be touchAreaCenter
horizontal and vertical properties are equal to 0
Calculate the change in object’s position
Add rigid body force upDown to ForceMode.Velocity property
Add rigid body force, leftRight to ForceMode.Acceleration property
Frame rates issues
Use of performance profiler for tracking bottleneck and solving negative effects on frame rates
Quality of Product
Gralch - the Cherry Monster is published on Google Play Store. The publishing process requires us to register and pay for a play store developer account with Google and uploading the APK file into Google Play Store.
User with compatible android devices would be able to download the game from the Play Store, accessing it through Google Play Store app or the online library.
The link to the game : https://goo.gl/ffSK7
A compilation of pictures taken during our user testing sessions.
As compared to other user testing used for web portals, game user testing is much different. Our testing involves no test scripts and is mainly based on the FUN aspect of the game.
Detailed User Test Analysis:
Since launching of our app to Google Play Store, it has expand our pool of user testers. It allow friends and public to download the app conveniently and this helps us to keep track a list of devices that are incompatible with our app. We are still investigating the incompatibility issues on some android phone and will release an update should we found a fix. Below is the list of incompatible devices found to date:
|Reported incompatible devices
||Only white screen with songs
|HTC Desire S
||Stucked at game menu
|Samsung Galaxy Ace
||Cannot launch app
|Motorola Razr XT910
||Cannot launch app
|Sony Xepria Lt15i
||Load at splash screen then crash already
||Cannot launch app
||Cannot launch app
|Huawei Ascend Y200
||Cannot launch app
We do not have any sponsors nor clients to provide us the budget for our marketing campaign. Nevertheless, we have came out with a marketing strategy that utilizes cost effective solution to increase 6P presence and organic searches in the web.
As part of our marketing campaign, we have created our web page to increase our web presence. On our website, we have provided the link to download our app from Google Play, forms to contact us for support and general enquiry.
We have also listed our sites to Google and Bing/Yahoo search engine using the respective webmaster tools.
In addition, we have also set up blog where we will post the latest development updates and talk about recent events. By doing so, it will helps to add in new contents to our site, thus increasing the change of being crawled by search engines bots.
Social media pages
We have set up Twitter account, Facebook and Google+ pages. Social media is a good platform for us to share the news of release update to our friends and spread via word of mouth. We will post status updates to all our social media accounts frequently and will help create awareness within our social circles.
SEO: Selection of keywords
As our game story is primarily based on a monster following a trail of cherries to find his friends, we have decided to focus on our keywords on "monster". To make it more specific, we have include "games" this keyword and thus, "monster games" shall be the main keyword we are focusing on for our SEO efforts.
A quick check on "monster games" using the Google Keyword tool, it revealed that there are a total of 1.5 million searches performed on variants of "monster games" globally in every month. This shows that games with story focusing on monsters concept is abundant and it is a competitive market.
And currently, our game is free and another keyword to focus on instinctively will be "Android free games". Likewise, after doing a check using Google Keyword tool, it revealed that there is a global search performed on variants of this keyword every month. This is another keyword that we can use in our SEO.
All in all, we have been using variants of "monster games" and "android free games" in all our site contents, social media posts and app description in Google Play Store. However, SEO takes time to refine and perfect and it will not be able to drive downloads from Google Play Store nor increase our website traffic overnight. Nevertheless, we will be monitoring the web traffic frequently using Google analytics tool and will refine our selection of keywords, thus increasing organic searches from search engine.
- Conceptualization and game level designing are not simple
- Making use of user feedback for refinement is a tough call
- Reaching out to the mobile game app market is challenging even with all our various marketing strategies in place
- Managing trade-offs between user feedback and team decision
- Discovery of toolkits/frameworks along the way is great for future development
- Making a fun game is hard. But the same can be said for anything else, quite frankly. It takes practice.
- The importance of two-way communication between members and the public, especially in the case of a self-proposed one
- It is one of the most critical factors which make or break the team, and also the success of the project
- Users are not always right
- Learnt to critically analyze user feedback and prioritize the ones useful for our future development
- Challenge in managing game development
- Learnt the importance of doing more iterations to create a fun game
- Hard to manage individuals’ expectations as standards differ
- Learnt to compromise and decide on what works best for the team