Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Project Overview

 


 
The project is to build a simple, yet fun and addicting game where the goal is to throw "files" across a screen full of obstacles to the safety of the cloud. Players will score points and compete for high scores based on the size of the files that reach the target (i.e. the cloud) safely, which communicates the underlying message that storing data on the cloud is safe.
 
This challenge will add Game Center Leaderboards for players with highest scores and display the leaderboards in the "highest score screen", it will refine the last assembly and add shields not implemented yet.
 

Technology Overview

 


 

  • target platform: iOS8+, Swift, SpriteKit, GameKit Game Center, Xcode 6.1
  • Priority is for iPhone 5/5s/5c -- 640x1136 pixel resolution at 326 dpi, auto fit screen for iphone 6(including plus);
  • iPad support is required (auto fit screen)
  • Only Portrait orientation
  • Allows anonymous play, in addition to Apple Game Center

 

Competition Task Overview

 


 
You will need to familiarize yourself with the game and the specification first.

1. Game Center Leaderboards

    for technical infomation, refer to Leaderboards of GameKit
    We only have one leaderboard(total score)
    1) report total score to Game Center Leaderboards
        report when level completed/failed
        if network is not available, display a hit message (e.g. "network not avaible") for several seconds and disappear then.
         "total score" in game center should be the sum of all scores achieved by the user ever played.
    2) display the leaderboards in the "highest score screen"
        play a waiting animation while retrieving leadboards, remove it when data is received, if network is not available, display a hit message (e.g. "network not avaible") for several seconds and disappear then.
        show top 10 of the selected filter
        there are two kinds of filters: playscore, timescope
        player scope:
         GKLeaderboardPlayerScopeGlobal
         GKLeaderboardPlayerScopeFriendsOnly
        time scope:
         GKLeaderboardTimeScopeToday
         GKLeaderboardTimeScopeWeek
     GKLeaderboardTimeScopeAllTime

2. More Shields

    1) All the shields that are not implemented yet are in scope:
       Folder, Sync, Copy, Connection booster, File Recovery, MoreTime,  DataProtection, HiddenFile
    2) shield holder refinement:
        1> Immediately after the launcher is grabbed the sheild holder could expand and show quickly ( say 1 or 2 seconds and then retract again). Then when user wants to use a shield they will first need to click on the holder to expand and check which ones they have , and holder automatically retracts or collapses when a shield is used or user clicks on the holder shield holder button again
        2> Reducing the shields pop up time from 5 seconds to just 3
3. Update marketing/commercial messages(displayed in loading screen)
    when the app starts up, it will send an http request(with local version number) to get latest version and all messages from remote server(if the version is already the latest, the remote server will simply response with no messages) and store in Messages.plist, if failed(e.g. network error), still use the old messages.plist(update the default messages.plist with the 1st and 2nd messages in cloud facts.txt)
    In loading screen, one of the N messages will be chosen randomly to display.
    The remote server could be a NodeJS server provides version check and message feedback services.
4. Game scene refinement
    use the score text at the top of the game screen as a sort of progress bar (for instance with green color so when you achieve the goal for a given level, the entire word "score" is turned "green")
5. Obstacle refinement
    1) Enhance the obstacle "Dark clouds & lightning", bolts coming from the dark clouds should be random directions (right now they all seem to come left oriented)
    2) Support more fields for obstacle in level configure:
       f1 - id: required, int, id for reference.
       f2 - notLoadOnStart: optional, bool, if true, the obstacle won't appear after level is loaded.
       f3 - tdelay: optional, int, time to delay, if exists, the obstacle won't appear after level is loaded, instead, it will appear after "tdelay" seconds if the level is still active.
       f4 - ttl: optional, int, time to live, if exists, the obstacle will be destroyed after "ttl" seconds (and ttlToBe is missing).
       f5 - ttlToBe: optional, array of int, id of obstacle to appear after ttl seconds,  if exists, when the obstacle is destroyed after "ttl" seconds, a new obstacle(randomly choose from ttlToBe) is created at the same position, make sure the transition is smooth
       the client need to try one level maybe on the higher ones that is truly random and has obstacles showing and vanishing so they change during the same level, configure the level to make all the obstacles have a chance to appear.
6. Bug fix
   when exiting game while on pause and going back in again , pause screen is displayed but timer is not stopping (obstacles animations are also resumed). Steps to reproduce:
     1) While playing any level click on pause, Pause screen and vertical menu bar pops up all action and timer is frozen as expected.
     2) Click on the iphone home button (exit game go back to phone home pages)
     3) Then click on the PayIBM icon to go back in the game
     4) Pause screen is displayed (as expected) however you will notice the timer and onstacle action in the screen is no longer paused. (should be frozen until user exits pause mode)
7. Level Selection screen
   Add an entry in global configure: dev
   if it is true, then in level selection screen
   1) if touch on a unlocked level cloud for more than e.g. 5 seconds, all the open levels are locked except the first level.
   2) if touch on a locked level cloud for more than e.g. 5 seconds, all the locked levels(level <= the touched level) are unlocked(with zero star)
8 Level Configures
  Add an entry in global configure: levelset
  It is a dir name where to load level configuration files.
  e.g. we may have following sets:
    dev: add level configure for each newly added obstacle of this challenge here (include the level described in 5.2: Support more fields for obstacle in level configure) , increase goal specially on higher levels.
    product: product levels coming later.

General notice

 


 
1. Memory leaks check: There should be no memory leaks for this app. Please use Instrument to check memory leaks, espcialy reset game repeatly
2. We use texture packer ( https://www.codeandweb.com/texturepacker ) to packer sprite images (except backgrand images), please check atlas_projects of last assembly submssion.


Final Submission Guidelines

Final Submission Guidelines

Submission Deliverables

 

A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at:http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials 

Below is an overview of the deliverables:

  • Working iOS app (including source code) that covers all requriements
  • A complete and detailed deployment documented explaining how to deploy and verify the application including configuration information.

 

Final Submission

 

For each member, the final submission should be uploaded via the challenge detail page on topcoder.com

ELIGIBLE EVENTS:

2015 topcoder Open

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30047484