aboutsummaryrefslogtreecommitdiff
path: root/doc/tex
diff options
context:
space:
mode:
authorInigoGutierrez <inigogf.95@gmail.com>2021-01-24 20:47:26 +0100
committerInigoGutierrez <inigogf.95@gmail.com>2021-01-24 20:59:17 +0100
commitddde2a9a43daf870c26bef33f47abe45b414c3d0 (patch)
tree52576f8a97011f733360bc9904f1890867cd8bfd /doc/tex
downloadimago-ddde2a9a43daf870c26bef33f47abe45b414c3d0.tar.gz
imago-ddde2a9a43daf870c26bef33f47abe45b414c3d0.zip
First commit!
Diffstat (limited to 'doc/tex')
-rw-r--r--doc/tex/implementation.tex64
-rw-r--r--doc/tex/interface.tex6
-rw-r--r--doc/tex/introduction.tex16
-rw-r--r--doc/tex/previousWorks.tex21
-rw-r--r--doc/tex/tfg.tex60
5 files changed, 167 insertions, 0 deletions
diff --git a/doc/tex/implementation.tex b/doc/tex/implementation.tex
new file mode 100644
index 0000000..9e42313
--- /dev/null
+++ b/doc/tex/implementation.tex
@@ -0,0 +1,64 @@
+\section{Implementation}
+
+\subsection{Engine}
+
+An engine implementing GTP.\@ It is designed to be used by a software controller
+but can also be directly run, mostly for debugging purposes. Its design is shown
+in \fref{fig:engine}
+
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=\textwidth]{diagrams/gtpEngine.png}
+ \caption{Design of the GTP engine.}\label{fig:engine}
+ \end{center}
+\end{figure}
+
+\subsection{Modules}
+
+One module to store the state of the game and the game tree. One module to parse
+moves. One module to read and write SGF files. Modules are shown in
+\fref{fig:modules}.
+
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=\textwidth]{diagrams/modules.png}
+ \caption{Modules.}\label{fig:modules}
+ \end{center}
+\end{figure}
+
+\subsection{Representation of a match}
+
+Strictly said, a match is composed of a series of moves. But since game review
+and variants exploration is an important part of Go learing, \program{} allows
+for navigation back and forth through the board states of a match and for new
+variants to be created from each of these board states. Therefore, a match is
+represented as a tree of moves. The state of the game must also be present so
+liberties, captures and legality of moves can be addressed, so it is represented
+with its own class, which holds a reference both to the game tree and the
+current move. This classes and their relationship can be seen in
+\fref{fig:gameRepresentation}.
+
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=0.7\textwidth]{diagrams/gameRepresentation.png}
+ \caption{A game is represented as a tree of moves.}\label{fig:gameRepresentation}
+ \end{center}
+\end{figure}
+
+\subsection{SGF}
+
+To parse SGF files a lexer and parser have been implemented using PLY.\@ The
+result of the parsing is an AST (Annotated Syntax Tree) reflecting the contents
+of the text input, each node with zero or more properties, and with the ability
+to convert themselves and their corresponding subtree into a GameTree. This is
+done for the root node, since from the SGF specification there are some
+properties only usable in the root node, like those which specify general game
+information and properties such as rank of players or komi. These components are
+shown in \fref{fig:sgfModule}.
+
+\begin{figure}[h]
+ \begin{center}
+ \includegraphics[width=\textwidth]{diagrams/sgfModule.png}
+ \caption{Components of the SGF file parsing module.}\label{fig:sgfModule}
+ \end{center}
+\end{figure}
diff --git a/doc/tex/interface.tex b/doc/tex/interface.tex
new file mode 100644
index 0000000..9caa78d
--- /dev/null
+++ b/doc/tex/interface.tex
@@ -0,0 +1,6 @@
+\section{Interface}
+
+\subsection{Importing and exporting games}
+
+The format chosen to read and write games is SGF (Smart Game Format). It is a
+widely used text format which allows for variants, comments and other metadata.
diff --git a/doc/tex/introduction.tex b/doc/tex/introduction.tex
new file mode 100644
index 0000000..6defbd9
--- /dev/null
+++ b/doc/tex/introduction.tex
@@ -0,0 +1,16 @@
+\section{Introduction}
+
+\begin{displayquote}
+ Go is an ancient game which, from its forgotten origins in China, spread first
+ to the rest of East Asia, and then to the entire world. How ancient? Historians
+ aren't sure; it has a definite history of over 3000 years, but according to
+ tradition Go was invented more than 4000 years ago. The English name comes from
+ the Japanese name Igo, which means ``surrounding boardgame''.
+
+ In this game, each player tries to use threats of death, capture, or isolation
+ to assert control over more of the board than his opponent. An abstract strategy
+ game at heart, Go has nonetheless been interpreted as a stylized representation
+ of fighting a war, settling a frontier, cornering a market, thrashing out an
+ argument, or even of fortune-telling and prophecy. Go has always been one of the
+ most played games in the world. \parencite{sl_go}
+\end{displayquote}
diff --git a/doc/tex/previousWorks.tex b/doc/tex/previousWorks.tex
new file mode 100644
index 0000000..6ba5dce
--- /dev/null
+++ b/doc/tex/previousWorks.tex
@@ -0,0 +1,21 @@
+\section{Previous works}
+
+\subsection{SGF}
+
+SGF (\textit{Smart Go Format} or \textit{Smart Game Format}) is a text file
+format specification for records of games or even collections of them. It was
+devised for Go but it supports other games with similar turns structure. It
+supports move variations, annotations, setups and game metadata. By supporting
+SGF, our application can be used to analyse existing games registered by other
+applications, such as those played on online Go servers.
+
+The SGF specification can be found at
+\url{https://www.red-bean.com/sgf/user_guide/index.html}
+
+\subsection{GTP}
+
+GTP (\textit{Go Text Protocol}) is a text based protocol for communication with
+computer go programs. [ref https://www.lysator.liu.se/~gunnar/gtp/] It is the
+protocol used by GNU Go and the more modern and powerful KataGo. By supporting
+GTP, our application can be used with existing GUIs and other programs, making
+it easier to use it with the tools users are already familiar with.
diff --git a/doc/tex/tfg.tex b/doc/tex/tfg.tex
new file mode 100644
index 0000000..9248748
--- /dev/null
+++ b/doc/tex/tfg.tex
@@ -0,0 +1,60 @@
+\documentclass{article}
+
+\usepackage{geometry}
+\usepackage{graphicx}
+\usepackage{booktabs}
+\usepackage{hyperref}
+\usepackage{csquotes}
+
+\usepackage[backend=biber, style=numeric-comp]{biblatex}
+\addbibresource{/home/taamas/docs/biber.bib}
+
+\geometry{left=4.5cm,top=2cm,bottom=2cm,right=4.5cm}
+
+\hypersetup{colorlinks=true,
+ linkcolor=black,
+ filecolor=magenta,
+ urlcolor=black,
+ bookmarks=true
+}
+
+\urlstyle{mono}
+
+%\renewcommand{\contentsname}{Contenidos}
+%\renewcommand{\figurename}{Figura}
+
+\newcommand{\program}{Go-AI}
+
+\newcommand{\inputtex}[1]{\input{tex/#1}}
+\newcommand{\fref}[1]{Fig.~\ref{#1}}
+%\newcommand{\uurl}[1]{\underline{\url{#1}}}
+
+\begin{document}
+
+\frenchspacing
+
+\title{\program}
+
+\author{Íñigo Gutiérrez Fernández}
+
+\date{}
+
+\maketitle
+
+\begin{abstract}
+ This is the abstract.
+\end{abstract}
+
+\tableofcontents
+
+\inputtex{introduction.tex}
+
+\inputtex{previousWorks.tex}
+
+\inputtex{interface.tex}
+
+\inputtex{implementation.tex}
+
+\printbibliography{}
+
+\end{document}