SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Facebook Flash APIand Social Game Development http://fb.me/tempofeng
Agenda Gamelet Our Experiences Tips & Tricks Flash Social Facebook / Flash Q & A
Gamelet: Our Experiences
Gamelet
Web Traffics
Gamelet Published 17 Games 15 Real-Time Synchronized Games 2 Social Games 11 Employees 6 Engineers 3 Arts
Gamelet Bandwidth 60M/Month Online Users 8000 users (max) Aggregated MAU 400K (down from 800k)
Servers Web Servers apache -> tomcat 2xDell PE R610 (1 Master-N Slave) 2xI5520, 6GB, SAS HDs Static Files Servers 1xPC Real-time Socket Servers Java/Mina/ActiveMQ 3xDell PE R610 1xI5520, 6GB, SAS HDs
Servers DB Servers MySQL 2xDell PE R710 (1Master, 1Standby) 2xI5530, 32GB, SAS HDs Cassandra 2xDell PE R710 2xI5530, 32GB, SAS HDs
Tip & Tricks - Flash Development Environment Art/Developers Workflow Performance Fighting Cheaters Loader crossdomain.xml
Development Environment Developers Flash(Flex) Builder Flex Components Slow Ram/CPU/SSD Open Too Many Projects Arts Illustrator/Photoshop/Flash
Arts/Developers Workflow .as Designers Programmers
Versioning Graphics Assets Confusing! SVN Development Mode car.fla, airplane.fla Production Mode car.fla, airplane.fla -> vehicle_v00.swf
Performance Monitoring Framerate Don’t Alpha, 變形工具 Large Bitmap Parent/child Movieclip Using Sprite instead of Movieclip
Performance Slow Movieclip cacheAsBitmap Rotate, Scale, … AnimationSlicer http://blog.vandenoostende.com/2008/animationslicer/ Profiler Memory Leak
Fighting Cheaters Manipulating Memory Intercepting Packets Accelerators Double Login Manipulating Code Building a Bot Fake Accounts
Manipulating Memory
Manipulating Memory Cheat Engine http://www.cheatengine.org/ Encode Critical Data Heap Data Scores, Weapon, …
Manipulating Memory class SecureInteger { int number; int checksum; 	public void setNumber(int number) 	{ this.number = number; this.checksum = md5(number); 	} 	public intgetNumber() 	{ 		if(verifyMd5(number, checksum)) 			return number; 		else 			throw new SecurityException(); 	} }
Intercepting Packets Add Signature Encode SSH proprietary PKI solution
Accelerators 變速精靈 http://tw.vrbrothers.com/speeder/
Accelerators Use Server Time Everywhere Detecting Calculate the difference between client time & server time Network latency will be hard to predict
Double Login Logout Previous Logined User Flash LocalConnect Server Notification
Manipulating Code Obfuscator Dynamically Download Encoded SWF Loader.loadBytes(bytes)
Building a Bot Monitoring Monitoring All Service Interfaces AOP, Annotation Limiting resource update Limit by Time Period Limit by User Roles, Levels Guests, Unregistered Users
Fake Accounts Limit Help from Friends
Loader Loading Static Files Always Retry!
crossdomain.xml crossdomain.xml Access Remote Files Security.allowDomain() SWFs from Other Domain to Access Me loader.loaderContext = new LoaderContext(true, ApplicationDomain.currentDomain) Access Remote Image Files without crossdomain.xml
Tips & Tricks – Social Games Game Design Viral Channels Data Storage
Game Design Beautiful! Gifting is the New Poke Don’t Punish Users Represent Relations between Friends
Viral Channels monfriends
Data Storage Read:Write = 1:1 MySQL Transactional Data Growing Slowly Cassandra Key/Value Data Growing Fast
Tips & Tricks – Facebook / Flash Facebook API / Graph API Chinese Input Invite/Request without Page Reloaded
Facebook API & Graph API No Plan of Updating Recommend Calling Javascript API from Flash ExternalInterface ,[object Object]
{
return;
}
ExternalInterface.call("lumixInviteFriends", invite, title, type, content, url, label, condensed, toUid(username));,[object Object]
wmode = ‘window’
Chinese Input Flash 9/10 Only wmode = ‘window’ Can Input Chinese Will Hide javascript Windows Flash 10.1 wmode = ‘opaque’ can input Chinese in IE/Firefox
Flash 9,10 + wmode = ‘window’ Move or Hide the Flash
Invite/Request without Page Reloaded
Step 1: Dynamically Add an <iframe> ,[object Object],[object Object]
Step 3: Close the <iframe> by Javascript <script type="text/javascript"> $(document).ready(function() { window.parent.onFbmlIframeClosed(); }); </script>

Weitere ähnliche Inhalte

Ähnlich wie Facebook flash api and social game development

Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
Paul Klipp
 
Tech 1 - Deploying Sahana Eden
Tech 1  - Deploying Sahana EdenTech 1  - Deploying Sahana Eden
Tech 1 - Deploying Sahana Eden
AidIQ
 

Ähnlich wie Facebook flash api and social game development (20)

