Merge branch 'master' of github.com:jeena/GGS-report
This commit is contained in:
commit
8863f907e2
2 changed files with 8130 additions and 108 deletions
163
report.lyx
163
report.lyx
|
@ -739,7 +739,7 @@ key "Armstrong03"
|
||||||
|
|
||||||
downtime in a year.
|
downtime in a year.
|
||||||
The level of instability and bad fault tolerance seen in the game server
|
The level of instability and bad fault tolerance seen in the game server
|
||||||
industry would not have been accepted in the telecoms industry.
|
industry would not have been accepted in the telecom industry.
|
||||||
This level of instability should not be accepted in the game server industry
|
This level of instability should not be accepted in the game server industry
|
||||||
either.
|
either.
|
||||||
An unavailable phone system could potentially have life threatening consequence
|
An unavailable phone system could potentially have life threatening consequence
|
||||||
|
@ -751,50 +751,43 @@ s, leaving the public unable to contact emergency services.
|
||||||
|
|
||||||
\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 are monetary, it is important
|
The main reason to develop reliable servers is a higher revenue, do archive
|
||||||
for game companies to expand its customer base.
|
this it is important for game companies to expand their customer base.
|
||||||
Reliable game servers are one improvement that will create a good image
|
Reliable game servers will create a good image of the company.
|
||||||
of a 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 system
|
of telecom systems evenso the overall structure of the systems is similar
|
||||||
\begin_inset Note Note
|
in many ways.
|
||||||
status open
|
It should be possible to learn and reuse solutions from the telecom systems
|
||||||
|
to improve game servers.
|
||||||
\begin_layout Plain Layout
|
|
||||||
Citation needed...
|
|
||||||
\end_layout
|
|
||||||
|
|
||||||
\end_inset
|
|
||||||
|
|
||||||
.
|
|
||||||
The structure of the system is similar in many ways and it should be possible
|
|
||||||
to reuse solutions from the telecom system to improve game servers.
|
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\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 a bad solution.
|
||||||
Developers of network game need to understand network programming.
|
Developers of multiplayer games need to understand network programming,
|
||||||
A way to change this is a generic game server which gives the game developers
|
which above all be a problem for small companies and indipendent game developer
|
||||||
a server which they implement their game towards.
|
s who often lack expertise in that field.
|
||||||
|
A way to help them in the competition would be to offer a generic game
|
||||||
|
server which gives them a environment in which they can implement their
|
||||||
|
game in.
|
||||||
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.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Some factors key to the development of GGS have been isolated.
|
Some key factors to the development of the GGS have been isolated.
|
||||||
Many of these come from the telecom sector.
|
Many of these are found in the telecom sector too.
|
||||||
The factors are
|
The factors are
|
||||||
\emph on
|
\emph on
|
||||||
scalability, fault tolerance
|
scalability, fault tolerance
|
||||||
\emph default
|
\emph default
|
||||||
and being
|
and a
|
||||||
\emph on
|
\emph on
|
||||||
generic
|
generic
|
||||||
\emph default
|
\emph default
|
||||||
.
|
nature.
|
||||||
These terms are defined below.
|
These terms are defined below.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -847,8 +840,8 @@ dependability
|
||||||
as intended at a given point in time.
|
as intended at a given point in time.
|
||||||
Fault tolerance is the property of a system always to follow a specification,
|
Fault tolerance is the property of a system always to follow a specification,
|
||||||
even in the presence of errors.
|
even in the presence of errors.
|
||||||
The specification could take the form of error handling procedures which
|
The specification could define error handling procedures which activate
|
||||||
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.
|
||||||
|
@ -994,7 +987,7 @@ A database server can also be seen as an application server.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
One purpose of this thesis is to investigate how we can make a game server
|
One purpose of this thesis is to investigate how one could make a game 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.
|
||||||
|
@ -1002,19 +995,19 @@ One purpose of this thesis is to investigate how we can make a game server
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
As an aid in discussing the theoretical parts of the GGS a prototype has
|
A prototype has been developed in order to aid the discussion of the theoretical
|
||||||
been developed.
|
parts of the GGS.
|
||||||
The prototype does not feature all the characteristics described in this
|
The prototype does not feature all the characteristics described in this
|
||||||
thesis.
|
thesis.
|
||||||
A selection has been made among the features, and the most important ones
|
A selection has been made among the features and the most important ones
|
||||||
have been implemented either full or in part in the prototype.
|
have been implemented either full or in part in the prototype.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The choice of implementation language for the prototype of the GGS was made
|
The choice of the implementation language for the prototype of the GGS was
|
||||||
with inspiration from the telecom industry.
|
made with inspiration from the telecom industry.
|
||||||
The Erlang language was developed by the telecom company Ericsson to develop
|
The Erlang language was developed by the swedish telecom company Ericsson
|
||||||
highly available and dependable telecom switches.
|
to develop 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 has possibly the largest code base even written in a functional
|
The AXD301 has possibly the largest code base even written in a functional
|
||||||
|
@ -1027,7 +1020,8 @@ key "Armstrong03"
|
||||||
|
|
||||||
.
|
.
|
||||||
The same language is used to develop the prototype of the GGS.
|
The same language is used to develop the prototype of the GGS.
|
||||||
Usage of Erlang in the GGS is discussed in further detail in section
|
The usage of Erlang in the GGS is discussed in further detail in section
|
||||||
|
|
||||||
\begin_inset CommandInset ref
|
\begin_inset CommandInset ref
|
||||||
LatexCommand ref
|
LatexCommand ref
|
||||||
reference "sec:The-usage-of-erlang"
|
reference "sec:The-usage-of-erlang"
|
||||||
|
@ -1035,50 +1029,12 @@ reference "sec:The-usage-of-erlang"
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
.
|
.
|
||||||
Chapter
|
|
||||||
\begin_inset CommandInset ref
|
|
||||||
LatexCommand vref
|
|
||||||
reference "cha:Implementation-of-a"
|
|
||||||
|
|
||||||
\end_inset
|
|
||||||
|
|
||||||
provides a description of the prototype developed for this thesis.
|
|
||||||
|
|
||||||
\begin_inset Note Note
|
|
||||||
status collapsed
|
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
|
||||||
We could go on and on about erlang..
|
|
||||||
\end_layout
|
|
||||||
|
|
||||||
\end_inset
|
|
||||||
|
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
Purpose
|
Purpose
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
|
||||||
\begin_inset Note Note
|
|
||||||
status collapsed
|
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
|
||||||
The purpose of the GGS project.
|
|
||||||
What is the purpose of creating a fault tolerant server, why is it generic,
|
|
||||||
and what good does it do to have a scalable system? In the background,
|
|
||||||
we should give the motivations behind creating this software, but here
|
|
||||||
we should outline why the software is needed.
|
|
||||||
This section should be shortened, and the bulk of the text should be moved
|
|
||||||
to theory or background.
|
|
||||||
\end_layout
|
|
||||||
|
|
||||||
\end_inset
|
|
||||||
|
|
||||||
|
|
||||||
\end_layout
|
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The purpose of creating a generic and fault tolerant game server is to provide
|
The purpose of creating a generic and fault tolerant game server is to provide
|
||||||
a good framework for the development of many different types of games.
|
a good framework for the development of many different types of games.
|
||||||
|
@ -1095,20 +1051,20 @@ Fault tolerance is important for the GGS to create a reliable service.
|
||||||
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.
|
||||||
Should the telecom network be unavailable at any time, emergency services
|
Should the telecom network be unavailable at any time, emergency services
|
||||||
may become unavailable, furthermore the consumer image of the telecom system
|
may become unavailable, furthermore the consumer's image of the telecom
|
||||||
degrades.
|
system degrades.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
Returning to the game industry, emergency services will not be contacted
|
Returning to the game industry, emergency services will not be contacted
|
||||||
using a game server, however an unavailable server will degrade the consumer
|
using a game server, however an unavailable server will degrade the consumer's
|
||||||
image of the system.
|
image of the system.
|
||||||
Consider an online casino company.
|
Consider an online casino company.
|
||||||
The online casino company's servers must be available at all times to allow
|
The online casino company's servers must be available at all times to allow
|
||||||
customers to play.
|
customers to play.
|
||||||
If the servers are unavailable, customers cannot play, and the company
|
If the servers are unavailable customers cannot play and the company loses
|
||||||
loses money.
|
money.
|
||||||
In this scenario, an unavailable server can be compared to a closed real-world
|
In this scenario an unavailable server can be compared to a closed real-world
|
||||||
casino.
|
casino.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
@ -1122,8 +1078,8 @@ 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 wrote in different programming
|
range of different code, for instance code written in different programming
|
||||||
languages, besides a broad range of different game types.
|
languages or code written for a broad range of different game types.
|
||||||
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
|
||||||
|
@ -1159,48 +1115,41 @@ textbf{VM}}{Virtual Machine}
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
No hard limit has been set on which languages can be used for game development
|
No hard limit has been set on which languages can be used for game development
|
||||||
on the GGS, but there are several factors which decide the feasibility
|
on the GGS, but there are several factors which should be taken into considerat
|
||||||
of a language:
|
ion when deciding the feasibility of a language:
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
How well it integrates with Erlang, which is used in the core the GGS system
|
How well it integrates with Erlang, which is used in the core the GGS system?
|
||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
How easy it is to send messages to the virtual machine of the GDL from the
|
How easy it is to send messages from the GGS to the GDL VM?
|
||||||
GGS
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Itemize
|
\begin_layout Itemize
|
||||||
How easy it is to send messages from the GDL VM to the GGS
|
How easy it is to send messages from the GDL VM to the GGS?
|
||||||
\begin_inset Note Note
|
|
||||||
status open
|
|
||||||
|
|
||||||
\begin_layout Plain Layout
|
|
||||||
Add more like threads, events, etc.
|
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\end_inset
|
\begin_layout Itemize
|
||||||
|
Is it possible to sandbox every game with a context or something comperable?
|
||||||
|
|
||||||
\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 for use in interacting with the
|
Thus an internal API has to be designed to make the GDL VM to be able to
|
||||||
GGS.
|
interacti 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
|
||||||
|
|
||||||
\begin_layout Standard
|
\begin_layout Standard
|
||||||
The communication with gaming clients has to take place over a protocol.
|
The communication with the gaming clients has to take place with help a
|
||||||
Ideally a standard protocol should be used, in order to shorten the learning
|
protocol.
|
||||||
curve for developers, and also make the system as a whole less obscure.
|
Ideally a standard protocol should be used in order to shorten the learning
|
||||||
A large challenge during this project is to decide whether an existing
|
curve for developers and also make the system as a whole less obscure.
|
||||||
|
A major challenge during this project is to decide whether an existing
|
||||||
protocol can be used, and if not, how a new protocol can be designed which
|
protocol can be used, and if not, how a new protocol can be designed which
|
||||||
performs technically as desired, while still being familiar enough to existing
|
performs technically as desired, while still being familiar enough to existing
|
||||||
developers.
|
developers.
|
||||||
|
@ -1212,10 +1161,10 @@ A great deal of work is devoted to make the GGS
|
||||||
reliable
|
reliable
|
||||||
\emph default
|
\emph default
|
||||||
.
|
.
|
||||||
This includes ensuring that the system scales well, and to make sure it
|
This includes ensuring that the system scales well and to make sure it
|
||||||
is fault tolerant.
|
is fault tolerant.
|
||||||
In order to facilitate scalability, we need a storage platform which is
|
In order to facilitate scalability the GGS needs a storage platform which
|
||||||
accessible and consistent among all of the GGS, this is also investigated.
|
is accessible and consistent.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section
|
\begin_layout Section
|
||||||
|
|
8073
report.lyx.orig
Normal file
8073
report.lyx.orig
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue