SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Christian Schalk
 Google Developer Advocate

How to Build Kick Ass Games for the
Cloud

GDC Online 2011
Austin, Texas - October 10, 2011
About the Speaker

 Christian Schalk

 Day Job
  ● Developer Advocate for Google's Cloud Technology
     ○ App Engine, Google Storage, Prediction API, BigQuery ...

  ● Mostly Server-Side Java Background
     ○ "JavaServer Faces: The Complete Reference" Co-Author

  ● Haven't developed video games since the
    Commodore-64!


                                           Yes, I'm old school ;-)
Agenda

 ● PlayN Recap

 ● Google Cloud Tech Review
    ○ App Engine
    ○ Google Storage
    ○ ...
 ● Hands on with PlayN - Getting Started

 ● Deploying your game to the cloud

 ● Setting up an RPC mechanism
Let's start with a Demo!
Agenda

 ● PlayN Recap

 ● Google Cloud Tech Review
    ○ App Engine
    ○ Google Storage
    ○ ...
 ● Hands on with PlayN - Getting Started

 ● Deploying your game to the cloud

 ● Setting up an RPC mechanism
Reviewing PlayN!
Formerly known as "ForPlay"



   ● An API for building cross-platform games

   ● Core game code can be platform agnostic

   ● Develop games in Java
      ○ Familiar language/toolset

   ● Leverages Google Web Toolkit
      ○ Compiles to JS/HTML5, (among other platforms)

   ● Free and Open Source (alpha)
      ○ http://code.google.com/p/playn
Introducing PlayN!
A GWT abstraction layer for games




                                PlayN API




Implementations for Java, HTML5(GWT/JS), Android, Flash
Components of PlayN!




Implements core.Game                        PlayN.*




Fully generic gaming components. Core game logic is fully platform
independent!
PlayN Cross Platform Magic


● Game uses core PlayN abstractions, is unaware of which
  platform is running
● The only platform-specific code is in the entry point for
  each platform:



   PlayN.run(new MyGame());          PlayN.run(new MyGame());
Other PlayN Benefits

● Built-in physics engine based on proven OpenSource
  technologies




 ● Box2D
    ○ C++ 2D Physics engine by Erin Catto
 ● JBox2D
    ○ A port of Box2D from C++ to Java
 ● GWTBox2D
    ○ A port of JBox2D from Java to JavaScript
Benefits of GWT Abstraction

● GWT Compiler optimizes code for size
   ○ Removes unused code
   ○ Evaluates when possible at compile time
   ○ Inlines functions
   ○ Heavily obfuscated result code

● Smaller compiled code - faster load time

● Optimized caching, avoids unnecessary network IO
Benefits of HTML5 for Games

● New HTML elements
   ○ 2D canvas
   ○ Audio, Video

● Application Cache

● 3D Canvas (WebGL)
   ○ Open GL ES 2.0 made JavaScript friendly

● CSS3
   ○ Supports hardware accelerated transforms
Agenda

 ● PlayN Recap

 ● Google Cloud Tech Review
    ○ App Engine
    ○ Google Storage
    ○ ...
 ● Hands on with PlayN - Getting Started

 ● Deploying your game to the cloud

 ● Setting up an RPC mechanism
Google App Engine
Build your Apps on Google's cloud
Introducing App Engine
Build and run your web apps on Google’s Cloud Infrastructure



   ● Easy to build
   ● Easy to maintain
   ● Easy to scale




 Focus on building your app, let us wear the pagers!
Cloud Development in a Box


● Development SDK
● Local development tools
    ○ DevServer, admin
    ○ Eclipse plugin
● Language runtimes
● Specialized API services
● Cloud-based dashboard
● Automatic scaling
    ○ Built-in fault tolerance
    ○ Automated load balancing
● Continuously evolving...
Language Runtime Options




           GO              Java
        Experimental
