Gatcha for developers

  • 820 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
820
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. GATCHA! VELO PERS FO R DE Pieter De Schepper Gatcha! Head Of Development EXP: 254.186
  • 2. WHO AM I ?
  • 3. PHP DEVELOPER API’S 2,5 YEARS AT NETLOG OPENSOCIAL INTEGRATIONS 1 YEAR LEAD DEVELOPER AT GATCHA!
  • 4. WHAT IS GATCHA?
  • 5. “Gatcha! wants to bring people together through gaming, wherever they are”
  • 6. “Gatcha! builds and distributes games tosocial networks and web-portals”
  • 7. Every single day: over 1M game playsover 2200 days of play timeover 120 000 unique players
  • 8. Grown and successful as one of Netlogʼs features Since Feb 2011 a seperate business unit in Massive Media
  • 9. GATCHA! ME Y GA RATI NG MINTEG
  • 10. A ME High-score Handling R GYOU Achievements A ME Challenge builder IA LG Tournaments S OC OPAT
  • 11. Example Game
  • 12. - Game runs inside FP 10 Gatcha Wrapper- Communication through Events-> Game Events- Include SWC found at gatcha.com - GameEvent - Translations - SafeMemory
  • 13. Import classespackage{! import com.gatcha.api.GameEvent;! import com.gatcha.api.Translations;! import com.gatcha.memory.SafeMemory;!! public class KartOn! {!! }}
  • 14. GAME TRACKING
  • 15. Start Game
  • 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. 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. Gameplay stats Popularitytotal, uniques, duration Target game Age Gender Viral Location
  • 19. HIGHSCORES
  • 20. TimePosition
  • 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. Highscore and positionLeaderboards
  • 23. Viral effectSoon - Challenges - Tournaments - Team Play
  • 24. ACHIEVEMENTS “Pass all other cars in one lap”
  • 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. PERSISTENT STORAGE
  • 27. SharedObject (Flash Cookies) - Confusing - Intrusive - Bad Usability - Unreliable Persistent Storage
  • 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. 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. 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. TRANSLATIONS
  • 32. 34LANGUAGES Translation API
  • 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. 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. ENGLISH
  • 36. FRENCH
  • 37. DUTCH
  • 38. GERMAN
  • 39. ITALIAN
  • 40. CHEATERS
  • 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. MONETIZATION
  • 43. MicropaymentsNetlog - Credits
  • 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. More information GATCHA!http://www.gatcha.com/developers http://wiki.gatcha.com
  • 46. GATCHA! RUIT ING! REC
  • 47. Web Developer (PHP) Designer Product ManagerQ&A Manager / Marketeer
  • 48. GATCHA! pieter@gatcha.com http://netlog.com/pieter http://twitter.com/pieterdshttp://be.linkedin.com/in/deschepperpieter