Vortrag für die GPN
[L-seed.git] / doc / GPN-Intro / Intro.tex
1 \documentclass[compress]{beamer}
2
3 \usetheme[footline=authortitle,compress]{GPN}
4 \usecolortheme{GPN}
5 \usepackage[german]{babel}
6 \usepackage[latin1]{inputenc}
7 \usepackage{tikz}
8 \usepackage{pgflibraryarrows}
9 \usepackage{colortbl}
10 \usepackage{listings}
11 \usepackage{pifont}
12 \usepackage{url}
13 \usepackage{hyperref}
14 \usepackage{wasysym}
15 \usepackage{amsmath}
16 \usepackage{textcomp}
17
18
19 % Listing-Definition
20 \lstset{language=Java,
21         basicstyle=\footnotesize,
22         breaklines,breakatwhitespace,prebreak=\Pisymbol{psy}{191},
23         texcl,
24         commentstyle=\color{blue},
25         stringstyle=\color{gray},
26         extendedchars=true,
27 }
28
29 \newcommand{\comp}{\leftmoon\!\!}
30
31 % \pause mit verstecken
32 \newcommand{\hide}{\onslide+<+(1)->}
33
34 \title{L-seed}
35 \author[Joachim Breitner]{Joachim Breitner}
36 \institute{\url{http://entropia.de/wiki/L-seed}}
37 %\titlegraphic{\includegraphics[width=45pt]{img/Logo}}
38 \date{26. Juni 2006}
39
40 \begin{document}
41
42 \frame[plain]{\titlepage}
43
44 %\frame{\frametitle{Unser Programm heute} \tableofcontents}
45
46 \section{Die Idee}
47 \subsection*{}
48
49 \begin{frame}
50 \frametitle{Vorbemerkung}
51 Vortragsfolien entstanden vorher, daher nicht besonders schick\dots
52 \end{frame}
53
54 \begin{frame}
55 \frametitle{Das Spiel}
56 \begin{itemize}
57 \item Dieses Jahr werden Pflanzen simuliert
58 \item Man programmiert in einer einfachen, \textit{nicht-turingmächtigen} Programmiersprache
59 \item Pflanzen können während dem Wachstum nicht beeinflusst werden
60 \item Das ganze soll chillig aussehen und sein
61 \item Es sollte schick anzusehen sein
62 \end{itemize}
63 \end{frame}
64
65 \begin{frame}
66 \frametitle{Verwendung}
67 \begin{itemize}
68 \item Auf \url{http://lseed.gpn8.entropia.de} registrieren
69 \item Dort munter Code schreiben
70 \item Integrierter Syntaxchecker!
71 \item Integrierte Vorschau!
72 \item Wenn zufrieden $\to$ als aktiv markieren
73 \item Zuschauen
74 \end{itemize}
75 \end{frame}
76
77 \begin{frame}
78 \frametitle{Die Regeln}
79 \begin{itemize}
80 \item Eine Pflanze besteht aus Zweigen, an deren Ende andere Zweige abstehen, und Blüten.
81 \item Wenn eine Pflanze gerade nicht wächst, wird \textbf{für jeden Zweig} gleichzeitig geschaut, welche Regel anwendbar ist
82 \item Regeln können abhängen von der Zweiglänge, der Größe des Teilbaums, der Richtung und des Usertags
83 \item Usertags sind Strings, die man an einen Branch hängen kann und auch ändern kann
84 \item Von allen anwendbaren Regen werden nur die mit höchster Prioriät betrachtet
85 \item Bei mehreren anwendbaren Regeln wird zufällig und ggf. gewichtet gewählt
86 \end{itemize}
87 \end{frame}
88
89 \begin{frame}
90 \frametitle{Die Regelaktionen}
91 Eine Regel gibt eine von drei Aktionen an:
92 \begin{itemize}
93 \item Wachsen
94 \begin{itemize}
95 \item mit absolut angegebener Zielgröße, absolutem Zuwachs und relativem Zuwachs
96 \end{itemize}
97 \item Abzweigen
98 \begin{itemize}
99 \item am Ende oder in der Mitte des Zweigs
100 \item ggf. mehrfach
101 \item in eine Richtung, relativ zum aktuellen Zweig
102 \item mit einer Länge für den neuen Zweig
103 \end{itemize}
104 \item Blühen, um Samen zu werfen
105 \end{itemize}
106 \end{frame}
107
108 \begin{frame}
109 \frametitle{Saisons}
110 \begin{itemize}
111 \item Eine Runde (Saison) dauert $n$ Tage à $m$ Minuten
112 \item Am Anfang werden alle (aktiven, gültigen) Genome geladen
113 \item Neue Pflanzen bekommen ggf. aktualisierten Code
114 \item Am Ende wird die Biomasse gezählt
115 \end{itemize}
116 \end{frame}
117
118
119 \begin{frame}
120 \frametitle{Licht}
121 \begin{itemize}
122 \item Zum Wachsen braucht man Licht
123 \item Licht wird von den Zweigen eingefangen
124 \item Im Schatten gibt es weniger Licht
125 \item Je mehr Licht, desto schneller das Wachstum
126 \item Alles aktuelles Wachstum findet gleichzeitig statt und wird gleichzeitig beendet
127 \end{itemize}
128 \end{frame}
129
130
131 \section{Beispiele}
132 \subsection*{}
133
134 \begin{frame}[fragile]
135 \frametitle{Die triviale Pflanze}
136 \begin{lstlisting}
137 // This is the trivial plant, which just grows and grows
138 RULE "Very simple Rule"
139 GROW BY 1
140 \end{lstlisting}
141 \pause
142 Man sieht:
143 \begin{itemize}
144 \item Java-Style-Kommentare
145 \item Whitespace ist unsignifikant
146 \item Strings in Anführungszeichen oder einfach ein Wort
147 \end{itemize}
148 \end{frame}
149
150 \begin{frame}[fragile]
151 \frametitle{Branching}
152 \begin{lstlisting}
153 Rule "Growing"
154 Grow by 2
155 Weight 2
156
157 Rule "Right"
158 Branch At 50% Angle = 45°, Length = 1
159 Weight 1
160
161 Rule "Left"
162 Branch At 100% Angle = -45°, Length = 1
163 Weight 1
164 \end{lstlisting}
165 \pause
166 Man sieht:
167 \begin{itemize}
168 \item Verwendung von Gewichten
169 \end{itemize}
170 \end{frame}
171
172 \begin{frame}[fragile]
173 \frametitle{Regel-Bedingungen}
174 \begin{lstlisting}
175 Rule "Start"
176 WHEN Length <= 0
177 BRANCH AT 100% ANGLE = 30°, LENGTH = 0.5
178                ANGLE = -30°, LENGTH = 0.5
179 RULE "Links"
180 WHEN Direction > 0 AND Direction < 140°
181 BRANCH AT 100% ANGLE = 30°, LENGTH = 0.5
182 RULE "Zurück"
183 WHEN Direction >= 140°
184 BRANCH AT 100% ANGLE = -120°, LENGTH = 0.5
185 RULE "Rechts"
186 WHEN Direction < 0 AND Direction > -140°
187 BRANCH AT 100% ANGLE = -30°, LENGTH = 0.5
188 RULE "Zurück"
189 WHEN Direction <= -140°
190 BRANCH AT 100% ANGLE = 120°, LENGTH = 0.5
191 \end{lstlisting}
192 \end{frame}
193
194 \begin{frame}[fragile]
195 \frametitle{Usertags}
196 \begin{lstlisting}
197 RULE "Start" WHEN Length <= 0
198 GROW BY 1 SET TAG = "Root1"
199
200 RULE "Story 1" WHEN TAG = "Root1"
201 BRANCH ANGLE = 70°, LENGTH = 2, Tag = ""
202        ANGLE = -70°, LENGTH = 2, Tag = ""
203        ANGLE = 0°, LENGTH = 1, TAG = "Root2"
204 SET TAG = ""
205 RULE "Story 2" WHEN TAG = "Root2"
206 BRANCH AT 100% ANGLE = 70°, LENGTH = 1.5, Tag = ""
207                ANGLE = -70°, LENGTH = 1.5, Tag = ""
208                ANGLE = 0°, LENGTH = 1, TAG = "Root3"
209 SET TAG = ""
210 RULE "Story 3" WHEN TAG = "Root3"
211 BRANCH AT 100% ANGLE = 70°, LENGTH = 1, Tag = ""
212                ANGLE = -70°, LENGTH = 1, Tag = ""
213                ANGLE = 0°, LENGTH = 1, TAG = "Tip"
214 SET TAG = ""
215 RULE "Star" WHEN TAG = "Tip" Blossom
216 \end{lstlisting}
217 \end{frame}
218
219 \begin{frame}
220 \frametitle{Usertags}
221 Man sah:
222 \begin{itemize}
223 \item Verwendung von Usertags
224 \item Zeilenumbrüche nicht relevant
225 \item Fortpflanzung
226 \end{itemize}
227 \end{frame}
228
229 \section{Und nun?}
230 \subsection*{}
231
232 \begin{frame}
233 \frametitle{Und nun?}
234 \begin{itemize}
235 \item Pflanzen wachsen lassen, die möglichst groß werden.
236 \item Pflanzen wachsen lassen, die möglichst schön sind.
237 \pause
238 \item Coden!
239 \begin{itemize}
240 \item Schönere Graphik (Haskell, Cairo, ggf. OpenGL)
241 \item Web-Frontend debuggen und aufmöbeln (etwa mehrere Pflanzen gleichzeitig bearbeiten)
242 (PHP, Javascript, ExtJs)
243 \item Sonstiges features
244 \end{itemize}
245 \item \url{http://git.nomeata.de/} bzw. \url{http://lseed.gpn8.entropia.de/git}
246 \end{itemize}
247 \end{frame}
248
249 \begin{frame}
250 \begin{center}
251 Fragen?
252 \end{center}
253 \end{frame}
254
255
256 \section*{\ } % hack to make my navi work
257 \setbeamercolor{normal text}{bg=black}
258 \frame[plain]{
259 \begin{center}  \includegraphics[height=\textheight]{Endbild}\end{center}
260 }
261
262 \end{document}