1 / 34

Massively Multiplayer Online Games and Mobile Devices

Massively Multiplayer Online Games and Mobile Devices. Overview of BigWorld Technology. Complete Integrated Software Solution for MMOGs Integrated 3D Client/Server Backend Content Creation Tools/Management Tools Customisable Extensible with C++ and Python Scripting Scalable

misha
Download Presentation

Massively Multiplayer Online Games and Mobile Devices

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Massively Multiplayer Online Games and Mobile Devices

  2. Overview of BigWorld Technology Complete Integrated Software Solution for MMOGs Integrated 3D Client/Server Backend Content Creation Tools/Management Tools Customisable Extensible with C++ and Python Scripting Scalable Truly Massively Multiplayer Total Load Balancing Solution Full Fault Tolerance

  3. Complete Integrated Solution Content Creation Tools World, Model & Particle System editors 3ds Max & Maya exporters Supports multiple users editing shared content

  4. Complete Integrated Solution Specialised 3D Client Engine Seamless streamed world content Character animation systems AI Support

  5. Complete Integrated Solution Flexible Server Back-end and Tools Dynamic load balancing Fault tolerant Web based monitoring tools

  6. Why Mobile Devices? Eight million WoW subscribers can’t play when sitting on a bus…

  7. Why Mobile Devices? Eight million WoW subscribers can’t play when sitting on a bus… What can we offer them?

  8. Imagine This… • Check auction house • Buy Sword of Mighty Strength • Send message to clan confirming that the dungeon raid is on for 7:30 tonight… • Spend rest of journey playing mini-games to create health potions for tonight's raid.

  9. Why… Create stronger communities Competitive advantage Cheap way to add content

  10. Research The Diversity of Mobile Devices Input: D-Pads to miniature QWERTY keyboards Output: tiny 5 line screens to 4" PSPs OS/Dev Environments: Symbian, Java, BREW, HTML

  11. Research The Diversity of Mobile Devices Input: D-Pads to miniature QWERTY keyboards Output: tiny 5 line screens to 4" PSPs OS/Dev Environments: Symbian, Java, BREW, HTML Problem Too much diversity! Native engine support (2D/3D) for mobile devicesis hard, and not always appropriate

  12. Research The Diversity of Mobile Devices Input: D-Pads to miniature QWERTY keyboards Output: tiny 5 line screens to 4" PSPs OS/Dev Environments: Symbian, Java, BREW, HTML Problem Too much diversity! Native engine support (2D/3D) for mobile devicesis hard, and not always appropriate Our Solution Lightweight HTML game interaction API

  13. Requirements Scalability Able to handle millions of connections/players

  14. Requirements Scalability Able to handle millions of connections/players Extensible API Create game specific APIs without recompiling

  15. Requirements Scalability Able to handle millions of connections/players Extensible API Create game specific APIs without recompiling Simple Query Interface To web designers just like accessing a DB

  16. Requirements Scalability Able to handle millions of connections/players Extensible API Create game specific APIs without recompiling Simple Query Interface To web designers just like accessing a DB Script Language Agnostic Standard web scripting language support

  17. Implementation Issues HTTP is synchronous, but MMOG servers aren’t Need to handle multiple simultaneous requests Load balancing issues Compatibility

  18. BigWorld General Architecture Client Client Client Client Client Internet SWITCH FABRIC Login Server/s Base Server Base Server Base Server SWITCH FABRIC Cell Server Cell Server Cell Server Cell Server Management Server/s Database Server/s

  19. BigWorld General Architecture Client Client Client Client Client Internet SWITCH FABRIC Login Server/s Base Server Base Server Base Server SWITCH FABRIC Cell Server Cell Server Cell Server Cell Server Management Server/s Database Server/s

  20. BigWorld General Architecture Mobile/Web Client Mobile/Web Client Client Client Client Client Client Internet Internet SWITCH FABRIC Login Server/s Base Server Base Server Base Server SWITCH FABRIC Cell Server Cell Server Cell Server Cell Server Management Server/s Database Server/s

  21. BigWorld General Architecture Mobile/Web Client Mobile/Web Client Client Client Client Client Client Internet Internet Apache HTTP Daemon SWITCH FABRIC Login Server/s Base Server Base Server Base Server mod_php mod_python BigWorld Web Integration Module SWITCH FABRIC Cell Server Cell Server Cell Server Cell Server Management Server/s Database Server/s

  22. BigWorld General Architecture Mobile/Web Client Mobile/Web Client Client Client Client Client Client Internet Internet Apache HTTP Daemon SWITCH FABRIC Login Server/s Base Server Base Server Base Server mod_php mod_python BigWorld Web Integration Module SWITCH FABRIC Cell Server Cell Server Cell Server Cell Server Management Server/s Database Server/s

  23. BigWorld General Architecture Mobile/Web Client Mobile/Web Client Client Client Client Client Client Internet Internet Apache HTTP Daemon SWITCH FABRIC Apache HTTP Daemon Apache HTTP Daemon Login Server/s Base Server Base Server Base Server mod_php mod_python BigWorld Web Integration Module SWITCH FABRIC Cell Server Cell Server Cell Server Cell Server Management Server/s Database Server/s

  24. Transaction Timeline User Browser Web Server BigWorld BaseApp HTTP GET /player/getInventory Cookie: SESS_ID=a03bffe2874... HTTP GET /player/getInventory Cookie: SESS_ID=a03bffe2874... <?php $res = bw_exec($player, “getInventory”); def getInventory(self, response): response.contents = self.inventory response.done() (browser waiting) (blocking) foreach ($res['contents'] as $item) { showItem($item); } <H1> Inventory </H1> <UL> <LI> Sword of Mighty Strength</LI> <LI> Potion of Endurance </LI> </UL>

  25. PHP API Complete PHP API bw_logon($username, $password) bw_lookup_entity_by_name($entityType, $name) bw_lookup_entity_by_dbid($entityType, $dbId) bw_exec($mailbox, $baseMethodName, ...) bw_pickle($pyObjectResource) bw_unpickle($pickleString) bw_pyprint($pyObjectResource)

  26. Defining Methods <Avatar.def> ... <getHealth> <ReturnValues> <health> INT16 </health> </ReturnValues> </getHealth> <sendChatMessage> <Arg> STRING </Arg> <!– Chat message --> </sendChatMessage> <getInventory> <Arg> INT8 </Arg> <!-– Bag ID --> <ReturnValues> <bagName> STRING </bagName> <contents> ARRAY <of> INT32 </of> </contents> </ReturnValues> </getInventory> </Avatar.def>

  27. Server-Side Implementation Implementation of Server-Side Methods class Avatar( BigWorld.Base ): … def getHealth( self, response ): response.health = self.cell.health response.done() def sendChatMessage( self, message ): self.allClients.showMessage( message ) # no return values required def getInventory( self, response, bagNumber ): # self.bagNames and self.bagContents are # BigWorld-aware Entity properties response.bagName = self.bagNames[bagNumber] response.contents = self.bagContents[bagNumber] response.done()

  28. Web Server Code Using Functions from PHP <?php // get a reference to the Avatar object known as ’Stig’ $player = bw_lookup_entity_by_name( ’Avatar’, ’Stig’ ); // call the BigWorld entity method $result = bw_exec( $player, ”getHealth” ); // write the health value back to the browser printf( ”Health of Stig: %d”, $result[’health’] ); ?>

  29. mod_python Using Functions from mod_python def listHealth( req ): # get a reference to the Avatar object known as Stig player = pyBigWorld.lookupEntityByName(’Avatar’, ’Stig’) # call the BigWorld entity method result = player.getHealth() # write the health value back to the browser req.write(”Health of Stig: %d” % result[’health’] )

  30. Capabilities View Character Statistics Player Chat Player to Player Object trading Auction House Tamagotchi Style Games Mini-Games (XP Grinding)

  31. Example: View Player Stats

  32. Example: Create Auction from Inventory

  33. Example: Search Auctions

  34. Conclusion Pervasive MMOG experiences anywhere Create cheap extensions to your Game Create stronger communities

More Related