Specialized APIs/Services for the Sandbox

    Memcache     Datastore    URL Fetch




    Mail         XMPP         Task Queue




    Images       Blobstore    User Service
App Engine Evolution Through The Years




 2008                            2009                                2010                    2011

   App Engine     Batch write/read          Java     Task Queues      Blobstore      Multitenancy Hi-Replication
       Launch                Https      DB Import           XMPP       Appstats Instance Console       Datastore
        Python             Status-           cron   incoming email       cursors       Always On Channel API
      Datastore        Dashboard                                        Mapper         hi-perf imag     Files API
    Memcache                                                                          10 min tasks   Remote API
    logs export                                                                                     Prosp Search
App Engine - By the Numbers
  100,000+
  Active developers per month

  200,000+
  Active apps per week
App Engine - By the Numbers




1,500,000,000+
Page views per day
Gaming - Share data Mobile or Web!
App Engine More Info




       http://code.google.com/appengine
Google Storage for Developers
       Store your data in Google's cloud
What Is Google Storage?



 ● Store your data in Google's cloud
    ○ any format, any amount, any time

 ● You control access to your data
    ○ private, shared, or public

 ● Access via Google APIs or 3rd party tools/libraries
Sample Use Cases

 Static content hosting
 e.g. static html, images, music, video

 Backup and recovery
 e.g. personal data, business records

 Sharing
 e.g. share data with your customers

 Data storage for applications
 e.g. used as storage backend for Android, AppEngine, Cloud
 based apps

 Storage for Computation
 e.g. BigQuery, Prediction API
Google Storage Benefits


             High Performance and Scalability
             Backed by Google infrastructure




               Strong Security and Privacy
               Control access to your data



           Easy to Use
           Get started fast with Google & 3rd party tools
Google Storage Technical Details
 ● RESTful API
    ○ Verbs: GET, PUT, POST, HEAD, DELETE
    ○ Resources: identified by URI
    ○ Compatible with S3

 ● Buckets
    ○ Flat containers
 ● Objects
    ○ Any type
    ○ Size: 100 GB / object

 ● Access Control for Google Accounts
    ○ For individuals and groups
 ● Two Ways to Authenticate Requests
    ○ Sign request using access keys
    ○ Web browser login
Demo


● Tools:
   ○ GSUtil
   ○ GS Manager

● Upload / Download
Google Storage More Info




       http://code.google.com/apis/storage
Agenda

 ● PlayN Recap

 ● Google Cloud Tech Review
    ○ App Engine
    ○ Google Storage
    ○ ...
 ● Hands on with PlayN - Getting Started

 ● Deploying your game to the cloud

 ● Setting up an RPC mechanism
Requirements for getting started with PlayN

  ● Clone a copy of PlayN
     ○ git clone https://code.google.com/p/playn

  ● Core Requirements
     ○ Java 6 SDK
     ○ Apache Ant
     ○ Maven
     ○ App Engine SDK
     ○ Android SDK

  ● Requirements with Eclipse
     ○ Eclipse IDE Indigo 3.7 (Or earlier version w/ Maven)
     ○ Google Plugin for Eclipse
     ○ Android Plugin for Eclipse
Building/Installing PlayN

  ● After you've cloned a copy of PlayN
     ○ git clone https://code.google.com/p/playn

  ● And satisfied the core requirements, you can install via:
     ○ cd playn (directory where your copy is location)
     ○ mvn install (or 'ant install')

  ● Running 'showcase' sample app with Mvn
     ○ cd playn/sample/showcase/core
     ○ mvn compile exec:java

  ● Running 'showcase' sample app with Ant
     ○ cd playn/sample/showcase
     ○ ant run-java
Demo: How to get started w/ PlayN




          http://code.google.com/p/playn
Building a new project in PlayN

● From the command line:
   ○ mvn archetype:generate -DarchetypeGroupId=com.googlecode.playn
     -DarchetypeArtifactId=playn-archetype
   ○ ...

