Even more small changes!
This commit is contained in:
parent
01ab4157a9
commit
618243ff66
1 changed files with 36 additions and 42 deletions
78
report.lyx
78
report.lyx
|
@ -1017,8 +1017,8 @@ The choice of implementation language for the prototype of the GGS was made
|
||||||
highly available and dependable telecom switches.
|
highly available and dependable telecom switches.
|
||||||
One of the most reliable systems ever developed by Ericsson, the AXD301
|
One of the most reliable systems ever developed by Ericsson, the AXD301
|
||||||
was developed using Erlang.
|
was developed using Erlang.
|
||||||
The AXD301 is also possibly has the largest code base even written in a
|
The AXD301 has possibly the largest code base even written in a functional
|
||||||
functional language
|
language
|
||||||
\begin_inset CommandInset citation
|
\begin_inset CommandInset citation
|
||||||
LatexCommand citep
|
LatexCommand citep
|
||||||
key "Armstrong03"
|
key "Armstrong03"
|
||||||
|
@ -1613,7 +1613,7 @@ Coordinator
|
||||||
\emph default
|
\emph default
|
||||||
, and is seated by a table.
|
, and is seated by a table.
|
||||||
The coordinator keeps track of all the players in the building, and all
|
The coordinator keeps track of all the players in the building, and all
|
||||||
moved made by the players.
|
moves made by the players.
|
||||||
The information available to the coordinator means that cheating can be
|
The information available to the coordinator means that cheating can be
|
||||||
monitored and book keeping can be performed by this entity.
|
monitored and book keeping can be performed by this entity.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -1622,23 +1622,24 @@ Coordinator
|
||||||
Moves by players are made using the tables present in the chess club.
|
Moves by players are made using the tables present in the chess club.
|
||||||
Every game is isolated to a table, just as expected.
|
Every game is isolated to a table, just as expected.
|
||||||
This means that communication during a game only has to pass by the players
|
This means that communication during a game only has to pass by the players
|
||||||
of that particular game, and the coordinator, making sure that no cheating
|
of that particular game and the coordinator, making sure that no cheating
|
||||||
takes place.
|
takes place.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
This isolation of the games play an important 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
|
||||||
among different chess clubs, furthermore, if cheating takes place, corruption
|
among different chess clubs.
|
||||||
can only occur in the particular table where it was found, and cannot spread.
|
Furthermore, if cheating takes place, corruption can only occur in the
|
||||||
|
particular table where it was found and cannot spread.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Moving chess players from one location to another is one alteration made
|
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
|
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 an attribute usually desired in
|
||||||
real world chess club, where transferring players would mean moving the
|
a real world chess club, where transferring players would mean moving the
|
||||||
players from one building to another.
|
players from one building to another.
|
||||||
In the software setting, moving players means moving the game processes
|
In the software setting, moving players means moving the game processes
|
||||||
from one system to another, perhaps to balance the system load.
|
from one system to another, perhaps to balance the system load.
|
||||||
|
@ -1647,7 +1648,7 @@ Moving chess players from one location to another is one alteration made
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The simplified life cycle of a game in GGS can be viewed using algorithm
|
The simplified life cycle of a game in the GGS can be viewed using algorithm
|
||||||
|
|
||||||
\begin_inset CommandInset ref
|
\begin_inset CommandInset ref
|
||||||
LatexCommand vref
|
LatexCommand vref
|
||||||
|
@ -1671,8 +1672,8 @@ reference "alg:game-lifecycle"
|
||||||
|
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
are arbitrary for this example, there are no limits in the GGS on the number
|
are arbitrary for this example, there are for example no limits in the
|
||||||
of players connecting, for example.
|
GGS on the number of players connecting.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
|
@ -2119,7 +2120,7 @@ Performance measurements
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
\begin_inset Note Note
|
\begin_inset Note Note
|
||||||
status open
|
status collapsed
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
Tue apr 26, 9:15.
|
Tue apr 26, 9:15.
|
||||||
|
@ -2141,14 +2142,8 @@ Which games are affected by what, and what does this mean for the number
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
How many players can we have on a server? Performance differences between
|
In the current state game servers are coded for each game that needs it,
|
||||||
games? e.g can one game have thousands players on a server and another only
|
often this seems like a bad solution.
|
||||||
have hundreds? Questions
|
|
||||||
\end_layout
|
|
||||||
|
|
||||||
\begin_layout Standard
|
|
||||||
In the current state game servers is coded for each game that needs it,
|
|
||||||
in many cases this seems like a bad solution.
|
|
||||||
Developers that want to make a network game need to understand network
|
Developers that want to make a network game need to understand network
|
||||||
programming.
|
programming.
|
||||||
A way to change this is a generic game server which give the game developers
|
A way to change this is a generic game server which give the game developers
|
||||||
|
@ -2159,7 +2154,7 @@ In the current state game servers is coded for each game that needs it,
|
||||||
to be discussed here.
|
to be discussed here.
|
||||||
|
|
||||||
\begin_inset Note Note
|
\begin_inset Note Note
|
||||||
status open
|
status collapsed
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
Create a game with several thousand players, see how our server scales,
|
Create a game with several thousand players, see how our server scales,
|
||||||
|
@ -2249,7 +2244,7 @@ name "sec:Choice-of-network"
|
||||||
There are two main ways in which computer communication over the Internet
|
There are two main ways in which computer communication over the Internet
|
||||||
usually takes place; TCP, UDP are known network layer protocols and HTTP
|
usually takes place; TCP, UDP are known network layer protocols and HTTP
|
||||||
is the most prominent application layer protocol.
|
is the most prominent application layer protocol.
|
||||||
The transport layer protocols, are commonly used to transport application
|
The transport layer protocols are commonly used to transport application
|
||||||
layer protocols, such as HTTP.
|
layer protocols, such as HTTP.
|
||||||
TCP and UDP cannot be used on their own, without an application layer protocol
|
TCP and UDP cannot be used on their own, without an application layer protocol
|
||||||
on top.
|
on top.
|
||||||
|
@ -2292,7 +2287,7 @@ Many online games use UDP as the carrier for their application layer protocol.
|
||||||
ruling out UDP as the transport later protocol.
|
ruling out UDP as the transport later protocol.
|
||||||
|
|
||||||
\begin_inset Note Note
|
\begin_inset Note Note
|
||||||
status open
|
status collapsed
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
Perhaps we should only say that we chose TCP just for our GGS prototype
|
Perhaps we should only say that we chose TCP just for our GGS prototype
|
||||||
|
@ -2319,7 +2314,7 @@ For reliable transfers, TCP is often used on the Internet.
|
||||||
thus TCP is a better alternative than UDP.
|
thus TCP is a better alternative than UDP.
|
||||||
|
|
||||||
\begin_inset Note Note
|
\begin_inset Note Note
|
||||||
status open
|
status collapsed
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
\begin_layout Plain Layout
|
||||||
Same here it is simply not true for a generic server to chose one or the
|
Same here it is simply not true for a generic server to chose one or the
|
||||||
|
@ -2340,20 +2335,19 @@ HTTP
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Since HTTP is so widely used on the Internet today in web servers, it is
|
Since HTTP is so widely used on the Internet today in web servers, it is
|
||||||
available on most Internet connected devices.
|
available on most Internet connected devices.
|
||||||
This means that if HTTP is used in the GGS, firewalls will not pose problems,
|
This means that if HTTP is used in the GGS, firewalls will not be a problem,
|
||||||
which is a great benefit.
|
which is a great benefit.
|
||||||
However, due to the intended usage of HTTP in web servers, the protocol
|
However, due to the intended usage of HTTP in web servers, the protocol
|
||||||
was designed to be stateless and client-initiated.
|
was designed to be stateless and client-initiated.
|
||||||
In order to maintain a state during a game session using HTTP, some sort
|
In order to maintain a state during a game session using HTTP, some sort
|
||||||
of token would have to be passed between client and server at all times,
|
of token would have to be passed between client and server at all times,
|
||||||
much like how a web server works.
|
much like how a web server works.
|
||||||
These facts combined makes HTTP unsuitable for our purposes, since the
|
These facts combined make HTTP inappropriate for use in the GGS, since
|
||||||
GGS requires a state to be maintained throughout a session, and also needs
|
the GGS requires a state to be maintained throughout a session and also
|
||||||
to push data from the server to clients without the clients requesting
|
needs to push data from the server to clients without the clients requesting
|
||||||
data.
|
data.
|
||||||
It should also be mentioned that HTTP uses the TCP protocol for transport,
|
It should also be mentioned that HTTP uses the TCP protocol for transport,
|
||||||
and what is said about TCP also applies to HTTP.
|
and what is said about TCP applies to HTTP.
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection
|
\begin_layout Subsection
|
||||||
|
@ -2361,15 +2355,15 @@ The GGS Protocol
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
HTTP was designed to be a stateless protocoll which by adding some overhead
|
HTTP was designed to be a stateless protocol, which by adding some overhead
|
||||||
is able to remove the need of a permanent connection and a state for each
|
is able to remove the need of a permanent connection and a state for each
|
||||||
client.
|
client.
|
||||||
The GGS however already has a permanent connection to each client because
|
The GGS however already has a permanent connection to each client because
|
||||||
it needs to push information to the clients.
|
it needs to push information to the clients.
|
||||||
Therefore is able to use the state to minimize the overhead in the communicatio
|
Therefore it is able to use the state to minimize the overhead in the communica
|
||||||
n between server and client.
|
tion between server and client.
|
||||||
Because of that it has been decided to invent a new protocol which human
|
Therefore it was decided to invent a new protocol which was human readable
|
||||||
readable like HTTP but customized for this special use.
|
like HTTP but customized for this special use.
|
||||||
The GGS protocol is described in more detail in section
|
The GGS protocol is described in more detail in section
|
||||||
\begin_inset CommandInset ref
|
\begin_inset CommandInset ref
|
||||||
LatexCommand ref
|
LatexCommand ref
|
||||||
|
@ -2402,13 +2396,13 @@ The GGS is a game server.
|
||||||
The GGS can be run as a listen server on the players computer and host
|
The GGS can be run as a listen server on the players computer and host
|
||||||
games locally.
|
games locally.
|
||||||
It could also be a dedicated server running on independent hardware.
|
It could also be a dedicated server running on independent hardware.
|
||||||
It is meant to run any game in any environment in any way desired, therefor
|
It is meant to run any game in any environment in any way desired, therefore
|
||||||
being as generic as possible.
|
being as generic as possible.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Another aspect was the desire to let a client to load up the source code
|
Another aspect was the desire to let a client upload the source code of
|
||||||
to the game it would like to play on the GGS.
|
the game it would like to play on the GGS.
|
||||||
This way every client could connect to the server and install the game
|
This way every client could connect to the server and install the game
|
||||||
through a API without the need of installation through the server provider
|
through a API without the need of installation through the server provider
|
||||||
or maintainer.
|
or maintainer.
|
||||||
|
@ -2428,14 +2422,13 @@ name "sec:Fault-Tolerance"
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Fault tolerance is an important factor in all servers, a server that is
|
Fault tolerance is an important factor in all servers, a server that is
|
||||||
fault tolerant should be able to follow a given specification when parts
|
fault tolerant should be able to follow a given specification when parts
|
||||||
of the system failures.
|
of the system fails.
|
||||||
This means that fault tolerance is different in each system depending on
|
This means that fault tolerance is different in each system depending on
|
||||||
what specification they have.
|
what specification they have.
|
||||||
A system could be fault tolerant in different aspects, one is where the
|
A system could be fault tolerant in different aspects, one is where the
|
||||||
system is guaranteed to be available but not safe and it could also be
|
system is guaranteed to be available but not safe and it could also be
|
||||||
reversed, that the system is safe but not guaranteed to be available.
|
reversed, that the system is safe but not guaranteed to be available.
|
||||||
Depending on the system one property may be more important(some example
|
Depending on the system one property may be more important.
|
||||||
here).
|
|
||||||
A system could also have non existent fault tolerance or it could be both
|
A system could also have non existent fault tolerance or it could be both
|
||||||
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,
|
||||||
|
@ -2449,7 +2442,8 @@ In order to make the GGS prototype fault tolerant the programming language
|
||||||
Erlang has been used.
|
Erlang 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 and
|
||||||
|
not small parts only.
|
||||||
Crashes of the whole system should be avoided as this would make the system
|
Crashes of the whole system should be avoided as this would make the system
|
||||||
unusable for a time.
|
unusable for a time.
|
||||||
By using supervisor structures it is possible to crash and restart small
|
By using supervisor structures it is possible to crash and restart small
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue