|
|
|
Jason Asbahr |
|
jason@asbahr.com |
|
Origin Systems, Inc. |
|
|
|
|
|
|
|
|
|
System Architecture |
|
Simulation Domain |
|
Client / Server Interaction |
|
Database Integration |
|
Future Work |
|
Q & A |
|
|
|
|
|
|
Distributed Client / Server System |
|
Sophisticated engine for real-time 3D rendering
and spatial sound |
|
Users represented as Avatars |
|
|
|
|
|
Next chapter in the Ultima fiction |
|
Advances on several technical fronts |
|
Built for Reuse and Maintenance |
|
Highly Data Driven |
|
|
|
|
|
|
Real world, but with a twist: Magic |
|
Dynamic changes to base behavior |
|
Downtime is not an option |
|
|
|
|
Python for Behavior Logic |
|
C++ ‘Bodies’ for Physics and Rendering |
|
Test Phase / Execution Phase |
|
|
|
|
Inheritance and Delegation |
|
Subscribe to known Protocols |
|
Both class level and instance level modification |
|
|
|
|
|
|
|
|
Clients communicate with servers using an
encrypted RMI mechanism |
|
Never Trust The Client |
|
Server arbitration results in a consistent view
of reality |
|
|
|
|
|
|
|
|
|
Python RMI to the AreaServers |
|
ODBC to the SQL Backend |
|
Presents two distinct databases to the system: |
|
Master Game Database |
|
Runtime 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 |
|
|
|
|
AreaServers serialize instances using a modified
cPickle |
|
Instances saved to the RTDB can be loaded into
arbitrary AreaServers if region boundaries change |
|
|
|
|
|
|
|
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 |
|
|
|