● From Eclipse
   ○ Select File → New → Other..., then select Maven →
     Maven Project in the dialog that pops up, then click
     Next.
           ■ Click Next again unless you wish to specify a custom workspace location.
           ■ Check Include snapshot archetypes in the dialog and then double click
             on the playn-archetype in the list of archetypes
   ○ ...
Demo: Building a new Game in PlayN
Agenda

 ● PlayN Recap

 ● Google Cloud Tech Review
    ○ App Engine
    ○ Google Storage
    ○ ...
 ● Hands on with PlayN - Getting Started

 ● Deploying your game to the cloud

 ● Setting up an RPC mechanism
Deploy your HTML project to the Cloud

  ● For Google App Engine Deployment, you can easily
    convert the project to an App Engine Project
Deploy your HTML project to the Cloud

  ● After converting your HTML project to an App Engine
    project you will have to do...

  ● Add a 'WEB-INF/lib/appengine-web.xml' file
     ○ Note: Click 'Quick Fix' in the Errors console of
       Eclipse

  ● Before deployment make sure your 'WEB-INF/lib' has
    the necessary runtime App Engine jar files.
Agenda

 ● PlayN Recap

 ● Google Cloud Tech Review
    ○ App Engine
    ○ Google Storage
    ○ ...
 ● Hands on with PlayN - Getting Started

 ● Deploying your game to the cloud

 ● Setting up an RPC mechanism
Setting up an RPC mechanism

  ● Building Your Server
     ○ PlayN comes with a preliminary Server example
       code that uses Jetty
         ■ Is not needed if deploying to App Engine
         ■ Instead, you can implement your own server by
           adding an HttpServlet to your project
            ■ Have it implement the doPost() method
            ■ Can map it to url: '/rpc' in web.xml

  ● Building your client code
     ○ If Cloud is your main deployment, you can use
       GWT's RequestBuilder
          ■ You can build your HTTP Post to send data to
            your server
Setting up an RPC mechanism
     ● Example: A client method to persist a score
private void submitScore(int score) {

    RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, "/rpc");
    rb.setHeader("Content-Type", "application/x-www-form-urlencoded");
    try {
      rb.sendRequest("score="+score, new RequestCallback() {
              public void onError(Request request, Throwable exception) {
                requestFailed(exception);
              }
              public void onResponseReceived(Request request, Response response) {
                log.info("Score sent and response received.");
              }
          });
    } catch (RequestException ex) {
      requestFailed(ex);
    }
}
Setting up an RPC mechanism
   ● Example: Server method to persist score sent from
     client
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
    IOException {
  resp.setContentType("text/plain");

  User user = UserServiceFactory.getUserService().getCurrentUser();
  String id = null;

  if (user == null){
    id = "Anonymous";
  } else {
    id = user.getNickname();
  }
  String score = req.getParameter("score");

  if (score != null){
    persistScore(score, id);
   }
 }
private void persistScore(String score, String userid) {...}
New! Using the RPCService Wizard
(As of version 2.4 of the Google Plugin for Eclipse)


Select the project containing any Persistent classes, and then...
File > New > Other > Google > RPC Service




   Generates CRUD stub code for all persistent classes
Demo: Introducing 'Cloud Warrior'

App Engine                       Google Storage
Datastore
                                       Game Assets
                                       (images/sounds)




  Game Scores
  Profile Data

                     Game Play
                     (PlayN)
PlayN Summary


● Open source, cross-platform game abstraction layer
   ○ Core game logic is platform agnostic

● ForPlay abstracts away the core components of a game
   ○ The game loop, I/O system, and asset management

● Write in familiar Java, get performance on multiple
  platforms
   ○ Superior Java development/debug
   ○ GWT allows compilation to fast JavaScript/HTML5

● Your assignment:
   ○ Download PlayN and build a game!
   ○ http://code.google.com/p/playn/
Announcements!
   Announcing the New PlayN Developer Site!




        http://developers.google.com/playn/
