Added glossary

This commit is contained in:
Jonatan Pålsson 2011-05-03 17:14:06 +02:00
parent 46f5fed5f6
commit e63263eccc

View file

@ -87,6 +87,10 @@
\floatstyle{ruled}
\newfloat{code}{thp}{lop}
\floatname{code}{Code}
\usepackage{nomencl}
\makenomenclature
\renewcommand{\nomname}{Glossary}
\end_preamble
\use_default_options true
\maintain_unincluded_children false
@ -349,6 +353,34 @@ Zork,
or
\emph on
Pacman.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Zork}{A textual computer game developed by students at MIT}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Pacman}{An early graphical computer game developed by Namco}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{NetHack}{An early computer game developed by the NetHack team,
arguably the oldest computer game still in development}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -406,8 +438,22 @@ Due to the increasing importance of computer gaming, more focus should be
\end_layout
\begin_layout Standard
The reliable generic game server, hereafter known as GGS, is a computer
program designed to
The reliable generic game server, hereafter known as GGS
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{GGS}{Generic Game Server, a software for reliably hosting network
games.
The subject of this thesis.}
\end_layout
\end_inset
, is a computer program designed to
\emph on
host
\emph default
@ -455,6 +501,68 @@ Counter-Strike
The difference between the GGS and the servers for these games is that
the servers for Doom, Quake, and the others listed, were designed with
these specific games in mind.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Quake}{A first person shooter series developed by ID software.
The series consists of four games.}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Doom}{A first person shooter series developed by ID software.
The series consists of three games.}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{World of Warcraft}{A MMORPG game developed by Blizzard.
The world's most popular MMORPG by subscriber count.}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Counter-Strike}{A multiplayer first person shooter game, popular
in E-Sports.}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Framework}{A supporting structure, the GGS is a framework for
developing network games}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{First-person shooter}{A game in which centers around gun combat
from the first person perspective.}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{MMORPG}{Massively multiplayer online role playing game.
An online game with several thousand participants.}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -486,6 +594,28 @@ reliable
and software failiures 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.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Hardware failiure}{A failiure in hardware (hard drive, memory,
processor, etc) which causes a system to stop functioning}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Software failiure}{A failiure in software (the GGS, the operating
system, etc) which causes a system to stop functioning}
\end_layout
\end_inset
\end_layout
\begin_layout Section
@ -521,6 +651,37 @@ 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.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{The nine nines}{A common goal for availability in the telecom
business.
A system with nine nines of availability is available 99.999999999% of the
time}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Downtime}{The amount of time a system is unavailable and does
not function}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Uptime}{The amount of time a system is available and functions}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -536,7 +697,17 @@ the nine nines
\begin_inset Formula $15ms$
\end_inset
downtime in a year.
downtime in a year
\begin_inset Note Note
status open
\begin_layout Plain Layout
Citation needed
\end_layout
\end_inset
.
The level of instability and bad fault tolerance seen in the game server
industry would not have been accepted in the telecoms industry.
This level of instability should not be accepted in the game server industry
@ -710,6 +881,65 @@ TUXEDO
\emph default
application server, which can be used to run applications written in COBOL,
C++ and other languages.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{SQL}{Structured Query Language, a computer language common
in querying certain databases}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{JavaScript}{A programming language originally developed by
Netscape, common in web programming}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{COBOL}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{C++}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Java}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{AXD301}{Telephone switch developed by Ericsson}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Erlang}{A concurrent programming language, often used for telecom
applications.
The main language of the GGS}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -856,6 +1086,27 @@ game development language
\emph default
(hereafter GDL for brevity) is used.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{GDL}{Game Development Language, the language used to program
games in the GGS}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{VM}{Virtual Machine}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -929,6 +1180,26 @@ The implementation of the GGS protocol, together with storage possibilities,
the project.
To get a functional prototype some limits must be set on the types games
that can be played on the prototype.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{UDP}{User Datagram Protocol, a connectionless networking protocol}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{TCP}{Transmission Control Protocol, a streaming network protocol}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -950,6 +1221,19 @@ reference "sec:Choice-of-network"
Another limitation necessary to set on the system is the possibility to
have huge game worlds due to the implementation of the scaling mechanism
in the prototype.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Latency}{A measure of delay, often measured in milliseconds}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -1031,6 +1315,19 @@ A prototype was developed early on in the project in order to carry out
Using this prototype, the system was divided into modules.
A demand specification was created, using this specification, the modules
were easily identifiable.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Module}{A part of a larger system}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -1752,10 +2049,6 @@ A very simple example of the flow through the GGS system when a game played.
\end_inset
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Section
@ -1935,6 +2228,20 @@ There are three main ways in which computer communication over the Internet
Application layer protocols such as HTTP on the other hand needs a transport
layer protocol in order to work.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{HTTP}{Hyper Text Transport Protocol, a network protocol commonly
used to deliver web pages}
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
@ -2176,6 +2483,20 @@ messages
\emph default
instead of shared memory.
We will discuss each of them later on.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Supervisor}{A process monitoring and hadning crashes in other
processes}
\end_layout
\end_inset
\end_layout
\begin_layout Section
@ -2240,6 +2561,19 @@ The need for load balancing varies between different kind of systems.
works on.
A static structure where the number of servers are predefined or a dynamic
structure where the number varies.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Amazon EC2}{A cloud computation service}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -2321,6 +2655,19 @@ name "sub:UUID"
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{UUID}{Universally Unique Identifier}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -2528,6 +2875,28 @@ The obvious solution to this problem is to ensure mutual exclusion by using
A different approach is to give each node the ability to generate Universally
Unique Identifiers (UUID), where the state of one machine does not interfere
with the state of another.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{MAC Address}{Media Access Control address, used to identify
network cards}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{SHA-1}{Cryptigraphic hash function, designed by the National
Security Agency (NSA)}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -2614,6 +2983,21 @@ reference "alg:A-simple-generator"
, even when mutual system-wide exclusion is implemented.
This is exactly the problem UUID:s solve.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Network split}{Separation of two networks, occurs when two
networks can not communicate, commonly because of a hardware or software
failiure}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -2717,6 +3101,20 @@ We only support languages running in a sandboxed environment.
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.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Sandbox}{A protected environment in which computer software
can be run safely}
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
@ -2830,6 +3228,54 @@ https://github.com/languages/
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 open
\begin_layout Plain Layout
\backslash
nomenclature{CouchDB}{Database server}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Riak}{Database server}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{GitHub.com}{Social coding website}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{ActionScript}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Lua}{Programming language}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{.NET}{Software platform}
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
@ -2987,6 +3433,28 @@ key "McKusick:2004:DIF:1014910"
\end_inset
.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{LWP}{Light Weight Process}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Context switch}{The act of switching from one context, commonly
a process, to another.
Used by operating systems to achieve multi tasking}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -3159,6 +3627,20 @@ Erlang was designed by Ericsson, beginning in 1986, for the purpose of creating
concurrent applications and improving telecom software.
Features essential for the telecom instustry to achieve high availability
in telecom switches were added to the language.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Mutex}{A construct for achieving mutial exclusion, used to
avoid simultaneous access to shared resources in computer systems}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -3290,6 +3772,26 @@ reference "sec:Game-Development-Language"
\end_inset
.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{OTP}{Open Telecom Platform, a software suite for Erlang}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Behaviour}{A design pattern in OTP}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -3381,6 +3883,20 @@ application
the GGS can be started in a way uniform to most erlang software, providing
familiarity for other Erlang users, and eases the incorporation of the
GGS in other applications.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Application}{A way of packaging Erlang software in a uniform
way}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -3445,6 +3961,20 @@ localstorage
Unique id:s called gametokens are generated for hosted games so that they
are not mixed up.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{WebStorage}{A new standard for letting websites store data
on visitors' computers}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -3560,6 +4090,27 @@ Am I right here?
\end_inset
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{SRP}{Single Responsibility Principle}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{Object Oriented Programming}{A programming paradigm focusing
on objects}
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
@ -4137,7 +4688,7 @@ After a crash in a table process, the entire table must be rebuilt and the
Data kept in the actual game is not automatically corrupted by the crash
in a table, however the table must be re-associated with the game VM is
was associated with prior to the crash of the table.
The table process maps well into the setting of the real-world chess clib
The table process maps well into the setting of the real-world chess club
scenario previously discussed.
A table works in the same way in a real world setting as in the GGS setting.
\end_layout
@ -4147,7 +4698,7 @@ The game virtual machine module
\end_layout
\begin_layout Standard
This module holds the game logic of a game and is responsible for the vm
This module holds the game logic of a game and is responsible for the VM
associated with each game.
\end_layout
@ -4175,7 +4726,7 @@ The VM itself makes it possible for the game developer to program in the
doesn't need to take this into consideration when programming a game.
If a method within the game sends data to a player, it will be delivered
to the player in the correct running game.
The same game token is used to store the game state in the db.
The same game token is used to store the game state in the database.
Therefore, no game states will be mixed up either.
\end_layout
@ -4203,6 +4754,19 @@ Game data from all games on the GGS are stored here.
This makes it possible to continue a game just before the failure without
having to start the game from the beginning.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Mnesia}{Database server used in the GGS}
\end_layout
\end_inset
\end_layout
\begin_layout Standard
@ -4261,6 +4825,29 @@ key "ieee_90"
.
There are some tools for creating reliable applications built in to Erlang.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{Reliability}{The ability of a system or component to perform
its required functions under stated conditions for a specified period of
time}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{IEEE}{Institute of Electrical and Electronics Engineers, read
"I-triple-E"}
\end_layout
\end_inset
\end_layout
\begin_layout Itemize
@ -4933,6 +5520,26 @@ There were two possible solutions to the problem.
\begin_layout Standard
To get the functionality needed we decided to implement this in erlang_js.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{V8}{JavaScript engine developed by Google}
\end_layout
\begin_layout Plain Layout
\backslash
nomenclature{SpiderMonkey}{JavaScript engine developed by Mozilla}
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
@ -5220,6 +5827,19 @@ Currently Mnesia is used for game data storage.
ETS provides fast access to the RAM and thus Mnesia could be used less
frequently.
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
nomenclature{ETS}{Erlang Term Storage}
\end_layout
\end_inset
\end_layout
\begin_layout Subsection
@ -5283,12 +5903,27 @@ To start the GGS isn't self explanatory.
Conclusion
\end_layout
\begin_layout Chapter*
Glossary
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
addcontentsline{toc}{section}{Glossary}
\end_layout
\begin_layout Standard
Here we could add some important words and their definitions..
\begin_layout Plain Layout
\backslash
printnomenclature
\end_layout
\end_inset
\end_layout
\begin_layout Standard