Casual Engines 2009
Casual Engines 2009Casual Engines 2009
Casual Engines 2009
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf eu
 
Ajax to the Moon
Ajax to the MoonAjax to the Moon
Ajax to the Moon
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of Smalltalk
 
Social Speed - Improving Flash Performance for Social Games (GDC 2011)
Social Speed - Improving Flash Performance for Social Games (GDC 2011)Social Speed - Improving Flash Performance for Social Games (GDC 2011)
Social Speed - Improving Flash Performance for Social Games (GDC 2011)
 
Building fast,scalable game server in node.js
Building fast,scalable game server in node.jsBuilding fast,scalable game server in node.js
Building fast,scalable game server in node.js
 
Drupal & Flash
Drupal & FlashDrupal & Flash
Drupal & Flash
 
Behind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
Behind the Scenes: Deploying a Low-Latency Multiplayer Game GloballyBehind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
Behind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
 
Robotlegs on Top of Gaia
Robotlegs on Top of GaiaRobotlegs on Top of Gaia
Robotlegs on Top of Gaia
 
Designing the Call of Cthulhu app with Google App Engine
Designing the Call of Cthulhu app with Google App EngineDesigning the Call of Cthulhu app with Google App Engine
Designing the Call of Cthulhu app with Google App Engine
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
 
Lightning Chess at the Sri Sanka Salesforce Developer Group
Lightning Chess at the Sri Sanka  Salesforce Developer GroupLightning Chess at the Sri Sanka  Salesforce Developer Group
Lightning Chess at the Sri Sanka Salesforce Developer Group
 
Tech 1 - Deploying Sahana Eden
Tech 1  - Deploying Sahana EdenTech 1  - Deploying Sahana Eden
Tech 1 - Deploying Sahana Eden
 
FMS Administration Seminar
FMS Administration SeminarFMS Administration Seminar
FMS Administration Seminar
 
Lessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking SitesLessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking Sites
 
Web performance - Analysing Heart.co.uk
Web performance - Analysing Heart.co.ukWeb performance - Analysing Heart.co.uk
Web performance - Analysing Heart.co.uk
 
Extending the Yahoo Streaming Benchmark + MapR Benchmarks
Extending the Yahoo Streaming Benchmark + MapR BenchmarksExtending the Yahoo Streaming Benchmark + MapR Benchmarks
Extending the Yahoo Streaming Benchmark + MapR Benchmarks
 
Zombilizing The Web Browser Via Flash Player 9
Zombilizing The Web Browser Via Flash Player 9Zombilizing The Web Browser Via Flash Player 9
Zombilizing The Web Browser Via Flash Player 9
 
Real Time Event Dispatcher
Real Time Event DispatcherReal Time Event Dispatcher
Real Time Event Dispatcher
 
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
 

Mehr von Yenwen Feng

Thoughts behind Cubie Messenger
Thoughts behind Cubie MessengerThoughts behind Cubie Messenger
Thoughts behind Cubie Messenger
Yenwen Feng
 
Our experience to start a startup
Our experience to start a startupOur experience to start a startup
Our experience to start a startup
Yenwen Feng
 

Mehr von Yenwen Feng (15)

在 Kotlin/Android 使用 Ethereum Smart Contract
在 Kotlin/Android 使用 Ethereum Smart Contract在 Kotlin/Android 使用 Ethereum Smart Contract
在 Kotlin/Android 使用 Ethereum Smart Contract
 
Lambda local - A local server for developing AWS Lambda function in Java
Lambda local - A local server for developing AWS Lambda function in JavaLambda local - A local server for developing AWS Lambda function in Java
Lambda local - A local server for developing AWS Lambda function in Java
 
Product Market Fit
Product Market FitProduct Market Fit
Product Market Fit
 
Introduction to Growth
Introduction to GrowthIntroduction to Growth
Introduction to Growth
 
Growth
GrowthGrowth
Growth
 
Growth
GrowthGrowth
Growth
 
消費性 APP 的募資經驗分享
消費性 APP 的募資經驗分享消費性 APP 的募資經驗分享
消費性 APP 的募資經驗分享
 
Thoughts behind Cubie Messenger
Thoughts behind Cubie MessengerThoughts behind Cubie Messenger
Thoughts behind Cubie Messenger
 
Our experience to start a startup
Our experience to start a startupOur experience to start a startup
Our experience to start a startup
 
GWT: Our Experiences
GWT: Our ExperiencesGWT: Our Experiences
GWT: Our Experiences
 
Entrepreneurship3
Entrepreneurship3Entrepreneurship3
Entrepreneurship3
 
Intro to Google Gadgets
Intro to Google GadgetsIntro to Google Gadgets
Intro to Google Gadgets
 
Suggestions for Building Websites
Suggestions for Building WebsitesSuggestions for Building Websites
Suggestions for Building Websites
 
Ajax by Examples 2
Ajax by Examples 2Ajax by Examples 2
Ajax by Examples 2
 
Hibernate Cache
Hibernate CacheHibernate Cache
Hibernate Cache
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Facebook flash api and social game development