Announcements!

Join us at New Game!
Use coupon HTML5ROCKS for 15% off registration
Q&A
@cschalk
Thank You!
  @cschalk

Más contenido relacionado

La actualidad más candente

Apache Beam and Google Cloud Dataflow - IDG - final
Apache Beam and Google Cloud Dataflow - IDG - finalApache Beam and Google Cloud Dataflow - IDG - final
Apache Beam and Google Cloud Dataflow - IDG - final
Sub Szabolcs Feczak
 

La actualidad más candente (20)

Building Translate on Glass
Building Translate on GlassBuilding Translate on Glass
Building Translate on Glass
 
Image archive, analysis & report generation with Google Cloud
Image archive, analysis & report generation with Google CloudImage archive, analysis & report generation with Google Cloud
Image archive, analysis & report generation with Google Cloud
 
Deep dive into serverless on Google Cloud
Deep dive into serverless on Google CloudDeep dive into serverless on Google Cloud
Deep dive into serverless on Google Cloud
 
Serverless Computing with Python
Serverless Computing with PythonServerless Computing with Python
Serverless Computing with Python
 
Introduction to Cloud Computing with Google Cloud
Introduction to Cloud Computing with Google CloudIntroduction to Cloud Computing with Google Cloud
Introduction to Cloud Computing with Google Cloud
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Python
 
Cloud Spin - building a photo booth with the Google Cloud Platform
Cloud Spin - building a photo booth with the Google Cloud PlatformCloud Spin - building a photo booth with the Google Cloud Platform
Cloud Spin - building a photo booth with the Google Cloud Platform
 
Easy path to machine learning (Spring 2021)
Easy path to machine learning (Spring 2021)Easy path to machine learning (Spring 2021)
Easy path to machine learning (Spring 2021)
 
Supercharge your app with Cloud Functions for Firebase
Supercharge your app with Cloud Functions for FirebaseSupercharge your app with Cloud Functions for Firebase
Supercharge your app with Cloud Functions for Firebase
 
Run your code serverlessly on Google's open cloud
Run your code serverlessly on Google's open cloudRun your code serverlessly on Google's open cloud
Run your code serverlessly on Google's open cloud
 
Powerful Google Cloud tools for your hack
Powerful Google Cloud tools for your hackPowerful Google Cloud tools for your hack
Powerful Google Cloud tools for your hack
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
 
Easy path to machine learning (Spring 2020)
Easy path to machine learning (Spring 2020)Easy path to machine learning (Spring 2020)
Easy path to machine learning (Spring 2020)
 
JCConf 2016 - Google Dataflow 小試
JCConf 2016 - Google Dataflow 小試JCConf 2016 - Google Dataflow 小試
JCConf 2016 - Google Dataflow 小試
 
Google Cloud: Data Analysis and Machine Learningn Technologies
Google Cloud: Data Analysis and Machine Learningn Technologies Google Cloud: Data Analysis and Machine Learningn Technologies
Google Cloud: Data Analysis and Machine Learningn Technologies
 
Apache Beam and Google Cloud Dataflow - IDG - final
Apache Beam and Google Cloud Dataflow - IDG - finalApache Beam and Google Cloud Dataflow - IDG - final
Apache Beam and Google Cloud Dataflow - IDG - final
 
Using Google (Cloud) APIs
Using Google (Cloud) APIsUsing Google (Cloud) APIs
Using Google (Cloud) APIs
 
Build with ALL of Google Cloud
Build with ALL of Google CloudBuild with ALL of Google Cloud
Build with ALL of Google Cloud
 
Powerful Google Cloud tools for your hack (2020)
Powerful Google Cloud tools for your hack (2020)Powerful Google Cloud tools for your hack (2020)
Powerful Google Cloud tools for your hack (2020)
 
Google compute engine - overview
Google compute engine - overviewGoogle compute engine - overview
Google compute engine - overview
 

Similar a Building Kick Ass Video Games for the Cloud

Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
Rodrigo Gil
 

Similar a Building Kick Ass Video Games for the Cloud (20)

Accessing Google Cloud APIs
Accessing Google Cloud APIsAccessing Google Cloud APIs
Accessing Google Cloud APIs
 
Web App Prototypes with Google App Engine
Web App Prototypes with Google App EngineWeb App Prototypes with Google App Engine
Web App Prototypes with Google App Engine
 
Mobile backends with Google Cloud Platform (MBLTDev'14)
Mobile backends with Google Cloud Platform (MBLTDev'14)Mobile backends with Google Cloud Platform (MBLTDev'14)
Mobile backends with Google Cloud Platform (MBLTDev'14)
 
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
 
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
 
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)
Scale with a smile with Google Cloud Platform At DevConTLV (June 2014)
 
Google Platform Overview (April 2014)
Google Platform Overview (April 2014)Google Platform Overview (April 2014)
Google Platform Overview (April 2014)
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Python
 
Utilizing HTML5 APIs
Utilizing HTML5 APIsUtilizing HTML5 APIs
Utilizing HTML5 APIs
 
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with KubernetesKubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
 
Google's serverless journey: past to present
Google's serverless journey: past to presentGoogle's serverless journey: past to present
Google's serverless journey: past to present
 
Building Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesBuilding Apps on Google Cloud Technologies
Building Apps on Google Cloud Technologies
 
Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
 
Intro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesIntro to Google's Cloud Technologies
Intro to Google's Cloud Technologies
 
Programming for non tech entrepreneurs
Programming for non tech entrepreneursProgramming for non tech entrepreneurs
Programming for non tech entrepreneurs
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Exploring Google (Cloud) APIs with Python & JavaScript
Exploring Google (Cloud) APIs with Python & JavaScriptExploring Google (Cloud) APIs with Python & JavaScript
Exploring Google (Cloud) APIs with Python & JavaScript
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloud
 

Más de Chris Schalk

Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalk
Chris Schalk
 
App Engine Presentation @ SFJUG Sep 2010
App Engine Presentation @ SFJUG Sep 2010App Engine Presentation @ SFJUG Sep 2010
App Engine Presentation @ SFJUG Sep 2010
Chris Schalk
 
What is Google App Engine
What is Google App EngineWhat is Google App Engine
What is Google App Engine
Chris Schalk
 
App engine devfest_mexico_10
App engine devfest_mexico_10App engine devfest_mexico_10
App engine devfest_mexico_10
Chris Schalk
 

Más de Chris Schalk (20)

Quick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesQuick Intro to Google Cloud Technologies
Quick Intro to Google Cloud Technologies
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
 
Building Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudBuilding Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the Cloud
 
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
 
Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalk
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesIntroduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform Technologies
 
Google Cloud Technologies Overview
Google Cloud Technologies OverviewGoogle Cloud Technologies Overview
Google Cloud Technologies Overview
 
Introducing App Engine for Business
Introducing App Engine for BusinessIntroducing App Engine for Business
Introducing App Engine for Business
 
Introduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesIntroduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologies
 
Google App Engine for Business 101
Google App Engine for Business 101Google App Engine for Business 101
Google App Engine for Business 101
 
What's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for BusinessWhat's new in App Engine and intro to App Engine for Business
What's new in App Engine and intro to App Engine for Business
 
Intro to new Google cloud technologies: Google Storage, Prediction API, BigQuery
Intro to new Google cloud technologies: Google Storage, Prediction API, BigQueryIntro to new Google cloud technologies: Google Storage, Prediction API, BigQuery
Intro to new Google cloud technologies: Google Storage, Prediction API, BigQuery
 
App Engine Presentation @ SFJUG Sep 2010
App Engine Presentation @ SFJUG Sep 2010App Engine Presentation @ SFJUG Sep 2010
App Engine Presentation @ SFJUG Sep 2010
 
What is Google App Engine
What is Google App EngineWhat is Google App Engine
What is Google App Engine
 
App engine cloud_comp_expo_nyc
App engine cloud_comp_expo_nycApp engine cloud_comp_expo_nyc
App engine cloud_comp_expo_nyc
 
App engine devfest_mexico_10
App engine devfest_mexico_10App engine devfest_mexico_10
App engine devfest_mexico_10
 
App Engine Overview Cloud Futures Publish
App Engine Overview Cloud Futures PublishApp Engine Overview Cloud Futures Publish
App Engine Overview Cloud Futures Publish
 
App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010App Engine Overview @ Google Hackathon SXSW 2010
App Engine Overview @ Google Hackathon SXSW 2010
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Building Kick Ass Video Games for the Cloud

  • 1. Christian Schalk Google Developer Advocate How to Build Kick Ass Games for the Cloud GDC Online 2011 Austin, Texas - October 10, 2011
  • 2. About the Speaker Christian Schalk Day Job ● Developer Advocate for Google's Cloud Technology ○ App Engine, Google Storage, Prediction API, BigQuery ... ● Mostly Server-Side Java Background ○ "JavaServer Faces: The Complete Reference" Co-Author ● Haven't developed video games since the Commodore-64! Yes, I'm old school ;-)
  • 3. Agenda ● PlayN Recap ● Google Cloud Tech Review ○ App Engine ○ Google Storage ○ ... ● Hands on with PlayN - Getting Started ● Deploying your game to the cloud ● Setting up an RPC mechanism
  • 5. Agenda ● PlayN Recap ● Google Cloud Tech Review ○ App Engine ○ Google Storage ○ ... ● Hands on with PlayN - Getting Started ● Deploying your game to the cloud ● Setting up an RPC mechanism
  • 6. Reviewing PlayN! Formerly known as "ForPlay" ● An API for building cross-platform games ● Core game code can be platform agnostic ● Develop games in Java ○ Familiar language/toolset ● Leverages Google Web Toolkit ○ Compiles to JS/HTML5, (among other platforms) ● Free and Open Source (alpha) ○ http://code.google.com/p/playn
  • 7. Introducing PlayN! A GWT abstraction layer for games PlayN API Implementations for Java, HTML5(GWT/JS), Android, Flash
  • 8. Components of PlayN! Implements core.Game PlayN.* Fully generic gaming components. Core game logic is fully platform independent!
  • 9. PlayN Cross Platform Magic ● Game uses core PlayN abstractions, is unaware of which platform is running ● The only platform-specific code is in the entry point for each platform: PlayN.run(new MyGame()); PlayN.run(new MyGame());
  • 10. Other PlayN Benefits ● Built-in physics engine based on proven OpenSource technologies ● Box2D ○ C++ 2D Physics engine by Erin Catto ● JBox2D ○ A port of Box2D from C++ to Java ● GWTBox2D ○ A port of JBox2D from Java to JavaScript
  • 11. Benefits of GWT Abstraction ● GWT Compiler optimizes code for size ○ Removes unused code ○ Evaluates when possible at compile time ○ Inlines functions ○ Heavily obfuscated result code ● Smaller compiled code - faster load time ● Optimized caching, avoids unnecessary network IO
  • 12. Benefits of HTML5 for Games ● New HTML elements ○ 2D canvas ○ Audio, Video ● Application Cache ● 3D Canvas (WebGL) ○ Open GL ES 2.0 made JavaScript friendly ● CSS3 ○ Supports hardware accelerated transforms
  • 13. Agenda ● PlayN Recap ● Google Cloud Tech Review ○ App Engine ○ Google Storage ○ ... ● Hands on with PlayN - Getting Started ● Deploying your game to the cloud ● Setting up an RPC mechanism
  • 14. Google App Engine Build your Apps on Google's cloud
  • 15. Introducing App Engine Build and run your web apps on Google’s Cloud Infrastructure ● Easy to build ● Easy to maintain ● Easy to scale Focus on building your app, let us wear the pagers!
  • 16. Cloud Development in a Box ● Development SDK ● Local development tools ○ DevServer, admin ○ Eclipse plugin ● Language runtimes ● Specialized API services ● Cloud-based dashboard ● Automatic scaling ○ Built-in fault tolerance ○ Automated load balancing ● Continuously evolving...
  • 17. Language Runtime Options GO Java Experimental
  • 18. Specialized APIs/Services for the Sandbox Memcache Datastore URL Fetch Mail XMPP Task Queue Images Blobstore User Service
  • 19. App Engine Evolution Through The Years 2008 2009 2010 2011 App Engine Batch write/read Java Task Queues Blobstore Multitenancy Hi-Replication Launch Https DB Import XMPP Appstats Instance Console Datastore Python Status- cron incoming email cursors Always On Channel API Datastore Dashboard Mapper hi-perf imag Files API Memcache 10 min tasks Remote API logs export Prosp Search
  • 20. App Engine - By the Numbers 100,000+ Active developers per month 200,000+ Active apps per week
  • 21. App Engine - By the Numbers 1,500,000,000+ Page views per day
  • 22. Gaming - Share data Mobile or Web!
  • 23. App Engine More Info http://code.google.com/appengine
  • 24. Google Storage for Developers Store your data in Google's cloud
  • 25. What Is Google Storage? ● Store your data in Google's cloud ○ any format, any amount, any time ● You control access to your data ○ private, shared, or public ● Access via Google APIs or 3rd party tools/libraries
  • 26. Sample Use Cases Static content hosting e.g. static html, images, music, video Backup and recovery e.g. personal data, business records Sharing e.g. share data with your customers Data storage for applications e.g. used as storage backend for Android, AppEngine, Cloud based apps Storage for Computation e.g. BigQuery, Prediction API
  • 27. Google Storage Benefits High Performance and Scalability Backed by Google infrastructure Strong Security and Privacy Control access to your data Easy to Use Get started fast with Google & 3rd party tools
  • 28. Google Storage Technical Details ● RESTful API ○ Verbs: GET, PUT, POST, HEAD, DELETE ○ Resources: identified by URI ○ Compatible with S3 ● Buckets ○ Flat containers ● Objects ○ Any type ○ Size: 100 GB / object ● Access Control for Google Accounts ○ For individuals and groups ● Two Ways to Authenticate Requests ○ Sign request using access keys ○ Web browser login
  • 29. Demo ● Tools: ○ GSUtil ○ GS Manager ● Upload / Download
  • 30. Google Storage More Info http://code.google.com/apis/storage
  • 31. Agenda ● PlayN Recap ● Google Cloud Tech Review ○ App Engine ○ Google Storage ○ ... ● Hands on with PlayN - Getting Started ● Deploying your game to the cloud ● Setting up an RPC mechanism
  • 32. Requirements for getting started with PlayN ● Clone a copy of PlayN ○ git clone https://code.google.com/p/playn ● Core Requirements ○ Java 6 SDK ○ Apache Ant ○ Maven ○ App Engine SDK ○ Android SDK ● Requirements with Eclipse ○ Eclipse IDE Indigo 3.7 (Or earlier version w/ Maven) ○ Google Plugin for Eclipse ○ Android Plugin for Eclipse
  • 33. Building/Installing PlayN ● After you've cloned a copy of PlayN ○ git clone https://code.google.com/p/playn ● And satisfied the core requirements, you can install via: ○ cd playn (directory where your copy is location) ○ mvn install (or 'ant install') ● Running 'showcase' sample app with Mvn ○ cd playn/sample/showcase/core ○ mvn compile exec:java ● Running 'showcase' sample app with Ant ○ cd playn/sample/showcase ○ ant run-java
  • 34. Demo: How to get started w/ PlayN http://code.google.com/p/playn
  • 35. Building a new project in PlayN ● From the command line: ○ mvn archetype:generate -DarchetypeGroupId=com.googlecode.playn -DarchetypeArtifactId=playn-archetype ○ ... ● From Eclipse ○ Select File → New → Other..., then select Maven → Maven Project in the dialog that pops up, then click Next. ■ Click Next again unless you wish to specify a custom workspace location. ■ Check Include snapshot archetypes in the dialog and then double click on the playn-archetype in the list of archetypes ○ ...
  • 36. Demo: Building a new Game in PlayN
  • 37. Agenda ● PlayN Recap ● Google Cloud Tech Review ○ App Engine ○ Google Storage ○ ... ● Hands on with PlayN - Getting Started ● Deploying your game to the cloud ● Setting up an RPC mechanism
  • 38. Deploy your HTML project to the Cloud ● For Google App Engine Deployment, you can easily convert the project to an App Engine Project
  • 39. Deploy your HTML project to the Cloud ● After converting your HTML project to an App Engine project you will have to do... ● Add a 'WEB-INF/lib/appengine-web.xml' file ○ Note: Click 'Quick Fix' in the Errors console of Eclipse ● Before deployment make sure your 'WEB-INF/lib' has the necessary runtime App Engine jar files.
  • 40. Agenda ● PlayN Recap ● Google Cloud Tech Review ○ App Engine ○ Google Storage ○ ... ● Hands on with PlayN - Getting Started ● Deploying your game to the cloud ● Setting up an RPC mechanism
  • 41. Setting up an RPC mechanism ● Building Your Server ○ PlayN comes with a preliminary Server example code that uses Jetty ■ Is not needed if deploying to App Engine ■ Instead, you can implement your own server by adding an HttpServlet to your project ■ Have it implement the doPost() method ■ Can map it to url: '/rpc' in web.xml ● Building your client code ○ If Cloud is your main deployment, you can use GWT's RequestBuilder ■ You can build your HTTP Post to send data to your server
  • 42. Setting up an RPC mechanism ● Example: A client method to persist a score private void submitScore(int score) { RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, "/rpc"); rb.setHeader("Content-Type", "application/x-www-form-urlencoded"); try { rb.sendRequest("score="+score, new RequestCallback() { public void onError(Request request, Throwable exception) { requestFailed(exception); } public void onResponseReceived(Request request, Response response) { log.info("Score sent and response received."); } }); } catch (RequestException ex) { requestFailed(ex); } }
  • 43. Setting up an RPC mechanism ● Example: Server method to persist score sent from client protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/plain"); User user = UserServiceFactory.getUserService().getCurrentUser(); String id = null; if (user == null){ id = "Anonymous"; } else { id = user.getNickname(); } String score = req.getParameter("score"); if (score != null){ persistScore(score, id); } } private void persistScore(String score, String userid) {...}
  • 44. New! Using the RPCService Wizard (As of version 2.4 of the Google Plugin for Eclipse) Select the project containing any Persistent classes, and then... File > New > Other > Google > RPC Service Generates CRUD stub code for all persistent classes
  • 45. Demo: Introducing 'Cloud Warrior' App Engine Google Storage Datastore Game Assets (images/sounds) Game Scores Profile Data Game Play (PlayN)
  • 46. PlayN Summary ● Open source, cross-platform game abstraction layer ○ Core game logic is platform agnostic ● ForPlay abstracts away the core components of a game ○ The game loop, I/O system, and asset management ● Write in familiar Java, get performance on multiple platforms ○ Superior Java development/debug ○ GWT allows compilation to fast JavaScript/HTML5 ● Your assignment: ○ Download PlayN and build a game! ○ http://code.google.com/p/playn/
  • 47. Announcements! Announcing the New PlayN Developer Site! http://developers.google.com/playn/
  • 48. Announcements! Join us at New Game! Use coupon HTML5ROCKS for 15% off registration
  • 50. Thank You! @cschalk