From 51f9c4adf8a605bd955bfc4c2c09e7ff99808a0f Mon Sep 17 00:00:00 2001 From: Darkelarious Date: Sun, 20 Dec 2020 19:42:29 +0000 Subject: initial draft commit --- README | 18 ++++++++++++ pdf/MasterServerDocs-v0.1.pdf | Bin 0 -> 323233 bytes src/Makefile | 22 ++++++++++++++ src/abstract.tex | 10 +++++++ src/background.tex | 26 +++++++++++++++++ src/contact.tex | 26 +++++++++++++++++ src/credits.tex | 4 +++ src/doc.tex | 31 ++++++++++++++++++++ src/gameoverview.tex | 4 +++ src/headers.tex | 65 +++++++++++++++++++++++++++++++++++++++++ src/heartbeat.tex | 23 +++++++++++++++ src/img/333networks-bw.png | Bin 0 -> 6152 bytes src/img/client-exchange.png | Bin 0 -> 32561 bytes src/img/general-overview.png | Bin 0 -> 11961 bytes src/img/overview-cgs.png | Bin 0 -> 16912 bytes src/img/overview-cms.png | Bin 0 -> 16535 bytes src/img/overview-hb.png | Bin 0 -> 16474 bytes src/img/status-exchange.png | Bin 0 -> 20514 bytes src/img/uplink-exchange.png | Bin 0 -> 26327 bytes src/img/utlogo.jpg | Bin 0 -> 32581 bytes src/implementation.tex | 3 ++ src/introduction.tex | 25 ++++++++++++++++ src/protocolreference.tex | 3 ++ src/references.bib | 66 ++++++++++++++++++++++++++++++++++++++++++ src/revisions.tex | 3 ++ src/serverlist.tex | 20 +++++++++++++ src/status.tex | 17 +++++++++++ src/titlepage.tex | 34 ++++++++++++++++++++++ src/usermanual.tex | 4 +++ src/website.tex | 7 +++++ 30 files changed, 411 insertions(+) create mode 100755 README create mode 100644 pdf/MasterServerDocs-v0.1.pdf create mode 100755 src/Makefile create mode 100755 src/abstract.tex create mode 100755 src/background.tex create mode 100755 src/contact.tex create mode 100755 src/credits.tex create mode 100755 src/doc.tex create mode 100755 src/gameoverview.tex create mode 100755 src/headers.tex create mode 100755 src/heartbeat.tex create mode 100755 src/img/333networks-bw.png create mode 100644 src/img/client-exchange.png create mode 100644 src/img/general-overview.png create mode 100644 src/img/overview-cgs.png create mode 100644 src/img/overview-cms.png create mode 100644 src/img/overview-hb.png create mode 100644 src/img/status-exchange.png create mode 100644 src/img/uplink-exchange.png create mode 100755 src/img/utlogo.jpg create mode 100755 src/implementation.tex create mode 100755 src/introduction.tex create mode 100755 src/protocolreference.tex create mode 100755 src/references.bib create mode 100755 src/revisions.tex create mode 100755 src/serverlist.tex create mode 100755 src/status.tex create mode 100755 src/titlepage.tex create mode 100755 src/usermanual.tex create mode 100755 src/website.tex diff --git a/README b/README new file mode 100755 index 0000000..73b18aa --- /dev/null +++ b/README @@ -0,0 +1,18 @@ +DESCRIPTION + Documentation for 333networks masterserver in LaTeX + + author: Darkelarious + email: darkelarious@333networks.com + +REQUIREMENTS + - texlive-full + - make + +INSTALL + Run "make" in this directory. + +USE + Open the pdf document that is generated by "make". Read document. Understand. + +COPYING + Copyright Darkelarious/333networks. diff --git a/pdf/MasterServerDocs-v0.1.pdf b/pdf/MasterServerDocs-v0.1.pdf new file mode 100644 index 0000000..a6ed040 Binary files /dev/null and b/pdf/MasterServerDocs-v0.1.pdf differ diff --git a/src/Makefile b/src/Makefile new file mode 100755 index 0000000..22992c8 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,22 @@ +all: + pdflatex doc.tex + bibtex doc.aux + pdflatex doc.tex + pdflatex doc.tex + rm *.aux +# rm *.lof + rm *.log +# rm *.lot + rm *.bbl + rm *.blg + rm *.toc + rm *.out +clean: + rm *.aux +# rm *.lof + rm *.log +# rm *.lot + rm *.bbl + rm *.blg + rm *.toc + rm *.out diff --git a/src/abstract.tex b/src/abstract.tex new file mode 100755 index 0000000..b390cb9 --- /dev/null +++ b/src/abstract.tex @@ -0,0 +1,10 @@ +\chapter*{Abstract} +\markboth{Abstract}\\ + +\begin{comment} +The masterserver is a software server that receives data from online multiplayer game servers and presents a list of all online multiplayer game servers to the users/gamers. This is often a commercial service provided by various game developers and/or software enterprises. When the largest master server provider permanently went offline in 2014, support for a number of online multiplayer games was dropped. + +Various implementations of the masterserver concept were written by corporate parties and have been kept closed-source. To fully support all online games that were affected by the GameSpy shutdown, an alternate masterserver should become available, controlled by the community, for the community. Eventually, the thought of an all-powerful community masterserver starts with the writing and availability of the software as described in this document.\\ +\\ +\end{comment} +\emph{gameserver, masterserver, client, interaction, no more gamespy, 333networks implementation, extended functionality and website.} diff --git a/src/background.tex b/src/background.tex new file mode 100755 index 0000000..5121190 --- /dev/null +++ b/src/background.tex @@ -0,0 +1,26 @@ +\chapter{Background} +\label{chap:bg} + +In this chapter we introduce the concept of a masterserver and describe why legacy games depend on it. + +\section{Online games} +The concept of online gaming is a bit vague. Everybody plays from their own computer and it is not always clear what interaction occurs at which side of the internet connection. In order to illustrate the different kinds of networking, we compare online games with their analogue variants: chess and poker. With chess, the two players could be playing on the same board or could be a large distance apart and communicate their moves by telephone: player one states he moves his rook from coordinates A3 to E3 and player two could respond by telling to move his pawn from C7 to C6. Both players are aware of the moves on the board and are playing the same game. With poker, on the other hand, it will be a lot more difficult to keep players appraised of the same game information without telling each other which cards they are holding. This requires of an independent party, the dealer. This dealer would communicate with each player individually which cards (s)he received from the deck and whether this person raises the pot. These analogue representations of multiplayer games can be described as peer-to-peer (chess) and server-client (poker) approaches. With a peer-to-peer game, players are directly connected to each other and are both aware of all aspects in the game. With a server-client game, each player has their unique response that the others are unaware of and only the server is capable of exchanging information between the others. + +From the poker analogy, we continue to multiple games. In the local bar, several groups of people are playing different rounds of poker on each table in different room. Every room has its own table, dealer and participants, independent from all other rooms and tables. In order to participate in a round of poker, you therefore only need to remember the address of the bar in order to gain access to all of the poker tables. Once you enter the bar, you ask the barkeep in which rooms the poker tables are located. The barkeep will tell you which rooms there are and you can look around the rooms to decide which table you want to join. The barkeep represents the masterserver, who keeps a list of all servers (rooms or poker tables) that are available. You do not need to maintain a record of the ever changing room/table list, instead one can just access the information directly from the barkeep. + +\section{Game interactions} +To illustrate the more technical interactions between dealers, barkeep and player, we create three roles: {\bf gameserver}, {\bf masterserver} and {\bf client}\footnote{We refer to \emph{gameservers} and \emph{masterservers} instead of \emph{game-} and \emph{master} servers. The latter is correct English, but the former improves readability and avoids confusion about what type of server we explicitly try to describe.} in figure \ref{fig:totaloverview}. When a gameserver is initialised, it repeatedly sends a signal to the masterserver (1). We refer to these signals as \emph{heartbeats}, as the masterserver listens for these signals to determine if the gameserver is still active, similar to how we listen for heartbeats in the human body to determine if somebody is still alive. Game clients make a request to the masterserver to obtain a list of all servers that sent heartbeats and the masterserver provides this list (2). The client then inquires at all of these gameservers for their information (or \emph{status}) so that the user can make a choice which gameserver to join (3). + +\begin{figure}[h] + \centering + \includegraphics[width=\textwidth]{img/general-overview} + \caption{General interactions between gameserver, masterserver and client.}\label{fig:totaloverview} +\end{figure} + +All interactions between gameserver, masterserver and client occur over the internet. To avoid a wild growth of different methods to convey the information, GameSpy created a format of communication to handle many games with the same approach. When different gameservers follow the same protocol, the same interaction can be applied for a large variety in games. In other words, one barkeep could keep a room list for poker, monopoly, bridge and other games, instead of having one barkeep for every game: the masterserver can handle different games that use the same form of communication. + + +\section{Networking} +In the next chapters we address every interaction between gameserver, masterserver and client, but first we describe what we consider to be some required general knowledge about network communication and protocol. Since there is a variety of literature available for in-depth knowledge, we limit ourselves to the essential information that is necessary to understand the following chapters.\\ + +There are multiple methods to send information over the internet between peers. The two most important methods are \emph{UDP} and \emph{TCP} communication. Imagine that there is a speaker in front of a large audience. In order to get to know the audience, the speaker could ask everyone to shout their names. Everyone would shout their names one by one to the speaker and hope that the speaker would hear them properly. The \emph{user datagram protocol} (UDP) is similar to this situation: a gameserver sends a heartbeat to the masterserver, but there is no guarantee that information is correctly received or in the correct order. Another method would be for the speaker to ask the audience to walk up to him one by one, shake hands and introduce themselves before sitting down again. The \emph{Transfer Control Protocol} handles information in the same way: a client connects with the masterserver, identifies itself and retrieves the serverlist. As one could imagine, the information is conveyed correctly, but at the expense of a much larger duration of the interaction. The choice for either of these protocols in the game interactions is defined by the circumstances: some interactions require speed rather than precision, some interactions require precision over speed. diff --git a/src/contact.tex b/src/contact.tex new file mode 100755 index 0000000..ee0dcf0 --- /dev/null +++ b/src/contact.tex @@ -0,0 +1,26 @@ +\chapter*{Contact} +\markboth{Contact Information}{} + +\begin{tabular}{p{0.3\textwidth} p{0.01\textwidth} p{0.6\textwidth}} +{\bf Document} & &\\\hline +\\ +{\bf Title} & : & An introduction to the masterserver.\\ +{\bf Subtitle} & : & Reference for heartbeats, serverlists, status and implementation.\\ +\\ +{\bf Revision} & : & 0.2\\ +{\bf Date} & : & \today\\ +\\ +{\bf Author} & : & Darkelarious\\ +{\bf Email address} & : & darkelarious@333networks.com\\ +\\ +\\ +{\bf Status} & : & draft\\ +\\ +\\ +{\bf Contact Info} & : & \textsc{333networks}\\ + & & discord\\ + & & website\\ + & & etc\\ +\\ +\hline +\end{tabular} diff --git a/src/credits.tex b/src/credits.tex new file mode 100755 index 0000000..bb0d91c --- /dev/null +++ b/src/credits.tex @@ -0,0 +1,4 @@ +\chapter*{Acknowledgements} +\label{chap:acks} +Acknowledgements for everybody who contributed. Company names/people first, then people who actively contributed/edit and fact checking, helped with images/figures, then people who proofread it. + diff --git a/src/doc.tex b/src/doc.tex new file mode 100755 index 0000000..339f0b1 --- /dev/null +++ b/src/doc.tex @@ -0,0 +1,31 @@ +\documentclass[10pt, a4paper]{report} +\input{headers} +\begin{document} +\pagenumbering{gobble} +\input{titlepage} +\input{contact} +\pagenumbering{roman} +\setcounter{page}{1} +\input{abstract} +\input{revisions} +\setcounter{tocdepth}{2} +\tableofcontents +\input{introduction} +\input{background} +\input{heartbeat} +\input{serverlist} +\input{status} +\input{implementation} +\input{website} +\clearpage +\phantomsection +\addcontentsline{toc}{chapter}{Bibliography} +\bibliographystyle{unsrt} +\bibliography{references} +\input{credits} +\begin{appendices} +\input{usermanual} +\input{protocolreference} +\input{gameoverview} +\end{appendices} +\end{document} diff --git a/src/gameoverview.tex b/src/gameoverview.tex new file mode 100755 index 0000000..8da2418 --- /dev/null +++ b/src/gameoverview.tex @@ -0,0 +1,4 @@ +\chapter{Game Overview} +\label{app:gamenames} + +List of gamenames (type:longtable) diff --git a/src/headers.tex b/src/headers.tex new file mode 100755 index 0000000..73271d1 --- /dev/null +++ b/src/headers.tex @@ -0,0 +1,65 @@ + +% % % % % % % % % % +% P A C K A G E S % +% % % % % % % % % % + +\usepackage[english]{babel} +\usepackage{anonchap} +\usepackage[left=3cm,top=3cm,right=3cm,bottom=3cm]{geometry} +\usepackage{fancyhdr} +\usepackage[x11names]{xcolor} +\usepackage{hyphenat} +\usepackage[pdftex]{graphicx} +\usepackage{float} +\usepackage{wrapfig} +\usepackage{enumerate} +\usepackage{listings} +\usepackage{verbatim} +\usepackage{caption} +\usepackage{multirow} +\usepackage{appendix} +\usepackage{tikz} +\usepackage{pgf} +\usepackage{url} +\usepackage[super,square,comma]{natbib} +\usepackage{hyperref} +\usepackage{amsmath} + +% % % % % % % % % % +% S E T T I N G S % +% % % % % % % % % % +\title{333networks masterserver technical reference} +\author{Darkelarious} + +\usetikzlibrary{shapes,arrows,plotmarks,shapes.multipart,calc} + +\simplechapter + +\newcommand{\HRule}{\rule{\linewidth}{0.1mm}} +\renewcommand{\simplechapterdelim}{.} +\renewcommand{\chaptermark}[1]{\markboth{#1}{}} + +%\setlength{\parindent}{0in} + +% header/footer +\pagestyle{fancyplain} +\setlength{\headheight}{14pt} +\fancyhf[LH]{\nouppercase\leftmark} +\fancyhf[CH]{} +\fancyhf[RH]{Masterserver} +\fancyhf[LF]{\raisebox{-10pt}{\includegraphics[height=20pt]{./img/333networks-bw}}} +\fancyhf[CF]{} +\fancyhf[RF]{\thepage{}} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} + +%misc +\hbadness 10000 + +\hypersetup{ + colorlinks=true, + linkcolor=black, + citecolor=SpringGreen4, + filecolor=darkgray, + urlcolor=blue +} diff --git a/src/heartbeat.tex b/src/heartbeat.tex new file mode 100755 index 0000000..a106950 --- /dev/null +++ b/src/heartbeat.tex @@ -0,0 +1,23 @@ +\chapter{Heartbeat} +\label{chap:heartbeat} + +repeat introduction of heartbeat from chap:background, figure with focus on gameserver-masterserver interaction. + +\begin{figure}[h] + \centering + \includegraphics[width=\textwidth]{img/overview-hb} + \caption{Focus on interaction between gameserver and masterserver}\label{fig:overviewhb} +\end{figure} + +explanation of purpose, UDP information which it contains and/or is meant to convey. +\\ +security challenge (secure/validate) +\\ +ports that are opened, listening\\ +\\ + +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{img/uplink-exchange} + \caption{Interaction between gameserver and masterserver}\label{fig:uplink} +\end{figure} diff --git a/src/img/333networks-bw.png b/src/img/333networks-bw.png new file mode 100755 index 0000000..882c49d Binary files /dev/null and b/src/img/333networks-bw.png differ diff --git a/src/img/client-exchange.png b/src/img/client-exchange.png new file mode 100644 index 0000000..24820aa Binary files /dev/null and b/src/img/client-exchange.png differ diff --git a/src/img/general-overview.png b/src/img/general-overview.png new file mode 100644 index 0000000..5ed8cc2 Binary files /dev/null and b/src/img/general-overview.png differ diff --git a/src/img/overview-cgs.png b/src/img/overview-cgs.png new file mode 100644 index 0000000..3809c69 Binary files /dev/null and b/src/img/overview-cgs.png differ diff --git a/src/img/overview-cms.png b/src/img/overview-cms.png new file mode 100644 index 0000000..b832d5c Binary files /dev/null and b/src/img/overview-cms.png differ diff --git a/src/img/overview-hb.png b/src/img/overview-hb.png new file mode 100644 index 0000000..a3a3b08 Binary files /dev/null and b/src/img/overview-hb.png differ diff --git a/src/img/status-exchange.png b/src/img/status-exchange.png new file mode 100644 index 0000000..fc339f0 Binary files /dev/null and b/src/img/status-exchange.png differ diff --git a/src/img/uplink-exchange.png b/src/img/uplink-exchange.png new file mode 100644 index 0000000..9936a3d Binary files /dev/null and b/src/img/uplink-exchange.png differ diff --git a/src/img/utlogo.jpg b/src/img/utlogo.jpg new file mode 100755 index 0000000..d393ecf Binary files /dev/null and b/src/img/utlogo.jpg differ diff --git a/src/implementation.tex b/src/implementation.tex new file mode 100755 index 0000000..871f813 --- /dev/null +++ b/src/implementation.tex @@ -0,0 +1,3 @@ +\chapter{Implementation} +\label{chap:implementation} + diff --git a/src/introduction.tex b/src/introduction.tex new file mode 100755 index 0000000..8511e40 --- /dev/null +++ b/src/introduction.tex @@ -0,0 +1,25 @@ +\chapter{Introduction} +\label{introduction} +\pagenumbering{arabic} +\setcounter{page}{6} + +For more than fifteen years, 333networks has been hosting a masterserver. A lot of design iterations were made over the years. In this document, all acquired knowledge has been collected. + +\section{Online gaming} +Since the early years of classic and modern (electronic) games, people have felt a need to play together. In the eighties, text- and turn-based games found their way onto universities' mainframes and formed the base for multiplayer games. As personal computers became the norm, the introduction of the personal computer made it possible for people at home to play together on a system with split screen and four hands on a keyboard. With the invention of the internet, it became possible to play together over great distances. + +\section{Masterserver} +Since 1995, a large number of game titles were released with the capability to play online together. Online games provided the need for the development of networking protocols that made it possible to play together on different systems. Some games required a direct connection with each other (peer-to-peer) whereas other games utilised a server-client hierarchy. In order to find each other on the vastness of the world wide web, technologies were developed to connect peers, game servers and clients together. One of the technologies that was developed for this purpose was a \emph{masterserver}. This technology provides an infrastructure for game servers and game players to interact and play together.\\ + +Game developers would initially develop their own multiplayer protocol and masterserver for their game title. With the rise of GameSpy Industries in 1995, game developers had the possibility to choose for proprietary software and third party services to provide the multiplayer aspects, matchmaking and masterserver support for their games. With the rise of broadband internet and reliable masterserver services available, it was no longer necessary to develop their own protocols and maintain their own masterserver hardware. Many game developers followed and dependant on GameSpy's services or discontinued their own masterserver infrastructure in favour of the existing services. + +\section{Loss of GameSpy} +In the autumn of 2008, all masterserver services for two of the titles, \emph{Unreal} and \emph{Unreal Tournament 1999} (Epic Megagames Inc$^{\textcopyright}$) went down at the same time. For three days, thousands of players, were frustrated that not a single online server showed up in the server browser\cite{bu2008,ou2008}. In the spring of 2010, the masterserver infrastructure became even more fragile when the rebranded \emph{Epic Games} permanently shut down their masterserver. Effectively, thousands of gamers now depended on a single remaining GameSpy masterserver. In December 2013, GameSpy Industries was bought by GLU Technologies, leading to the shutdown of all GameSpy services on May 31, 2014\cite{nutt2014, stapleton2013}.\\ + +Game developers and publishers who had relied on GameSpy to provide online multiplayer support for two decades, were left empty-handed. People who bought expensive game titles were no longer able to play online in the era where connecting with each other is essential. In response to the shutdown, some game developers like Epic Games returned to an in-house solution. Many other multiplayer titles and their communities had no such luck. + +\section{Filling the void} +In the early years of this century, a number of Unreal Tournament players and their clans worked together to display (interactive) statistics of their game servers. Through \emph{php}-scripts it was possible to obtain server information and display this on websites for one or more individual servers. With a small group of people, we started \emph{333networks} as a statistics website and private game server host for Unreal Tournament 1999. With more understanding of \emph{server queries} and \emph{network infrastructure}, 333networks started experimenting with replicating properties of the masterserver to obtain more server information for display. This lead to the development of an intrinsic masterserver that could list all cooperating Unreal Tournament servers on the website. Due to various successes, 333networks continued with the development of a fully functional masterserver with integrated website, which was completed mere months before GameSpy shut down in 2014. This document contains all the knowledge that was accumulated in the process of developing and expanding the 333networks version of the masterserver. + +\section{Content overview} +TODO: in this section we describe what information can be found where. This is not a repetition of the table of contents, but a contextual, descriptive narration of the document itself to justify the chosen order of information. Save this for later. diff --git a/src/protocolreference.tex b/src/protocolreference.tex new file mode 100755 index 0000000..6345b1e --- /dev/null +++ b/src/protocolreference.tex @@ -0,0 +1,3 @@ +\chapter{Protocol Reference} +\label{app:protref} + diff --git a/src/references.bib b/src/references.bib new file mode 100755 index 0000000..d170e44 --- /dev/null +++ b/src/references.bib @@ -0,0 +1,66 @@ +@misc{oldunreal1, + author = {Brandon ``GreenMarine'' Reinhart}, + title = {All you ever wanted to know about the Master Uplink settings in Unreal - IpServer Package for Unreal v1.0}, + howpublished = {Published on \url{http://www.oldunreal.com/wiki/index.php?title=All_you_ever_wanted_to_know_about_the_Master_Uplink_settings_in_Unreal_-_IpServer_Package_for_Unreal_v1.0} by SweetFrog}, + day = {14}, + month = {September}, + year = {1998}, + publisher = {Epic Games} +} + + +@misc{bu2008, + title = "{Lamespy master server down}", + author = "{Leo(T.C.K.)}", + howpublished = "{\url{https://forums.beyondunreal.com/threads/lamespy-master-server-down.180333/}}", + month = {September}, + year = {2008} +} + + +@misc{ou2008, + author = "{Mr.Minus}", + title = "{Master Server Down In Eastern US}", + year = {2008}, + month = {September}, + howpublished = "{\url{http://www.oldunreal.com/cgi-bin/yabb2/YaBB.pl?num=1221584697}}" +} + +@misc{nutt2014, + title = "{GameSpy ceasing all hosted services this May}", + author = {Christian Nutt}, + year = 2014, + month = {April}, + howpublished = "{\url{http://www.gamasutra.com/view/news/214700/GameSpy_ceasing_all_hosted_services_this_May.php}}" +} + +@misc{stapleton2013, + title = {Goodbye, And Thank You From The GameSpy Team}, + author = {Dan Stapleton}, + year = {2013}, + month = {February}, + howpublished = "{\url{http://pc.gamespy.com/articles/122/1227460p1.html}}" +} + +@misc{poole2014, + author = "{Wesley Yin-Poole}", + title = "{GameRanger battles to keep multiplayer alive after GameSpy server shutdown}", + howpublished = "{\url{http://www.eurogamer.net/articles/2014-05-07-gameranger-battles-to-keep-multiplayer-alive-after-gamespy-server-shutdown}}", + year = {2014}, + month = {May} +} + +@misc{epic2014, + title = "{UT3 Patch Allows You to Play After Gamespy Shutdown}", + author = "Stacey Conley", + howpublished = "{\url{https://www.epicgames.com/community/ut3-patch-allows-you-to-play-after-gamespy-shutdown}}", + year = {2014}, + month = {May} +} + +@misc{reddit1, + author = {jezek2}, + title = "{The Final List of Community Solutions for Gamespy Shutdown}", + year = {2015}, + howpublished = "{\url{https://www.reddit.com/r/Games/comments/2az5kf/the_final_list_of_community_solutions_for_gamespy/} }" +} diff --git a/src/revisions.tex b/src/revisions.tex new file mode 100755 index 0000000..3364e57 --- /dev/null +++ b/src/revisions.tex @@ -0,0 +1,3 @@ +\chapter*{Revisions} +\markboth{Revisions}\\ +table with date and changes. Until v1.0 ready: to-do list. diff --git a/src/serverlist.tex b/src/serverlist.tex new file mode 100755 index 0000000..d7c0a64 --- /dev/null +++ b/src/serverlist.tex @@ -0,0 +1,20 @@ +\chapter{Serverlist} +\label{chap:serverlist} + +introduction how game clients (``players'') get their list of servers. +\begin{figure}[h] + \centering + \includegraphics[width=\textwidth]{img/overview-cms} + \caption{Focus on interaction between client and masterserver }\label{fig:overviewcms} +\end{figure} + +interaction, secure/validate, requests, TCP +\\ +procedure. + + +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{img/client-exchange} + \caption{Interaction between client and masterserver over time.}\label{fig:client} +\end{figure} diff --git a/src/status.tex b/src/status.tex new file mode 100755 index 0000000..be0f264 --- /dev/null +++ b/src/status.tex @@ -0,0 +1,17 @@ +\chapter{Server status} +\label{chap:status} + +client-gameserver interaction. status, info, rules, relevant information, what purpose does it serve, etc\cite{oldunreal1}. + +\begin{figure}[h] + \centering + \includegraphics[width=\textwidth]{img/overview-cgs} + \caption{Focus on interaction between client and gameserver}\label{fig:overviewcgs} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=\textwidth]{img/status-exchange} + \caption{Interaction between client and gameserver over time.}\label{fig:status} +\end{figure} + diff --git a/src/titlepage.tex b/src/titlepage.tex new file mode 100755 index 0000000..266f4d3 --- /dev/null +++ b/src/titlepage.tex @@ -0,0 +1,34 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Cover +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{titlepage} +\begin{center} +\begin{minipage}{0.45\textwidth} + \begin{flushleft} +\textsc{2020} + \end{flushleft} +\end{minipage} +\begin{minipage}{0.45\textwidth} + \begin{flushright} +\textsc{Masterserver reference} + \end{flushright} +\end{minipage}\\[3cm] +{\large \bfseries 333networks}\\[1.8cm] +\includegraphics[width=0.8\textwidth]{./img/utlogo}\\[2cm] +\textsc{\large An introduction to the masterserver. }\\[3cm] +{\Large \bf Reference for heartbeats, serverlists, status and implementation.} +\vfill +\begin{minipage}{0.45\textwidth} + \begin{flushleft} +Darkelarious\\ +%Your name here\\ + \end{flushleft} +\end{minipage} +\begin{minipage}{0.45\textwidth} + \begin{flushright} +darkelarious@333networks.com\\ +%yourname@333networks.com\\ + \end{flushright} +\end{minipage}\\[1cm] +\end{center} +\end{titlepage} diff --git a/src/usermanual.tex b/src/usermanual.tex new file mode 100755 index 0000000..9fd0cfb --- /dev/null +++ b/src/usermanual.tex @@ -0,0 +1,4 @@ +\chapter{User Manual} +\label{app:usermanual} +Readable implementation of the README file. + diff --git a/src/website.tex b/src/website.tex new file mode 100755 index 0000000..af9f86d --- /dev/null +++ b/src/website.tex @@ -0,0 +1,7 @@ +\chapter{Website} +\label{chap:website} + +Addition to the concept of the masterserver: website. Browse before joining, browse without starting the game and querying all servers individually, providing a fast web reference.\\ +\\ +Provides additional interfaces: JSON api, ip lookup, verification, method of being added. some items implemented as masterserver function, but created for the website. + -- cgit v1.2.3