Corrected a lot of errors in chapter 1&2
This commit is contained in:
parent
a72e14ffdb
commit
79848ce54c
1 changed files with 78 additions and 82 deletions
160
report.lyx
160
report.lyx
|
@ -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.
|
spent on improving the quality of the gaming service.
|
||||||
As more and more computer games are gaining multi-player capabilities,
|
As more and more computer games are gaining multi-player capabilities,
|
||||||
the demands for multiplayer networking software rises.
|
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.
|
software.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -465,14 +465,15 @@ generic
|
||||||
framework for developing network games.
|
framework for developing network games.
|
||||||
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 inheritly more time sensitive
|
There are many different types of games, some are inherently more time
|
||||||
than others, strategy games are examples of games which are not very sensitive
|
sensitive than others, strategy games are examples of games which are not
|
||||||
to time delays, first-person shooters however, can be very sensitive.
|
very sensitive to time delays, first-person shooters however, can be very
|
||||||
|
sensitive.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The generic nature of the GGS allows the creation of many different types
|
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.
|
new game servers when developing new games.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -481,9 +482,9 @@ The GGS is in addition to being generic, also
|
||||||
\emph on
|
\emph on
|
||||||
reliable
|
reliable
|
||||||
\emph default
|
\emph default
|
||||||
in the sense that the gaming service provided is consistant and available.
|
in the sense that the gaming service provided is consistent and available.
|
||||||
A consistant and available server is a server that handles hardware failiures
|
A consistent and available server is a server that handles hardware failures
|
||||||
and software failiures gracefully.
|
and software failures gracefully.
|
||||||
In the event of a component breaking within the GGS, the error is handled
|
In the event of a component breaking within the GGS, the error is handled
|
||||||
by fault recovery processes, thereby creating a more reliable system.
|
by fault recovery processes, thereby creating a more reliable system.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -494,7 +495,7 @@ Background
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The game industry is a quickly growing industry where the need for new technique
|
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
|
One specific section where the development has stalled is the game server
|
||||||
section.
|
section.
|
||||||
\begin_inset Note Note
|
\begin_inset Note Note
|
||||||
|
@ -520,7 +521,7 @@ Citation needed
|
||||||
.
|
.
|
||||||
Users will notice this in low uptime and many crashes.
|
Users will notice this in low uptime and many crashes.
|
||||||
This is a problem that has existed and been resolved in other industries.
|
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
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
|
@ -720,8 +721,8 @@ A database server can also be seen as an application server.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
One of the purposes of this thesis is to investigate how we can make a game
|
One purpose of this thesis is to investigate how we can make a game server
|
||||||
server as generic as possible.
|
as generic as possible.
|
||||||
Some important helpers are discussed, such as abstraction of the network
|
Some important helpers are discussed, such as abstraction of the network
|
||||||
layer, data store and game specific features.
|
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
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Fault tolerance is important for the GGS in order to create a reliable service.
|
Fault tolerance is important for the GGS to create a reliable service.
|
||||||
The purpose of a reliable game server is to provide a consistant service
|
The purpose of a reliable game server is to provide a consistent service
|
||||||
to people using the server.
|
to people using the server.
|
||||||
Going back to the telecom example, the purpose of creating a reliable telecom
|
Going back to the telecom example, the purpose of creating a reliable telecom
|
||||||
system is to allow calls, possibly emergency calls, at any time.
|
system is to allow calls, possibly emergency calls, at any time.
|
||||||
|
@ -848,9 +849,9 @@ The word
|
||||||
generic
|
generic
|
||||||
\emph default
|
\emph default
|
||||||
in the name of the GGS implies that the system is able to run a very broad
|
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
|
range of different code, for instance code wrote in different programming
|
||||||
languages, in addition to a broad range of different game types.
|
languages, besides a broad range of different game types.
|
||||||
In order to support this, a virtual machine (VM) for each
|
To support this, a virtual machine (VM) for each
|
||||||
\emph on
|
\emph on
|
||||||
game development language
|
game development language
|
||||||
\emph default
|
\emph default
|
||||||
|
@ -933,9 +934,8 @@ The implementation of the GGS protocol, together with storage possibilities,
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The UDP protocol is not supported for communication between client and server.
|
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
|
The TCP protocol was chosen in favor of UDP, because the implementation
|
||||||
implementation process using TCP was faster than if UDP would have been
|
process using TCP was faster than if UDP would have been used.
|
||||||
used.
|
|
||||||
UDP is generally considered to be faster than TCP for the transfer of game
|
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
|
(and other) related data, this is discussed in more depth in
|
||||||
\begin_inset CommandInset ref
|
\begin_inset CommandInset ref
|
||||||
|
@ -955,7 +955,7 @@ reference "sec:Choice-of-network"
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
In real time games all players are playing together at the same time.
|
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
|
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$
|
\begin_inset Formula $50$
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
|
@ -991,7 +991,7 @@ World of Warcraft
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
In turn based games each player has to wait for their turn.
|
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
|
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
|
Examples of turn based games include board and card games, as well as multiplay
|
||||||
er games like
|
er games like
|
||||||
\emph on
|
\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
|
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
|
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.
|
are no need to implement more advanced features in the system.
|
||||||
It is important to note that these limitations only apply for the prototype
|
Note that these limitations only apply for the prototype of the project,
|
||||||
of the project, and that further developments to the GGS could be to implement
|
and that further developments to the GGS could be to implement these features.
|
||||||
these features.
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
|
@ -1026,8 +1025,7 @@ Development process
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
A prototype was developed early on in the project in order to carry out
|
A prototype was developed early on in the project to carry out experiments.
|
||||||
experiments.
|
|
||||||
Using this prototype, the system was divided into modules.
|
Using this prototype, the system was divided into modules.
|
||||||
A demand specification was created, using this specification, the modules
|
A demand specification was created, using this specification, the modules
|
||||||
were easily identifiable.
|
were easily identifiable.
|
||||||
|
@ -1035,17 +1033,17 @@ A prototype was developed early on in the project in order to carry out
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The first prototype of the GGS consisted of simple modules, however, due
|
The first prototype of the GGS consisted of simple modules, however, due
|
||||||
to the separation of concerns between the modules, they were easily independant
|
to the separation of concerns among the modules, they were easily independently
|
||||||
ly modified and improved.
|
modified and improved.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Once the basic structure of the GGS had been established, the first prototype
|
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
|
was removed, remaining was the structure of the modules and the internal
|
||||||
flow of the application.
|
flow of the application.
|
||||||
This could be seen as an interative workflow, with the first prototype
|
This could be seen as an iterative workflow, with the first prototype being
|
||||||
being the first iteration.
|
the first iteration.
|
||||||
The second iteration later became the final result of the GGS
|
The second iteration later became the result of the GGS
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection
|
\begin_layout Subsection
|
||||||
|
@ -1059,7 +1057,7 @@ The layout of the GGS is both layered and modular.
|
||||||
GGS.
|
GGS.
|
||||||
The modular structure of the GGS plays an important role in making the
|
The modular structure of the GGS plays an important role in making the
|
||||||
system fault tolerant.
|
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.
|
modules with the last known good data.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -1101,7 +1099,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, a overview of scalability, fault tolerance and availability is
|
Finally, an overview of scalability, fault tolerance and availability are
|
||||||
presented.
|
presented.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -1117,7 +1115,7 @@ name "sec:Design-of-the"
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\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.
|
duties as GGS.
|
||||||
This is common practice
|
This is common practice
|
||||||
\begin_inset CommandInset citation
|
\begin_inset CommandInset citation
|
||||||
|
@ -1126,12 +1124,11 @@ key "armstrong2011"
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
in the computer software world, in order to understand complex problems
|
in the computer software world, to understand complex problems more easily.
|
||||||
more easily.
|
|
||||||
While there may not always be a real world example of a system performing
|
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
|
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,
|
The requirements and limitations imposed on the real-world system can,
|
||||||
using the proper tools, be transferred in to the software.
|
using the proper tools, be transferred in to the software.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -1276,7 +1273,7 @@ Räkning
|
||||||
|
|
||||||
can be kept, ensuring that there are not too many players within the building.
|
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
|
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.
|
thus must be modified, adding additional servers.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -1302,16 +1299,16 @@ Moves by players are made using the tables present in the chess club.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\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
|
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
|
can only occur in the particular table where it was found, and can not
|
||||||
spread.
|
spread.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Moving chess players from one location to another is one of the alterations
|
Moving chess players from one location to another is one alteration made
|
||||||
made to the real world chess club system to make the system more appropriate
|
to the real world chess club system to make the system more appropriate
|
||||||
for a software setting.
|
for a software setting.
|
||||||
Allowing games to be transferred is not a property usually desired in a
|
Allowing games to be transferred is not a property usually desired in a
|
||||||
real world chess club, where transferring players would mean moving the
|
real world chess club, where transferring players would mean moving the
|
||||||
|
@ -1332,10 +1329,10 @@ reference "alg:game-lifecycle"
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
.
|
.
|
||||||
In order to make this life cycle as efficient and useful as possible, the
|
To make this life cycle as efficient and useful as possible, the scalability,
|
||||||
scalability, fault tolerant and generic traits are added to the GGS.
|
fault tolerant and generic traits are added to the GGS.
|
||||||
These are not shown in the algorithm, as these traits are tools in making
|
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.
|
when studying the life cycle of a game.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -1768,10 +1765,10 @@ There are many ways in which performance could be measured.
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
In a first person shooter game, the speed of delivery of messages is essential.
|
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.
|
players.
|
||||||
In strategy games, the reliability of delivery may be more important than
|
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.
|
are delayed.
|
||||||
\end_layout
|
\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
|
For someone operating a GGS, it is perhaps more interesting to measure the
|
||||||
system load, memory consumption, energy consumption and network saturation.
|
system load, memory consumption, energy consumption and network saturation.
|
||||||
These topics are discussed in theory in this section.
|
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
|
\begin_inset CommandInset ref
|
||||||
LatexCommand vref
|
LatexCommand vref
|
||||||
reference "cha:Implementation-of-a"
|
reference "cha:Implementation-of-a"
|
||||||
|
@ -1924,12 +1921,12 @@ name "sec:Choice-of-network"
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
There are three main ways in which computer communication over the Internet
|
There are three main ways in which computer communication over the Internet
|
||||||
usually takes place; TCP, UDP and HTTP.
|
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.
|
transport application layer protocols, such as HTTP.
|
||||||
TCP and UDP can not be used on their own, without an application layer
|
TCP and UDP can not be used on their own, without an application layer
|
||||||
protocol on top.
|
protocol on top.
|
||||||
Application layer protocols such as HTTP on the other hand needs a transport
|
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
|
\end_layout
|
||||||
|
|
||||||
|
@ -1993,7 +1990,7 @@ TCP
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
For reliable transfers, TCP is often used on the Internet.
|
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.
|
missing in UDP.
|
||||||
This ensures the consistency of data, but also makes the transfer slower
|
This ensures the consistency of data, but also makes the transfer slower
|
||||||
than if UDP had been used.
|
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.
|
safe and guaranteed to be available.
|
||||||
It should be noted that it is not possible to achieve complete fault tolerance,
|
It should be noted that it is not possible to achieve complete fault tolerance,
|
||||||
a system will always have a certain risk of failure.
|
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
|
Therefore the goal is to make the GGS prototype as fault tolerant as possible.
|
||||||
as possible.
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
In order to make the GGS prototype fault tolerant the programming language
|
To make the GGS prototype fault tolerant the programming language Erlang
|
||||||
Erlang has been used.
|
has been used.
|
||||||
Erlang will not guarantee a fault tolerant system but it has features that
|
Erlang will not guarantee a fault tolerant system but it has features that
|
||||||
support and encourage the development of fault tolerant systems.
|
support and encourage the development of fault tolerant systems.
|
||||||
In the GGS it is important that the system overall is fault tolerant.
|
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
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The need for fault tolerance in game servers is not as obvious as it may
|
The need for fault tolerance in game servers are not as obvious as it may
|
||||||
be for other typ of servers.
|
be for other type of servers.
|
||||||
In general all servers strive to be fault tolerant as fault tolerance means
|
In general all servers strive to be fault tolerant as fault tolerance means
|
||||||
more uptime and a safer system.
|
more uptime and a safer system.
|
||||||
This applies to game servers aswell, in brief good fault tolerance is a
|
This applies to game servers as well, in brief good fault tolerance is
|
||||||
way of satisfying customers.
|
a way of satisfying customers.
|
||||||
In general, game servers differ from many other fault tolerant systems
|
In general, game servers differ from many other fault tolerant systems
|
||||||
in that high-availability is more important than the safety of the system.
|
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
|
For example a simple calculation error will not be critical for a game
|
||||||
|
@ -2132,14 +2128,14 @@ name "sec:Availability"
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
One important factor of any server is the availability.
|
One important factor of any server is the availability.
|
||||||
A server to which you are unable to connect to is a useless server.
|
A server to which you are unable to connect to is an useless server.
|
||||||
Other then within telecomunication, their uptime is of about 99,9999999%,
|
Other then within telecommunication, their uptime is of about 99,9999999%,
|
||||||
the game developer community has not approched this problem very genuinely
|
the game developer community has not approached this problem very genuinely
|
||||||
yet so there is much room for improvement.
|
yet so there is much room for improvement.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\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
|
nodes to replicate them
|
||||||
\begin_inset Note Note
|
\begin_inset Note Note
|
||||||
status open
|
status open
|
||||||
|
@ -2191,22 +2187,22 @@ Each instance of the GGS contains several tables.
|
||||||
or a poker game.
|
or a poker game.
|
||||||
The way that the GGS scales is to distribute these tables on different
|
The way that the GGS scales is to distribute these tables on different
|
||||||
servers.
|
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.
|
games.
|
||||||
This is for example not a common occurrence in chess, where it would be
|
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
|
represented as a player standing up from her current table and sitting
|
||||||
down at a new table, all within the same game session.
|
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
|
Therefore, the main focus of the GGS is not to move players among tables,
|
||||||
tables, but to keep a player in a table, and to start new tables instead.
|
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
|
When a server has reached a certain number of players the performance will
|
||||||
start to decrease.
|
start to decrease.
|
||||||
To avoid this the GGS will start new tables on another server, using this
|
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
|
It is important to investigate and find out how many players that are optimal
|
||||||
for each server.
|
for each server.
|
||||||
This approach makes it possible to utilize all resources with moderate
|
This approach makes it possible to use all resources with moderate load,
|
||||||
load, instead of having some resources with heavy load and some with almost
|
instead of having some resources with heavy load and some with almost no
|
||||||
no load.
|
load.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
|
@ -2228,7 +2224,7 @@ Load balancing
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\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
|
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
|
simple implementation of it, while in large systems it is critical to have
|
||||||
extensive and well working load balancing.
|
extensive and well working load balancing.
|
||||||
|
@ -2241,10 +2237,10 @@ The need for load balancing varies between different kind of systems.
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Load balancing and scaling is difficult in different scenarios.
|
Load balancing and scaling is difficult in different scenarios.
|
||||||
When running in a separate server park, there are a set number of servers
|
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
|
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.
|
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.
|
on newly added servers.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -2253,7 +2249,7 @@ Two methods of balancing load (increasing structure):
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\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
|
next server
|
||||||
\end_layout
|
\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
|
Load balancing can often be implemented using dedicated software, this means
|
||||||
that in many applications load balancing may not be implemented because
|
that in many applications load balancing may not be implemented because
|
||||||
it already exist functional solutions.
|
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
|
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
|
balancing tools or if it is necessary to implement load balancing in the
|
||||||
project.
|
project.
|
||||||
|
@ -2487,10 +2483,10 @@ A simple (insufficient) generator for identifiers
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\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.
|
There are identifiers for players, tables and other resources.
|
||||||
When players communicate amongst each other, or communicate with tables,
|
When players communicate amongst one another, or communicate with tables,
|
||||||
they need to be able to uniquely identify all of these resources.
|
they need to be able to uniquely identify all these resources.
|
||||||
Within one machine, this is mostly not a problem.
|
Within one machine, this is mostly not a problem.
|
||||||
A simple system with a counter can be imagined, where each request for
|
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
|
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
|
In the storage each game has its own namespace, much like a table in a
|
||||||
relational database.
|
relational database.
|
||||||
A game is not allowed to venture outside this namespace, and can because
|
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
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection
|
\begin_layout Subsection
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue