Modified chapter 1 for clarity, also fixed broken content of chap 2

This commit is contained in:
Jonatan Pålsson 2011-05-12 18:51:08 +02:00
parent e6e935da26
commit 4606e3272f

View file

@ -427,7 +427,7 @@ Since these early games, the gaming industry have become much more influential
the computer game industry. the computer game industry.
More powerful games require more powerful, and more easily available hardware More powerful games require more powerful, and more easily available hardware
\begin_inset Note Note \begin_inset Note Note
status open status collapsed
\begin_layout Plain Layout \begin_layout Plain Layout
Drop a reference to the gaming industry pressuring more advanced hardware Drop a reference to the gaming industry pressuring more advanced hardware
@ -455,8 +455,8 @@ Due to the increasing importance of computer gaming, more focus should be
spent on improving the quality of the gaming service. spent on improving the quality of the gaming service.
As more and more computer games are gaining multiplayer capabilities, the As more and more computer games are gaining multiplayer capabilities, the
demands for multiplayer networking software rises. demands for multiplayer networking software rises.
This thesis is about techniques for improving the quality of this networking The topic of this thesis is techniques for improving the quality of this
software. networking software.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -612,7 +612,7 @@ generic
The framework is generic in the sense that it is not bound to a specific The framework is generic in the sense that it is not bound to a specific
game. game.
There are many different types of games, some are inherently more time There are many different types of games, some are inherently more time
sensitive than others, strategy games are examples of games which are not sensitive than others Strategy games are examples of games which are not
very sensitive to time delays, first-person shooters however, can be very very sensitive to time delays, first-person shooters however, can be very
sensitive. sensitive.
\end_layout \end_layout
@ -675,8 +675,8 @@ name "sec:Background"
\begin_layout Standard \begin_layout Standard
The game industry is a quickly growing industry with high revenues and many The game industry is a quickly growing industry with high revenues and many
clever computer scientists. clever computer scientists.
Strangely enough their customers often experience long downtimes due to Strangely enough gamers often experience long downtimes due to maintaining
maintaining or because of problems with the servers or because of problems with the servers
\begin_inset CommandInset citation \begin_inset CommandInset citation
LatexCommand citet LatexCommand citet
key "news/cnet/com/WoWProblems" key "news/cnet/com/WoWProblems"
@ -752,17 +752,17 @@ key "Armstrong03"
An unavailable phone system could potentially have life threatening consequence An unavailable phone system could potentially have life threatening consequence
s, leaving the public unable to contact emergency services. s, leaving the public unable to contact emergency services.
The same cannot be said about an unavailable game server. The same cannot be said about an unavailable game server.
The statement that game servers are less important than phone systems are The statement that game servers are less important than phone systems is
not a reason not to draw wisdom from what the telecoms have already learned. not a reason not to draw wisdom from what the telecoms have already learned.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Moving back to the gaming industry. Moving back to the gaming industry.
The main reason to develop reliable servers is a higher revenue, do archive The main reason to develop reliable servers is a higher revenue, to achive
this it is important for game companies to expand their customer base. this it is important for game companies to expand their customer base.
Reliable game servers will create a good image of the company. Reliable game servers will create a good image of the company.
In general the downtime of game servers is much higher than the downtime In general the downtime of game servers is much higher than the downtime
of telecom systems evenso the overall structure of the systems is similar of telecom systems even so the overall structure of the systems is similar
in many ways. in many ways.
It should be possible to learn and reuse solutions from the telecom systems It should be possible to learn and reuse solutions from the telecom systems
to improve game servers. to improve game servers.
@ -771,13 +771,13 @@ Moving back to the gaming industry.
\begin_layout Standard \begin_layout Standard
In the current state game servers are developed on a per-game basis, often In the current state game servers are developed on a per-game basis, often
this seems like a bad solution. this seems like bad practice.
Developers of multiplayer games need to understand network programming, Developers of multiplayer games need to understand network programming,
which above all be a problem for small companies and indipendent game developer which can be a problem for small companies and independent game developers
s who often lack expertise in that field. who often lack expertise in that field.
A way to help them in the competition would be to offer a generic game A way to help game developers in developign servers would be to offer a
server which gives them a environment in which they can implement their generic game server which gives developers an environment in which they
game in. can implement their game.
This approach would not only make it easier to develop network games, it This approach would not only make it easier to develop network games, it
would also allow games in different programming languages to be implemented would also allow games in different programming languages to be implemented
using the same server. using the same server.
@ -785,7 +785,7 @@ s who often lack expertise in that field.
\begin_layout Standard \begin_layout Standard
Some key factors to the development of the GGS have been isolated. Some key factors to the development of the GGS have been isolated.
Many of these are found in the telecom sector too. Many of these are also found in the telecom sector.
The factors are The factors are
\emph on \emph on
scalability, fault tolerance scalability, fault tolerance
@ -849,7 +849,7 @@ dependability
even in the presence of errors. even in the presence of errors.
The specification could define error handling procedures which activate The specification could define error handling procedures which activate
when an error occurs. when an error occurs.
This means that a fault tolerant, dependable system, will have a very high This means that a fault tolerant, dependable system will have a very high
probability of functioning at a given point in time, and is exactly what probability of functioning at a given point in time, and is exactly what
is desired. is desired.
@ -878,10 +878,13 @@ reference "sec:Generic"
\begin_layout Standard \begin_layout Standard
The server behaves in a way similar to an application server, but is designed The server behaves in a way similar to an application server, but is designed
to help running games. to help running games instead pf typical applications.
An application server provides processing ability and time, therefore it An application server provides processing ability and time, therefore it
is different from a file- or print-server, which only serves resources is different from a file- or print-server, which only serves resources
to the clients. to the clients.
In order to more easily understand the purpose of the GGS, it can be of
use to briefly think of application servers, thereafter viewing the differences
between the GGS and application servers.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -990,14 +993,33 @@ textbf{Erlang}}{A concurrent programming language, often used for telecom
A database server can also be seen as an application server. A database server can also be seen as an application server.
Scripts, for example SQL queries or JavaScript, are sent to the server, Scripts, for example SQL queries or JavaScript, are sent to the server,
which runs them and returns the evaluated data to the clients. which runs them and returns the evaluated data to the clients.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
One purpose of this thesis is to investigate how one could make a game server The difference between the application servers and database servers described
as generic as possible. and the GGS is the purpose of the servers.
Some important helpers are discussed, such as abstraction of the network Application servers were developed to run applications, often web applications.
layer, data store and game specific features. The application servers offer appealing features for application developers,
which aid these developers in writing applications.
Database servers were developed in order to provide access to and allow
programming of databases, thus having features specifically tailored for
database development.
\end_layout
\begin_layout Standard
The GGS on the other hand offers features appealing to game developers.
While it would be technically possible to write both regular applications
and database software using the GGS, this is not the intended usage of
the server, and this is how the GGS differs from other kinds of application
servers.
\end_layout
\begin_layout Standard
To allow the development of different games, the game server developed need
to be generic, therefore one purpose of this thesis is to investigate how
one could make a game server as generic as possible.
Some important helpers for game developers are discussed, such as abstraction
of the network layer, data store and game specific features.
\end_layout \end_layout
@ -1139,14 +1161,14 @@ How easy it is to send messages from the GDL VM to the GGS?
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
Is it possible to sandbox every game with a context or something comperable? Is it possible to sandbox every game with a context or something comparable?
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Internally the GDL VM needs to interface with the GGS to make use of the Internally the GDL VM needs to interface with the GGS to make use of the
helpers and tools that the GGS provides. helpers and tools that the GGS provides.
Thus an internal API has to be designed to make the GDL VM to be able to Thus an internal API has to be designed to make the GDL VM be able to interact
interacti with the GGS. with the GGS.
This API is ideally completely independent of the GDL, and reusable for This API is ideally completely independent of the GDL, and reusable for
any GDL. any GDL.
\end_layout \end_layout
@ -1172,6 +1194,9 @@ reliable
is fault tolerant. is fault tolerant.
In order to facilitate scalability the GGS needs a storage platform which In order to facilitate scalability the GGS needs a storage platform which
is accessible and consistent. is accessible and consistent.
The sclability aspects of the GGS are discussed from a theoretical point
of view, however no practical implementation of the scalability aspects
are found in the prototype.
\end_layout \end_layout
\begin_layout Section \begin_layout Section
@ -1182,7 +1207,7 @@ Limitations of the prototype
The implementation of the GGS protocol together with storage possibilities, The implementation of the GGS protocol together with storage possibilities,
server capacity, and game language support imposes some limitations on server capacity, and game language support imposes some limitations on
the project. the project.
To get a functional prototype some limits must be set on the types games To get a functional prototype, some limits must be set on the types games
that can be played on the prototype. that can be played on the prototype.
\begin_inset ERT \begin_inset ERT
status open status open
@ -1293,8 +1318,9 @@ Jeopardy
\emph default \emph default
. .
Both game types have varying difficulties and needs when it comes to implementi Both game types have varying difficulties and needs when it comes to implementi
ng them, a Generic Game Server should address all of them and help the developer ng them, a Generic Game Server should address all of these difficulties
to accomplish his goal. in order to provide the tools neccessary for the implementation of both
game types.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -1384,7 +1410,7 @@ In this chapter, the theory behind the techniques used in the GGS are discussed.
Benchmarking techniques are discussed. Benchmarking techniques are discussed.
The options when choosing network protocols are given, along with a discussion The options when choosing network protocols are given, along with a discussion
of each alternative. of each alternative.
Finally, an overview of scalability, fault tolerance and availability are Finally, an overview of scalability, fault tolerance and availability is
presented. presented.
\end_layout \end_layout
@ -3308,200 +3334,6 @@ textbf{.NET}}{Software platform}
\end_inset \end_inset
\end_layout
\begin_layout Subsection
Other languages
\end_layout
\begin_layout Standard
Other languages like
\emph on
lua
\emph default
,
\emph on
ActionScript
\emph default
are suitable as well because there is a virtual machine for each of them
which can be
\begin_inset Quotes eld
\end_inset
plugged in
\begin_inset Quotes erd
\end_inset
into our GDL VM interface.
With help of the
\emph on
Java Virtual Machine
\emph default
or the
\emph on
.NET
\emph default
environment it is even possible to run nearly every available programming
language in a sandbox as a GDL.
\end_layout
\begin_layout Standard
Due lack of time we have decided to use just the Erlang <-> JavaScrThere
is only a very limited number of game developers who would like to write
their games in Erlang, therefore we had to come up with something to resolve
this problem.
The main idea was to offer a replacable module which would introduce an
interface to different virtual machines which would run the game code.
This way a game developer can write the game in his favorite language while
the server part still is written in Erlang and can benefit from all of
its advantages.
\end_layout
\begin_layout Subsection
JavaScript
\end_layout
\begin_layout Standard
JavaScript has gained a lot of popularity lately, it is used in large projects
such as
\emph on
Riak
\emph default
\begin_inset Foot
status open
\begin_layout Plain Layout
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://wiki.basho.com/An-Introduction-to-Riak.html
\end_layout
\end_inset
\end_layout
\end_inset
,
\emph on
CouchDB
\emph default
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://couchdb.apache.org
\end_layout
\end_inset
\end_layout
\end_inset
.
On the popular social coding site
\emph on
GitHub.com
\emph default
, 18%
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
during the writing of the thesis the percentage went up to 19%
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
https://github.com/languages/
\end_layout
\end_inset
\end_layout
\end_inset
of all code is written in JavaScript.
The popularity of JavaScript in the programming community, in combination
with the availability of several different JavaScript virtual machines
was an important influence in choosing JavaScript as the main control language
for our GGS prototype.
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{CouchDB}}{Database server}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{Riak}}{Database server}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{GitHub.com}}{Social coding website}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{ActionScript}}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{Lua}}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{.NET}}{Software platform}
\end_layout
\end_inset
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection
@ -3564,201 +3396,7 @@ The GGS is intended to be used for powering games which have many concurrent
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
When developing the GGS, two main categories of games exhibit in. When developing the GGS, two main categories of games exhibiting different
There is only a very limited number of game developers who would like to
write their games in Erlang, therefore we had to come up with something
to resolve this problem.
The main idea was to offer a replacable module which would introduce an
interface to different virtual machines which would run the game code.
This way a game developer can write the game in his favourite language
while the server part still is written in Erlang and can benefit from all
of its advantages.
\end_layout
\begin_layout Subsection
JavaScript
\end_layout
\begin_layout Standard
JavaScript has gained a lot of popularity lately, it is used in large projects
such as
\emph on
Riak
\emph default
\begin_inset Foot
status open
\begin_layout Plain Layout
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://wiki.basho.com/An-Introduction-to-Riak.html
\end_layout
\end_inset
\end_layout
\end_inset
,
\emph on
CouchDB
\emph default
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
http://couchdb.apache.org
\end_layout
\end_inset
\end_layout
\end_inset
.
On the popular social coding site
\emph on
GitHub.com
\emph default
, 18%
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
during the writing of the thesis the percentage went up to 19%
\begin_inset Flex URL
status collapsed
\begin_layout Plain Layout
https://github.com/languages/
\end_layout
\end_inset
\end_layout
\end_inset
of all code is written in JavaScript.
The popularity of JavaScript in the programming community, in combination
with the availability of several different JavaScript virtual machines
was an important influence in choosing JavaScript as the main control language
for our GGS prototype.
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{CouchDB}}{Database server}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{Riak}}{Database server}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{GitHub.com}}{Social coding website}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{ActionScript}}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{Lua}}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{
\backslash
textbf{.NET}}{Software platform}
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
Other languages
\end_layout
\begin_layout Standard
Other languages like
\emph on
lua
\emph default
,
\emph on
ActionScript
\emph default
are suitable as well because there is a virtual machine for each of them
which can be
\begin_inset Quotes eld
\end_inset
plugged in
\begin_inset Quotes erd
\end_inset
into our GDL VM interface.
With help of the
\emph on
Java Virtual Machine
\emph default
or the
\emph on
.NET
\emph default
environment it is even possible to run nearly every available programming
language in a sandbox as a GDL.
\end_layout
\begin_layout Standard
Due lack of time we have decided to use just the Erlang <-> JavaScrg different
performance demands were identified; real-time games and turn-based games. performance demands were identified; real-time games and turn-based games.
The real-time games were deemed more demanding than the turn based games. The real-time games were deemed more demanding than the turn based games.
Tests were carried out using a real time game, since this is the more demanding Tests were carried out using a real time game, since this is the more demanding