Examensarbete av Mattis Castegren

Design av skriptspråk för en distribuerad spelvärld

Sammanfattning

Det här arbetet är en del av ett större projekt vars mål är att skapa en motor för massiva multiplayer-spel. I den här spelmotorn är spelvärlden distribuerad över flera datorer, och varje dator har hand om en viss del av spelvärlden. Denna distribuering är inte märkbar för spelarna, vilka kan röra sig obehindrat mellan olika servrar utan att märka några skarvar.

Den här rapporten är resultatet av ett arbete som har fokuserat på skriptningen av objekt i spelvärlden. Skriptspråket som har valts är Jython, en variant av Python för Java. Problem som har hanterats är dels traditionella skriptningsproblem som hur körtiden av skript ska begränsas, och dels nya problem som rör distribueringen av spelvärlden, till exempel hur man får olika servrar att vara överens om egenskaperna hos ett objekt som befinner sig nära en servergräns.

Resultatet av arbetet är en enkel testvärld där objekts beteenden kan skriptas med Jython. Prestandatester visar att idéerna bakom både spelmotorn och skriptningssystemet troligen kan ge tillräckligt bra resultat, men att mer arbete måste göras för att effektivisera sättet på vilket servrarna kommunicerar med varandra.

Design of a scripting language for a distributed game world

Abstract

This work is part of a bigger project to build an engine for massively multiplayer online games. In this engine the game world is distributed over many computers, with each computer handling a different part of the world. This distribution is not visible to the player, who can walk from one server to another without noticing any seams.

This thesis is the result of a work focusing on the scripting of objects in the game world. The scripting language is chosen to be Jython, a variant of Python for Java. Problems dealt with are both traditional scripting problems like how to limit the time a script is allowed to run, and new problems concerning the distributed game world, like how to make sure different servers agree on the properties of objects close to the server border.

The result of the work is a simple test world where the behavior of the objects can be scripted using Jython. Tests shows that the ideas behind the game engine, as well as the scripting system implemented, probably could give good enough performance, but that more work needs to be put into the way servers communicate with each other.