HeaderSIS.jpg

IS480 Team wiki: 2012T1 6P Mid Term Project Overview

From IS480
Jump to navigation Jump to search

Back to main wiki: [Team 6P]

Project Progress Summary

Download Presentation

Mid Term Presentation: Media:6pMidTermSlides.pptx

Achievements

14 software and tools evaluation
Built 6 Prototypes
- 2 Low Fidelity Prototypes
- 1 High Fidelity Prototypes
- 1 Functional Prototypes
- 2 Flash Prototypes
Explored 3 types of gameplay
-Swinging vine
-Bouncy Platform
-Endless world
Performed 10 rounds of user testing

As of 21 September 2012, our game has been launched on Google Play Store. The current release features 3 playable stages, each stage featuring 4 levels each. The next update would include additional game stages and further refinement to the game.

Project Highlights:

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.

Project Management

Project Status:

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


Task/function/features, etc Status Confident Level (0-1) Comment
Completed 3 stages of endless world gameplay (with checkpoints 1 to 4) 100% completed and deployed 1 Launched to Google Play store
Tried out 4 different sets of game control 100% completed 1 Performed user testing to determine which control is most preferred
Tried 2 different scoring calculation (Distance travelled versus Time) 100% completed 1
Tried out different life concept of Gralch (Health vs Energy) 100% completed 1
Optimized our project files (APK file size of approximately 19mb) 100% completed 1
Implemented running Gralch and trap obstacle 100% completed 1
Implemented music and sound effects 100% completed 0.8 It was difficult to source for free royalty musics that is suitable for our game
Build Stage 4 0% completed 1 Will be done in Iteration 6
Refinement of game design - to make it fun 60% completed 1 Started on gameplay refinements
Implement modifiers 0% completed 1 Will be done in iteration 6
Implement collision visual effects 0% completed 1 Will be done in iteration 7
Implement leaderboard 0% completed 1 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):

6p planned vs actual.png

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.

Screen Shot 2012-10-08 at 11.51.01 AM.png

Swinging vine game play
Bouncy platform game play
Endless world game play


Swinging vine:

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.

Bouncy platform:

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

Endless world:

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.

Schedule Metrics:

Team assessment

We have completed a total of 5 iterations and have a remaining of 3 iterations.

Screen Shot 2012-10-08 at 12.42.38 PM.png Screen Shot 2012-10-08 at 2.46.50 PM.png


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


Bug 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

Screen Shot 2012-10-08 at 12.58.49 PM.png Screen Shot 2012-10-05 at 1.17.12 PM.png
Screen Shot 2012-10-05 at 1.16.12 PM.png Screen Shot 2012-10-05 at 1.17.58 PM.png
Screen Shot 2012-10-05 at 1.18.30 PM.png

Refer to here: Bug metrics

Project Risks:

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 Risk Likelihood of Occurrence Impact Mitigation Strategy/Contingency Plan
Project Management Risk

We are not able to produce an engaging fun game

High

High

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.

Testing Risk

There may not be sufficient feedbacks from Play Store and online sources.

High

Medium

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

High

High

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.

Development

Graphics Development:

Summary: 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 6:

6P concept char 6.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

6P concept env 5a.jpg
6P concept env 5b.jpg


Concept 6: Suburbone

Stage 3 - Day / Stage 4 - Night

6P concept env 6a.jpg
6P concept env 6b.jpg

Technical Complexity:

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.

Collection1.pngCollection2.png Collection3.pngCollection4.png

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.

Scene1.pngScene2.png Scene3.pngScene4.png Scene5.pngScene6.png

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.

SoftwareDesign.png

With the use of C# scripts, we are able to have precise control on every collision events and the desired outcome of each case:

  1. Gralch triggering a trap at the precise contact point.
  2. Gralch gains x amount of energy upon contact with y type of cherry.
  3. Gralch loses x amount of energy upon contact with y type of obstacle.
  4. Gralch passing a checkpoint which result to a notification to user.
  5. Gralch movements along the game
    1. Elevates upon touch and hold of mobile input on touchscreen
    2. Freefall on release of touch of mobile input on touchscreen
  6. Gralch animations
    1. Idle - During start of game
    2. Flying - Upon exiting contact with platform or planks
    3. Running - Upon contact with platform or planks
  7. Constant draining of Gralch's energy throughout game.
  8. 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
 ELSE
  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

IF (Input.GetButtonDown)
	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
IF (Input.GetButtonUp)
	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

//Initialization Method
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 (Input.GetButtonDown)
	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		
ELSE
	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
upDown 
leftRight
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

Framerate1.png

Framerate2.png

Quality of Product

Intermediate Deliverables:

Stage Specification Modules
Project Management

Minutes

Meeting Minutes

Metrics

Bug Metrics

User Testing

Test Plan

Deployment:

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

Testing

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.
Usertest1.png

Detailed User Test Analysis: User Testing

Incompatible devices

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 Android version Remarks
Nexus 7 4.1 Only white screen with songs
HTC Desire S 4.0.3 Stucked at game menu
Samsung Galaxy Ace 2.3.5 Cannot launch app
Motorola Razr XT910 2.3.5 Cannot launch app
Sony Xepria Lt15i 2.3.4 Load at splash screen then crash already
HTC Legend 2.3.3 Cannot launch app
LG Optimus 2.2 Cannot launch app
Huawei Ascend Y200 2.2 Cannot launch app

Marketing Efforts

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.

Web presence

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.

Screen Shot 2012-10-08 at 12.15.45 AM.png

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.

Screen Shot 2012-10-08 at 12.23.44 AM.png

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.

Reflection

Team Reflection:

Member Reflections Member Reflections
6pBen.jpg

- 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

Cam.jpg

- 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.

Cw.jpg

- 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

Larry.jpg

- Users are not always right
- Learnt to critically analyze user feedback and prioritize the ones useful for our future development

Wilson.jpg

- Challenge in managing game development
- Learnt the importance of doing more iterations to create a fun game

Yy.jpg

- Hard to manage individuals’ expectations as standards differ
- Learnt to compromise and decide on what works best for the team