Notes
Outline
Python for Massively Multiplayer Virtual Worlds
Jason Asbahr
jason@asbahr.com
Origin Systems, Inc.
Slide 2
Presentation Overview
Presentation Overview
System Architecture
Simulation Domain
Client / Server Interaction
Database Integration
Future Work
Q & A
Virtual Worlds
Virtual Worlds
Distributed Client / Server System
Sophisticated engine for real-time 3D rendering and spatial sound
Users represented as Avatars
Ultima Online 2
Next chapter in the Ultima fiction
Advances on several technical fronts
Built for Reuse and Maintenance
Highly Data Driven
Simulation Domain
Simulation Domain
Real world, but with a twist: Magic
Dynamic changes to base behavior
Downtime is not an option
SimObjects
Python for Behavior Logic
C++ ‘Bodies’ for Physics and Rendering
Test Phase / Execution Phase
Properties
Inheritance and Delegation
Subscribe to known Protocols
Both class level and instance level modification
Property Example
Client / Server Interaction
Client / Server Interaction
Clients communicate with servers using an encrypted RMI mechanism
Never Trust The Client
Server arbitration results in a consistent view of reality
Data Flow
Database Integration
Database Integration
Python RMI to the AreaServers
ODBC to the SQL Backend
Presents two distinct databases to the system:
Master Game Database
Runtime Game Database
Master Game Database
Constant Modules and Lookups
Data-driven Classes:
Leaf Class Tables for major types
One row for each Constructed Class
Class attribute values and Property association
Runtime Game Database
AreaServers serialize instances using a modified cPickle
Instances saved to the RTDB can be loaded into arbitrary AreaServers if region boundaries change
Future Work
Future Work
Additional features may include:
Owning houses in the world
Taming and owning virtual pets
New professions and skills
Educational apps, wearable computing, other blue sky apps
Q & A