From e63263eccc472ce5db3a97581682257c66d41979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Tue, 3 May 2011 17:14:06 +0200 Subject: [PATCH] Added glossary --- report.lyx | 663 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 649 insertions(+), 14 deletions(-) diff --git a/report.lyx b/report.lyx index 2cb8bea..f7c4b18 100644 --- a/report.lyx +++ b/report.lyx @@ -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