Gatcha for developers

990 views
889 views

Published on

Introducing Gatcha platform to flash developers. on the17th of February 2011 for the Adobe User Group event at Ghent, Belgium.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
990
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Gatcha for developers

  1. 1. GATCHA! VELO PERS FO R DE Pieter De Schepper Gatcha! Head Of Development EXP: 254.186
  2. 2. WHO AM I ?
  3. 3. PHP DEVELOPER API’S 2,5 YEARS AT NETLOG OPENSOCIAL INTEGRATIONS 1 YEAR LEAD DEVELOPER AT GATCHA!
  4. 4. WHAT IS GATCHA?
  5. 5. “Gatcha! wants to bring people together through gaming, wherever they are”
  6. 6. “Gatcha! builds and distributes games tosocial networks and web-portals”
  7. 7. Every single day: over 1M game playsover 2200 days of play timeover 120 000 unique players
  8. 8. Grown and successful as one of Netlogʼs features Since Feb 2011 a seperate business unit in Massive Media
  9. 9. GATCHA! ME Y GA RATI NG MINTEG
  10. 10. A ME High-score Handling R GYOU Achievements A ME Challenge builder IA LG Tournaments S OC OPAT
  11. 11. Example Game
  12. 12. - Game runs inside FP 10 Gatcha Wrapper- Communication through Events-> Game Events- Include SWC found at gatcha.com - GameEvent - Translations - SafeMemory
  13. 13. Import classespackage{! import com.gatcha.api.GameEvent;! import com.gatcha.api.Translations;! import com.gatcha.memory.SafeMemory;!! public class KartOn! {!! }}
  14. 14. GAME TRACKING
  15. 15. Start Game
  16. 16. Asynchronous start Using game eventsprivate function onMouseClickStartButton(e:MouseEvent):void{! addEventListener(GameEvent.SINGLEPLAYER_START_GAME_RESULT, gatchaStartGameHandler);! var gatchaStartGameEvent:GameEvent = new GameEvent(GameEvent.SINGLEPLAYER_START_GAME);! dispatchEvent(gatchaStartGameEvent);}private function gatchaStartGameHandler(event:GameEvent):void{! startGame();}
  17. 17. End Game Tell Gatcha Game has endedprivate function raceFinished():void{! endGame();}private function endGame():void{! var gatchaEndGameEvent:GameEvent = new GameEvent(GameEvent.SINGLEPLAYER_END_GAME);! dispatchEvent(gatchaEndGameEvent);}
  18. 18. Gameplay stats Popularitytotal, uniques, duration Target game Age Gender Viral Location
  19. 19. HIGHSCORES
  20. 20. TimePosition
  21. 21. Sending Highscores With GameEventsprivate function raceFinished():void{! var score:Number = calculateHighscore();! updateHighscore(score);}private function updateHighscore(score:Number):void{! addEventListener(GameEvent.SINGLEPLAYER_UPDATE_HIGHSCORE_RESULT, scoreResultHandler);! addEventListener(GameEvent.SINGLEPLAYER_UPDATE_HIGHSCORE_FAIL, scoreFailHandler);! var event:GameEvent = new GameEvent(GameEvent.SINGLEPLAYER_UPDATE_HIGHSCORE, score);! dispatchEvent(event);}private function scoreResultHandler(event:GameEvent):void{! endGame();}private function scoreResultFailed(event:GameEvent):void{! //Woops, something went wrong}
  22. 22. Highscore and positionLeaderboards
  23. 23. Viral effectSoon - Challenges - Tournaments - Team Play
  24. 24. ACHIEVEMENTS “Pass all other cars in one lap”
  25. 25. Sending Achievements With GameEventsprivate function passedAllCars():void{! var aggressiveAchievement:Object = {! ! achievement: "AGGRESSIVE",! ! title: "Aggressive Driver",! ! description: "Pass all other drivers in one lap",! ! icon: aggressive.png! }!! sendAchievement(aggressiveAchievement);}private function sendAchievement(achievement:Object):void{! var achEvent:GameEvent = new GameEvent(GameEvent.ACHIEVEMENT_REACHED, achievement);! dispatchEvent(achEvent);}
  26. 26. PERSISTENT STORAGE
  27. 27. SharedObject (Flash Cookies) - Confusing - Intrusive - Bad Usability - Unreliable Persistent Storage
  28. 28. Store Data With GameEventsprivate function raceFinished(level:Number):void{! unlockLevel(level + 1);! var score:Number = calculateHighscore();! updateHighscore(score);}private function unlockLevel(level:Number):void{! storeValue(‘unlockedLevel’, level);}private function storeValue(key:String, value:String):void{! var data:Object = {! ! "key": key,! ! "value": value! };!! var storeEvent:GameEvent = new GameEvent(GameEvent.PUT_PERSISTENT_STORAGE, data);! dispatchEvent(storeEvent);}
  29. 29. Retrieve Data With GameEventsprivate function getValue(key:String):void{! addEventListener(GameEvent.GET_PERSISTENT_STORAGE_RESULT, getValueResultHandler);! addEventListener(GameEvent.GET_PERSISTENT_STORAGE_FAIL, getValueFailHandler);!! var getEvent:GameEvent = new GameEvent(GameEvent.GET_PERSISTENT_STORAGE, key);! dispatchEvent(getEvent);}private function getValueResultHandler(event:GameEvent):void{! var value:String = event.data;! //Do something with value}private function getValueFailHandler(event:GameEvent):void{! //Woops, something went wrong}
  30. 30. Delete Data With GameEventsprivate function deleteValue(key:String):void{! addEventListener(GameEvent.DELETE_PERSISTENT_STORAGE_RESULT, deleteValueResultHandler);! addEventListener(GameEvent.DELETE_PERSISTENT_STORAGE_FAIL, deleteValueFailHandler);!! var getEvent:GameEvent = new GameEvent(GameEvent.DELETE_PERSISTENT_STORAGE, key);! dispatchEvent(getEvent);}private function deleteValueResultHandler(event:GameEvent):void{! //Deletion succeeded}private function deleteValueFailHandler(event:GameEvent):void{! //Woops, something went wrong}
  31. 31. TRANSLATIONS
  32. 32. 34LANGUAGES Translation API
  33. 33. Setting up translations<?xml version="1.0" encoding="UTF-8" ?><messagebundle>! <msg name="labelTotalScore">Total Score</msg>! <msg name="controlsAccelerate">Accelerate</msg>! <msg name="controlsBrake">Brake</msg>! <msg name="controlsLeft">Steer left</msg>! <msg name="controlsRight">Steer right</msg>! <msg name="controlsPause">Pause</msg></messagebundle>
  34. 34. Accessing translationsprivate function setTranslations():void{! var totalScoreLabel:TextField = new TextField();! totalScoreLabel.text = Translations.instance.getString("labelTotalScore");!! var accelerateLabel:TextField = new TextField();! accelerateLabel.text = Translations.instance.getString("controlsAccelerate");!! var brakeLabel:TextField = new TextField();! brakeLabel.text = Translations.instance.getString("controlsBrake");!! var leftLabel:TextField = new TextField();! leftLabel.text = Translations.instance.getString("controlsLeft");!! var rightLabel:TextField = new TextField();! rightLabel.text = Translations.instance.getString("controlsRight");!! var pauseLabel:TextField = new TextField();! pauseLabel.text = Translations.instance.getString("controlsPause");}
  35. 35. ENGLISH
  36. 36. FRENCH
  37. 37. DUTCH
  38. 38. GERMAN
  39. 39. ITALIAN
  40. 40. CHEATERS
  41. 41. SafeMemoryprivate function initScore():void(){! SafeMemory.instance.setValue("score", 0);}private function incrementScore(increment:Number):void(){! SafeMemory.instance.incrementValue("score", increment);! /*! Also available! SafeMemory.instance.decrementValue("score",1); SafeMemory.instance.multiplyValue("score",10); SafeMemory.instance.divideValue("score",2);!! */}private function updateScoreLabel():void{! scoreLabel.text = SafeMemory.instance.getValue("score");}
  42. 42. MONETIZATION
  43. 43. MicropaymentsNetlog - Credits
  44. 44. Netlog Creditsprivate function buyNewCar():void(){! var data:Object = {! ! amount: 50,! ! reason: “Would you like to pay 50 credits for the superkart?”! };!! this.stage.addEventListener(GameEvent.GET_CREDITS_RESULT, creditsResultHandler);! this.stage.addEventListener(GameEvent.GET_CREDITS_FAIL, creditsFailHandler);! var getCreditsEvent:GameEvent = new GameEvent(GameEvent.GET_CREDITS, data);! dispatchEvent(getCreditsEvent);}private function creditsResultHandler(event:GameEvent):void(){! //User had payed, give him the car! //Store it in Persistent Storage API :-)}private function creditsResultHandler(event:GameEvent):void(){! //User has canceled payment}
  45. 45. More information GATCHA!http://www.gatcha.com/developers http://wiki.gatcha.com
  46. 46. GATCHA! RUIT ING! REC
  47. 47. Web Developer (PHP) Designer Product ManagerQ&A Manager / Marketeer
  48. 48. GATCHA! pieter@gatcha.com http://netlog.com/pieter http://twitter.com/pieterdshttp://be.linkedin.com/in/deschepperpieter

×