Corrected a lot of errors in chapter 1&2

This commit is contained in:
niklas 2011-05-04 15:37:19 +02:00
parent a72e14ffdb
commit 79848ce54c

View file

@ -401,7 +401,7 @@ Due to the increasing importance of computer gaming, more focus should be
spent on improving the quality of the gaming service.
As more and more computer games are gaining multi-player capabilities,
the demands for multiplayer networking software rises.
This thesis is about techniques for improving the quality if this networking
This thesis is about techniques for improving the quality of this networking
software.
\end_layout
@ -465,14 +465,15 @@ generic
framework for developing network games.
The framework is generic in the sense that it is not bound to a specific
game.
There are many different types of games, some are inheritly more time sensitive
than others, strategy games are examples of games which are not very sensitive
to time delays, first-person shooters however, can be very sensitive.
There are many different types of games, some are inherently more time
sensitive than others, strategy games are examples of games which are not
very sensitive to time delays, first-person shooters however, can be very
sensitive.
\end_layout
\begin_layout Standard
The generic nature of the GGS allows the creation of many different types
of games, the motivation behind this is to remove the neccessity of writing
of games, the motivation behind this is to remove the necessity of writing
new game servers when developing new games.
\end_layout
@ -481,9 +482,9 @@ The GGS is in addition to being generic, also
\emph on
reliable
\emph default
in the sense that the gaming service provided is consistant and available.
A consistant and available server is a server that handles hardware failiures
and software failiures gracefully.
in the sense that the gaming service provided is consistent and available.
A consistent and available server is a server that handles hardware failures
and software failures gracefully.
In the event of a component breaking within the GGS, the error is handled
by fault recovery processes, thereby creating a more reliable system.
\end_layout
@ -494,7 +495,7 @@ Background
\begin_layout Standard
The game industry is a quickly growing industry where the need for new technique
s is large.
s are large.
One specific section where the development has stalled is the game server
section.
\begin_inset Note Note
@ -520,7 +521,7 @@ Citation needed
.
Users will notice this in low uptime and many crashes.
This is a problem that has existed and been resolved in other industries.
In the telecom industry solutins to similar problems have been found.
In the telecom industry solutions to similar problems have been found.
\end_layout
\begin_layout Standard
@ -720,8 +721,8 @@ A database server can also be seen as an application server.
\end_layout
\begin_layout Standard
One of the purposes of this thesis is to investigate how we can make a game
server as generic as possible.
One purpose of this thesis is to investigate how we can make a game server
as generic as possible.
Some important helpers are discussed, such as abstraction of the network
layer, data store and game specific features.
@ -815,8 +816,8 @@ The purpose of creating a generic and fault tolerant game server is to provide
\end_layout
\begin_layout Standard
Fault tolerance is important for the GGS in order to create a reliable service.
The purpose of a reliable game server is to provide a consistant service
Fault tolerance is important for the GGS to create a reliable service.
The purpose of a reliable game server is to provide a consistent service
to people using the server.
Going back to the telecom example, the purpose of creating a reliable telecom
system is to allow calls, possibly emergency calls, at any time.
@ -848,9 +849,9 @@ The word
generic
\emph default
in the name of the GGS implies that the system is able to run a very broad
range of different code, for instance code written in different programming
languages, in addition to a broad range of different game types.
In order to support this, a virtual machine (VM) for each
range of different code, for instance code wrote in different programming
languages, besides a broad range of different game types.
To support this, a virtual machine (VM) for each
\emph on
game development language
\emph default
@ -933,9 +934,8 @@ The implementation of the GGS protocol, together with storage possibilities,
\begin_layout Standard
The UDP protocol is not supported for communication between client and server.
The TCP protocol was chosen in favour of UDP, due to the fact that the
implementation process using TCP was faster than if UDP would have been
used.
The TCP protocol was chosen in favor of UDP, because the implementation
process using TCP was faster than if UDP would have been used.
UDP is generally considered to be faster than TCP for the transfer of game
(and other) related data, this is discussed in more depth in
\begin_inset CommandInset ref
@ -955,7 +955,7 @@ reference "sec:Choice-of-network"
\begin_layout Standard
In real time games all players are playing together at the same time.
Latency is a huge problem in real time games, a typical round trip time
for such games is one of
for such games are one of
\begin_inset Formula $50$
\end_inset
@ -991,7 +991,7 @@ World of Warcraft
\begin_layout Standard
In turn based games each player has to wait for their turn.
Latency is not a problem since the gameplay does not require fast interactions
between the players, long round trip times will not be noticed.
among the players, long round trip times will not be noticed.
Examples of turn based games include board and card games, as well as multiplay
er games like
\emph on
@ -1012,9 +1012,8 @@ Due to the limited capability of threading in many GDL VM:s, the GGS prototype
The implementation of the GGS described in this thesis is only a small prototype
and tests will be performed on simple games like pong or chess, thus there
are no need to implement more advanced features in the system.
It is important to note that these limitations only apply for the prototype
of the project, and that further developments to the GGS could be to implement
these features.
Note that these limitations only apply for the prototype of the project,
and that further developments to the GGS could be to implement these features.
\end_layout
\begin_layout Section
@ -1026,8 +1025,7 @@ Development process
\end_layout
\begin_layout Standard
A prototype was developed early on in the project in order to carry out
experiments.
A prototype was developed early on in the project to carry out experiments.
Using this prototype, the system was divided into modules.
A demand specification was created, using this specification, the modules
were easily identifiable.
@ -1035,17 +1033,17 @@ A prototype was developed early on in the project in order to carry out
\begin_layout Standard
The first prototype of the GGS consisted of simple modules, however, due
to the separation of concerns between the modules, they were easily independant
ly modified and improved.
to the separation of concerns among the modules, they were easily independently
modified and improved.
\end_layout
\begin_layout Standard
Once the basic structure of the GGS had been established, the first prototype
was removed, remaining was the structure of the modules and the internal
flow of the application.
This could be seen as an interative workflow, with the first prototype
being the first iteration.
The second iteration later became the final result of the GGS
This could be seen as an iterative workflow, with the first prototype being
the first iteration.
The second iteration later became the result of the GGS
\end_layout
\begin_layout Subsection
@ -1059,7 +1057,7 @@ The layout of the GGS is both layered and modular.
GGS.
The modular structure of the GGS plays an important role in making the
system fault tolerant.
The approach to fault tolerance is by replication, and restarting faulting
The approach to fault tolerance is by replication, and restarting the faulting
modules with the last known good data.
\end_layout
@ -1101,7 +1099,7 @@ In this chapter, the theory behind the techniques used in the GGS are discussed.
Benchmarking techniques are discussed.
The options when choosing network protocols are given, along with a discussion
of each alternative.
Finally, a overview of scalability, fault tolerance and availability is
Finally, an overview of scalability, fault tolerance and availability are
presented.
\end_layout
@ -1117,7 +1115,7 @@ name "sec:Design-of-the"
\end_layout
\begin_layout Standard
The GGS is modelled after a real world system performing much of the same
The GGS is modeled after a real world system performing much of the same
duties as GGS.
This is common practice
\begin_inset CommandInset citation
@ -1126,12 +1124,11 @@ key "armstrong2011"
\end_inset
in the computer software world, in order to understand complex problems
more easily.
in the computer software world, to understand complex problems more easily.
While there may not always be a real world example of a system performing
th exact duties of the system being modelled in the computer, it is often
the exact duties of the system being modeled in the computer, it is often
easier to create and analyze requirements for real world systems and processes
than systems existing soley in a computer.
than systems existing solely in a computer.
The requirements and limitations imposed on the real-world system can,
using the proper tools, be transferred in to the software.
\end_layout
@ -1276,7 +1273,7 @@ Räkning
can be kept, ensuring that there are not too many players within the building.
In the GGS setting, too many players entering would mean too many connections
have been accepted to the GGS system, and that the structure of the system
have been accepted by the GGS system, and that the structure of the system
thus must be modified, adding additional servers.
\end_layout
@ -1302,16 +1299,16 @@ Moves by players are made using the tables present in the chess club.
\end_layout
\begin_layout Standard
This isolation of the games plays an imporant part in many properties of
This isolation of the games play an important part in many properties of
the GGS, the isolation means that games can for example be transferred
between different chess clubs, furthermore, if cheating takes place, corruption
among different chess clubs, furthermore, if cheating takes place, corruption
can only occur in the particular table where it was found, and can not
spread.
\end_layout
\begin_layout Standard
Moving chess players from one location to another is one of the alterations
made to the real world chess club system to make the system more appropriate
Moving chess players from one location to another is one alteration made
to the real world chess club system to make the system more appropriate
for a software setting.
Allowing games to be transferred is not a property usually desired in a
real world chess club, where transferring players would mean moving the
@ -1332,10 +1329,10 @@ reference "alg:game-lifecycle"
\end_inset
.
In order to make this life cycle as efficient and useful as possible, the
scalability, fault tolerant and generic traits are added to the GGS.
To make this life cycle as efficient and useful as possible, the scalability,
fault tolerant and generic traits are added to the GGS.
These are not shown in the algorithm, as these traits are tools in making
the algorithm behave as efficient as possible, and are not the main focus
the algorithm behaves as efficient as possible, and are not the main focus
when studying the life cycle of a game.
\end_layout
@ -1768,10 +1765,10 @@ There are many ways in which performance could be measured.
\begin_layout Standard
In a first person shooter game, the speed of delivery of messages is essential.
Failiure to deliver messages in time results in choppy gameplay for the
Failure to deliver messages in time results in choppy gameplay for the
players.
In strategy games, the reliability of delivery may be more important than
the speed, since the game is not percieved as choppy even if the messages
the speed, since the game is not perceieved as choppy even if the messages
are delayed.
\end_layout
@ -1779,7 +1776,7 @@ In a first person shooter game, the speed of delivery of messages is essential.
For someone operating a GGS, it is perhaps more interesting to measure the
system load, memory consumption, energy consumption and network saturation.
These topics are discussed in theory in this section.
The practical results for the prototype are discussed in chapter
The practical results for the prototype is discussed in chapter
\begin_inset CommandInset ref
LatexCommand vref
reference "cha:Implementation-of-a"
@ -1924,12 +1921,12 @@ name "sec:Choice-of-network"
\begin_layout Standard
There are three main ways in which computer communication over the Internet
usually takes place; TCP, UDP and HTTP.
The first two are transport layer protocols, which are commonly used to
The first two is transport layer protocols, which are commonly used to
transport application layer protocols, such as HTTP.
TCP and UDP can not be used on their own, without an application layer
protocol on top.
Application layer protocols such as HTTP on the other hand needs a transport
layer protocol in order to work.
layer protocol to work.
\end_layout
@ -1993,7 +1990,7 @@ TCP
\begin_layout Standard
For reliable transfers, TCP is often used on the Internet.
Built in to the protocol are the error checking and correction mechanisms
Built in to the protocol is the error checking and correction mechanisms
missing in UDP.
This ensures the consistency of data, but also makes the transfer slower
than if UDP had been used.
@ -2082,13 +2079,12 @@ Fault tolerance is an important factor in all servers, a server that is
safe and guaranteed to be available.
It should be noted that it is not possible to achieve complete fault tolerance,
a system will always have a certain risk of failure.
With this in mind the goal is to make the GGS prototype as fault tolerant
as possible.
Therefore the goal is to make the GGS prototype as fault tolerant as possible.
\end_layout
\begin_layout Standard
In order to make the GGS prototype fault tolerant the programming language
Erlang has been used.
To make the GGS prototype fault tolerant the programming language Erlang
has been used.
Erlang will not guarantee a fault tolerant system but it has features that
support and encourage the development of fault tolerant systems.
In the GGS it is important that the system overall is fault tolerant.
@ -2100,12 +2096,12 @@ In order to make the GGS prototype fault tolerant the programming language
\end_layout
\begin_layout Standard
The need for fault tolerance in game servers is not as obvious as it may
be for other typ of servers.
The need for fault tolerance in game servers are not as obvious as it may
be for other type of servers.
In general all servers strive to be fault tolerant as fault tolerance means
more uptime and a safer system.
This applies to game servers aswell, in brief good fault tolerance is a
way of satisfying customers.
This applies to game servers as well, in brief good fault tolerance is
a way of satisfying customers.
In general, game servers differ from many other fault tolerant systems
in that high-availability is more important than the safety of the system.
For example a simple calculation error will not be critical for a game
@ -2132,14 +2128,14 @@ name "sec:Availability"
\begin_layout Standard
One important factor of any server is the availability.
A server to which you are unable to connect to is a useless server.
Other then within telecomunication, their uptime is of about 99,9999999%,
the game developer community has not approched this problem very genuinely
A server to which you are unable to connect to is an useless server.
Other then within telecommunication, their uptime is of about 99,9999999%,
the game developer community has not approached this problem very genuinely
yet so there is much room for improvement.
\end_layout
\begin_layout Standard
There are several good papers on how to migrate whole virtual machines between
There are several good papers on how to migrate whole virtual machines among
nodes to replicate them
\begin_inset Note Note
status open
@ -2191,22 +2187,22 @@ Each instance of the GGS contains several tables.
or a poker game.
The way that the GGS scales is to distribute these tables on different
servers.
In many games it is not necessary for a player to move between tables during
In many games it is not necessary for a player to move among tables during
games.
This is for example not a common occurrence in chess, where it would be
represented as a player standing up from her current table and sitting
down at a new table, all within the same game session.
With this in mind, the main focus of the GGS is not to move players between
tables, but to keep a player in a table, and to start new tables instead.
When a server has reached a certain amount of players the performance will
Therefore, the main focus of the GGS is not to move players among tables,
but to keep a player in a table, and to start new tables instead.
When a server has reached a certain number of players the performance will
start to decrease.
To avoid this the GGS will start new tables on another server, using this
technique the players will be close to evenly distributed between the servers.
technique the players will be close to evenly distributed among the servers.
It is important to investigate and find out how many players that are optimal
for each server.
This approach makes it possible to utilize all resources with moderate
load, instead of having some resources with heavy load and some with almost
no load.
This approach makes it possible to use all resources with moderate load,
instead of having some resources with heavy load and some with almost no
load.
\end_layout
\begin_layout Standard
@ -2228,7 +2224,7 @@ Load balancing
\end_layout
\begin_layout Standard
The need for load balancing varies between different kind of systems.
The need for load balancing varies among different kind of systems.
Small systems that only use one or a couple of servers can cope with a
simple implementation of it, while in large systems it is critical to have
extensive and well working load balancing.
@ -2241,10 +2237,10 @@ The need for load balancing varies between different kind of systems.
\begin_layout Standard
Load balancing and scaling is difficult in different scenarios.
When running in a separate server park, there are a set number of servers
available, this means that an even distribution on all servers is preferable.
available, this means that an even distribution on all servers are preferable.
When running the GGS in a cloud, such as Amazon EC2, it is possible to
add an almost infinite number of servers as execution goes on.
In this cloud setting, it may be more important to evenly distribute load
In this cloud setting, it may be more important to distribute evenly load
on newly added servers.
\end_layout
@ -2253,7 +2249,7 @@ Two methods of balancing load (increasing structure):
\end_layout
\begin_layout Itemize
Fill up the capacity of one server completely, and then move over to the
Fill up the capacity for one server completely, and then move over to the
next server
\end_layout
@ -2284,7 +2280,7 @@ Load balancing is a key component to achieve scalability in network systems.
Load balancing can often be implemented using dedicated software, this means
that in many applications load balancing may not be implemented because
it already exist functional solutions.
This depends on what specific needs the system have and a minor goal of
This depends on what specific needs the system has and a minor goal of
the project is to analyze whether the GGS project can use existing load
balancing tools or if it is necessary to implement load balancing in the
project.
@ -2487,10 +2483,10 @@ A simple (insufficient) generator for identifiers
\end_layout
\begin_layout Standard
Inside the GGS, everything has a unique identifier.
Inside the GGS, everything has an unique identifier.
There are identifiers for players, tables and other resources.
When players communicate amongst each other, or communicate with tables,
they need to be able to uniquely identify all of these resources.
When players communicate amongst one another, or communicate with tables,
they need to be able to uniquely identify all these resources.
Within one machine, this is mostly not a problem.
A simple system with a counter can be imagined, where each request for
a new ID increments the previous identifier and returns the new identifier
@ -2712,7 +2708,7 @@ We only support languages running in a sandboxed environment.
In the storage each game has its own namespace, much like a table in a
relational database.
A game is not allowed to venture outside this namespace, and can because
of this not modify the persistent data of other games.
this not modify the persistent data of other games.
\end_layout
\begin_layout Subsection