HackIt! - Gamedesign

Objective

 * The objective of the player, whom we will call David, is to hack (and therefore own) as many web sites as he can, these websites being as famous as possible. A secondary objective for David is to create, within the websites he owns, the longest chain of websites that relate to a common topic.

First contact

 * A bar (called the hacker toolbar) appear on top of David's browser (it is actually a frameset, not a browser plugin)
 * At this stage, the player does not own any site.
 * The bar contains (each of these elements have tooltips - see Mockup 1) :
 * Hack
 * Scan
 * % of chance of successful hack
 * % of chance of successful scan
 * Tag : the tag shown here is the most popular tag that is shown on Delicious for this website (retreived from http://delicious.com/url/ ). It will be useful when David want to have chains of websites of the same type.
 * URL/Search (see URL/Search)
 * Number of hack points available to the player (see Hack)
 * Number of scan points available to the player (see Scan)
 * Options : it the player clicks on ‘options’, he gets access to :
 * Save session : saves the current status of the game
 * Hack from here (inactive/greyed)
 * Go to home base (inactive/greyed)
 * Go to parent website (inactive/greyed)
 * Go to child website (inactive/greyed)
 * Provide feedback : opens a new window with the url http://feedback.hackit.cx/



Searching for a site and what to do then

 * David could try to hack Google.com, but he wants to try to hack Yahoo.com instead.
 * David enters "yahoo" in the search bar and press enter. The lower frame changes to Yahoo.com (whenever David submits some in the search bar field, the lower frame is changed to http://www.google.com/search?q= &btnI and the URL/search bar is kept updated with the URL currently displayed in the lower frame)
 * The URL in the browser is also updated every time and contains the URL displayed in the lower frame (see browser URL in the mockups), to allow players to bookmark websites they want to come back to hack later


 * David click on a link on the website displayed in the lower frame
 * The lower frame now displays the page corresponding to the link David clicked on
 * The URL/search bar is kept updated with the URL currently displayed in the lower frame and the rest of the bar is updated accordindly

Manage my tree of sites

 * The web sites a player owns are organized as a tree, the root being the home site. This home site has sons, which themselves have sons, etc., forming a tree.
 * When the player is on a website he owns he can go in the menu and click on ‘hack from here’. This means that the next site the player hacks will be a son of this site.
 * By default (unless the player uses this ‘hack from here’ function), a web site hacked is the son of the latest web site that was previously hacked by the player.
 * The first website the player successfully hacks is set as the Home website.

Hack

 * David clicks on the ‘hack’ button to try to make the site his own.
 * The number of hack points is decreased by one, and the tooltip now shows when he will recover his next point
 * David succeeds, a message tells him that, along with some information on the website itself (see mockup 2)
 * And the option menu ungreys these elements :
 * Hack from here (checked and greyed when the current page is selected to be the one to hack from)
 * Go to home base (greyed when this is the current page)
 * Go to parent website (the website that was selected as "Hack from here" when the current website was successfully hacked)
 * Go to child website (the websites that have been hacked successfully while the current website was selected as "Hack from here")
 * If the web site belongs to another player:
 * David automatically gets all the sons (and sons of sons...) of the web site he just hacked (see tree of sites for explanation on ‘son’)
 * David can send an email (through a popup web form) to the person who has hacked this website.


 * David tries to hack another website and fails
 * A message tells him that he failed (see mockup 2), and he is back to the initial state, with one less hack point (right part of the hacking bar)



Complements

 * The web site can belong to nobody or to another player. If it belongs to another player :
 * The difficulty of hacking it is multiplied by 1,5
 * The player, by hacking the current web site, automatically owns all the sons of this web site from the tree of the other player (see tree of site)


 * Chances of success/fail
 * The difficulty of hacking a web site is based on its page rank (you can get it from http://www.pagerankcode.com/ for example). Knowing that the page rank is a number between 0 and 10, the percentage of success for a neutral site (that not belong to another player) is the following : PR=0 => 95% of success,  PR=1 => 85%, PR=2 => 75%, PR=3 => 65%, PR=4 => 55%, PR=5 => 45%, PR=6 => 35%, PR=7 => 25%, PR=8 => 15%, PR=9 => 10%, PR=10 => 5%.

Scan

 * David clicks on the ‘scan’ button to try to get information about this site.
 * If he succeeds, and a message tells him that the scan was successful (see mockup 3) :
 * he learns the name of the owner (if any),
 * he learns the number of sites owned by this owner that share the same tag as the one that has just been scanned
 * He also know the level of the site in the other player's sites tree
 * he also knows the name of the father of the site that was scanned
 * he also knows the number of sons (and grandsons, etc) of the site that was scanned
 * David can send an email (through a popup web form) to the person who has hacked this website.
 * The information gained by a scan are not kept : if a player comes back on a site he has already scanned, the informations won't appear.
 * If the website has not been hacked by anyone, the message says so instead.


 * If he fails, a message tells him that he failed, and he is back to the initial state, with one less scan point (right part of the hacking bar).
 * Chances of success/failure : the chances of scanning successfully a site are 1,5 time the chance of hacking it successfully. It means it is 1,5 time easier to scan a site than to hack it.



Subscribe/login/logout

 * The first time David plays, he is not logged in until he clicks "Save session...". He is then prompted for a nickname and an email, to which is sent a random password, along with a URL to automatically connect and is told what happened. He is automatically logged in.
 * When an anonymous session depletes the number of scans or hacks, it automatically prompts for a nickname and an email.
 * David clicks on logout. The bar comes back to a brand new game session.
 * David then checks his email, clicks on Login, enters his login/password and is then logged in and recovers his session.
 * The sessions last forever, through the use of cookies.

Create a chain of sites

 * Any site has an associated tag, which is the one appearing as first on Delicious. It must have been tagged at least by ten people on Delicious, otherwise the url has no tag.
 * A chain of site is defined by a site A, a site B son of A, a site C son of B, etc., where all these sites share the same tag.
 * When David builds a chain, he increases his number of available scan/hack points (see Leveling).

Leveling



 * The player, at the beginning of the game, has 6 max hack points and 4 max scan points. He can increase these numbers by 1) making chains of sites, 2) by owning more sites, 3) by improving the average page rank of the sites he owns.
 * The rule is the following :
 * Nb of hack points available = 6 + X*Y*Z*0,75
 * Nb of scan points available = 4 + X*Y*Z*0,5
 * Where :
 * X is related to the number of sites owned : 10 sites =&gt; X=1, 50 sites =&gt; X=2, 200 sites =&gt; X=3, 500 sites =&gt; X=4, 2000 sites =&gt; X=5, 5000 sites =&gt; X=6, 10000 sites =&gt; X=7
 * Y is the average pagerank (1 to 10)
 * Z = (square root of the size of the longest chain of sites of the player) +1
 * Each time the player gain stats, the bar displays the screen shown on mockup 4
 * The player also gains one additional available max scan point each time he is able to hack the home site of another player (see mock up 5).
 * If the player sees X, Y or Z decrease, it won’t affect the max number of available scan/hack points he had at the time he had the max X/Y/Z
 * if somebody hack a player's sites, he will keep his maximum stat (scan points and hack points), but he will have to wait until the global equation is sufficient to improve his level.
 * If somebody hack a player's Home site, this player loose all his sites, but keep his maximum stat (scan points and hack points)



How much can I play ?

 * The player sees his number of hack/scan points refilled fully every 12 hours (it should be continuous filling, the bar shows in how much time the number of points will be increased by one through tooltips)

A player has hacked one of my sites

 * I receive a mail telling me the name of the hacked web site, the name of the person who hacked it, the name of the father of the site, the distance from the hacked site (in term of number of fathers) to my home site.

Multiple languages

 * The game interface can be translated in mutliple languages through .po files
 * The game automatically selects the appropriate language based on the headers sent by the browser
 * The player can change the language through the menu

Metrics

 * All server pages/URLs are tagged using Google Analytics (use page tags for individual URLs represented on the lower frame, and event tracking for actions on these pages)
 * All actions are logged in a table in the database, along with: date/time, username, action, result, URL of the page displayed in the lower frame)