diff --git a/bibliography.bib b/bibliography.bib index 0d73649..4bd4517 100644 --- a/bibliography.bib +++ b/bibliography.bib @@ -178,7 +178,7 @@ @MISC{thenumbers:website, AUTHOR = "Nash Information Services, LLC", - TITLE = "US Movie Market Summary 1995 to 2011", + TITLE = "U.S Movie Market Summary 1995 to 2011", MONTH = "April", YEAR = {2011}, URL = "http://www.the-numbers.com/market/" @@ -191,3 +191,38 @@ YEAR = {2011}, URL = "http://www.theesa.com/facts/index.asp" } + + +@article{Armstrong:2010:ERL:1810891.1810910, + author = {Armstrong, Joe}, + title = {Erlang}, + journal = {Commun. ACM}, + issue_date = {September 2010}, + volume = {53}, + issue = {9}, + month = {September}, + year = {2010}, + issn = {0001-0782}, + pages = {68--75}, + numpages = {8}, + url = {http://doi.acm.org.proxy.lib.chalmers.se/10.1145/1810891.1810910}, + doi = {http://doi.acm.org.proxy.lib.chalmers.se/10.1145/1810891.1810910}, + acmid = {1810910}, + publisher = {ACM}, + address = {New York, NY, USA}, +} +@inproceedings{Armstrong:2007:HE:1238844.1238850, + author = {Armstrong, Joe}, + title = {A history of Erlang}, + booktitle = {Proceedings of the third ACM SIGPLAN conference on History of programming languages}, + series = {HOPL III}, + year = {2007}, + isbn = {978-1-59593-766-7}, + location = {San Diego, California}, + pages = {6-1--6-26}, + url = {http://doi.acm.org/10.1145/1238844.1238850}, + doi = {http://doi.acm.org/10.1145/1238844.1238850}, + acmid = {1238850}, + publisher = {ACM}, + address = {New York, NY, USA}, +} diff --git a/report.lyx b/report.lyx index f262b43..a8af320 100644 --- a/report.lyx +++ b/report.lyx @@ -321,7 +321,7 @@ Zork, \emph default or \emph on -Pac Man. +Pacman. \end_layout \begin_layout Standard @@ -527,8 +527,18 @@ Moving back to the gaming industry. for game companies to expand its customer base. Reliable game servers are one improvement that will create a good image of a company. - In general the downtime of game servers are much higher than the downtime - of telecom system. + In general the downtime of game servers is much higher than the downtime + of telecom system +\begin_inset Note Note +status open + +\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. @@ -716,6 +726,14 @@ key "Armstrong03" . 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 +\begin_inset CommandInset ref +LatexCommand ref +reference "sec:The-usage-of-erlang" + +\end_inset + +. Chapter \begin_inset CommandInset ref LatexCommand vref @@ -2243,6 +2261,13 @@ Because P2P game architectures are a constant goal for cheaters and because \begin_layout Subsection UUID +\begin_inset CommandInset label +LatexCommand label +name "sub:UUID" + +\end_inset + + \end_layout \begin_layout Standard @@ -2643,6 +2668,13 @@ Encryption \begin_layout Section Game Development Language in a Virtual Machine +\begin_inset CommandInset label +LatexCommand label +name "sec:Game-Development-Language" + +\end_inset + + \end_layout \begin_layout Standard @@ -3062,6 +3094,137 @@ reference "sec:The-modular-structure" \begin_layout Section The usage of Erlang in the GGS +\begin_inset CommandInset label +LatexCommand label +name "sec:The-usage-of-erlang" + +\end_inset + + +\end_layout + +\begin_layout Standard +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. +\end_layout + +\begin_layout Standard +Erlang uses message passing in favour of shared memory, mutextes and locks, + something which at the time was controversial among fellow developers +\begin_inset CommandInset citation +LatexCommand citet +key "Armstrong:2010:ERL:1810891.1810910" + +\end_inset + +. + The reason for using message passing, according to Armstrong, was that + applications should operate correctly before optimizations are done, where + efficient internal communication within the Erlang machine was considered + a later optimization. +\end_layout + +\begin_layout Standard +In using message passing in favour of the methods commonly used at the time, + the issues commonly associated with shared memory and locking were avoided. + In Erlang, everything is a process, and everything operates in its own + memory space. + Memory can not be shared among processes, which prohibits a process from + corrupting the memory of a different process. +\end_layout + +\begin_layout Standard +Messages are sent between the processes in an asynchronous manner, and each + process has a mailbox in which these messages can be retrieved. +\end_layout + +\begin_layout Standard +Processes in Erlang are also called +\emph on +Light Weight Processes. + +\emph default +The Erlang processes are very cheaply created. + Processes exist within an Erlang machine, or Erlang node. + The Erlang machine has its own scheduler and does not rely on the operating + system's scheduler, this is a main reason of Erlang's capability of running + many concurrent processes +\begin_inset CommandInset citation +LatexCommand citet +key "Armstrong03" + +\end_inset + +. +\end_layout + +\begin_layout Standard +The strong isolation of Erlang processes make them ideal for multicore and + distributed systems. + Distribution of software is included as a fundamental part in the Erlang + language. + The 'physical' location of a process, e.g. + which computer the process runs on, is not important when communicating + with the process. + Processes can communicate regardless of whether they run on the same system + of not, transparently. +\end_layout + +\begin_layout Standard +The distributed nature of Erlang is something the GGS makes use of when + scaling across several computers in order to achieve higher performance. +\end_layout + +\begin_layout Standard +A very important feature of Erlang, used in the GGS, is the ability to interface + with external hardware and software. + Erlang allows communication with external resources through +\emph on +ports. + +\emph default + Through ports communication can take place much in the same way communication + is performed over sockets. +\end_layout + +\begin_layout Standard +The GGS uses Erlang ports for generating UUID:s +\begin_inset Foot +status collapsed + +\begin_layout Plain Layout +UUID:s are discussed in section +\begin_inset CommandInset ref +LatexCommand ref +reference "sub:UUID" + +\end_inset + + +\end_layout + +\end_inset + + and for interfacing with the virtual machines of games +\begin_inset Foot +status collapsed + +\begin_layout Plain Layout +Virtual machines of games are discussed in section +\begin_inset CommandInset ref +LatexCommand ref +reference "sec:Game-Development-Language" + +\end_inset + + +\end_layout + +\end_inset + +. \end_layout \begin_layout Standard