Benutzer:Andyk/Mitschriften/Projekttagebuch: Unterschied zwischen den Versionen

Aus Philo Wiki
Wechseln zu:Navigation, Suche
(Ansatz für unser Projekt: comment)
K (syntax: Inform-Code)
 
(22 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 32: Zeile 32:
 
== Inform7-Implementierungsentwurf ==
 
== Inform7-Implementierungsentwurf ==
 
[[Bild:SeinUndSchein.png|thumbnail|Klassendiagramm über wichtige  Stellen von Glaukons Argumentation]]
 
[[Bild:SeinUndSchein.png|thumbnail|Klassendiagramm über wichtige  Stellen von Glaukons Argumentation]]
 +
'''UPDATE:''' Es gibt eine [http://phaidon.philo.at/viewvc/Probegalopp/SeinUndSchein2.inform/Source/story.ni?view=markup|neue Version von "Sein und Schein"], wo die Auswahl der Spielfigur implementiert ist.
 +
 +
 
* Ich habe  [http://phaidon.philo.at/viewvc/Probegalopp/SeinUndSchein.inform/ im Probegalopp-SVN-Verzeichnis] das Modell, das ich allgemein in Form eines Klassendiagramms dargestellt habe, versucht in Inform7 zu implementieren. Das Ganze ist noch nicht sehr anspruchsvoll und hat keine Handlung. Ein paar Bemerkungen dazu:
 
* Ich habe  [http://phaidon.philo.at/viewvc/Probegalopp/SeinUndSchein.inform/ im Probegalopp-SVN-Verzeichnis] das Modell, das ich allgemein in Form eines Klassendiagramms dargestellt habe, versucht in Inform7 zu implementieren. Das Ganze ist noch nicht sehr anspruchsvoll und hat keine Handlung. Ein paar Bemerkungen dazu:
 
* Es gibt einen Status der Gerechtigkeit, der einen der folgenden Werte annehmen kann: gerecht, ungerecht, unentschieden, neutral.
 
* Es gibt einen Status der Gerechtigkeit, der einen der folgenden Werte annehmen kann: gerecht, ungerecht, unentschieden, neutral.
Zeile 57: Zeile 60:
 
** Man könnte ab einer bestimmten Anzahl an Versuchen, entgegen seinem Sein zu handeln, das Sein der Spielerin verändern (von Gerecht auf Ungerecht und vice versa). Auch das könnte man mitzählen (nicht implementiert).
 
** Man könnte ab einer bestimmten Anzahl an Versuchen, entgegen seinem Sein zu handeln, das Sein der Spielerin verändern (von Gerecht auf Ungerecht und vice versa). Auch das könnte man mitzählen (nicht implementiert).
 
** Das wäre ein kleines Motivationsspiel für die Frage der Gerechtigkeit, die dann im Staat mit dem Aspekt der Erziehung und der Gemeinschaft beleuchtet wird.
 
** Das wäre ein kleines Motivationsspiel für die Frage der Gerechtigkeit, die dann im Staat mit dem Aspekt der Erziehung und der Gemeinschaft beleuchtet wird.
 +
 
== 'einen Staat in einem Denkentwurf entstehen lassen' [369a] ==
 
== 'einen Staat in einem Denkentwurf entstehen lassen' [369a] ==
 
Im Folgenden ein paar Überlegungen und Aspekte, die mir im zweiten Buch bei der Entstehung des Staates (ab ca. 369a) aufgefallen sind:
 
Im Folgenden ein paar Überlegungen und Aspekte, die mir im zweiten Buch bei der Entstehung des Staates (ab ca. 369a) aufgefallen sind:
Zeile 79: Zeile 83:
  
 
::<span style='color:#044'>Zwei unterschiedliche Plots, ja, aber nicht prinzipiell unvereinbar. Es würden sich bestimmt Möglichkeiten finden lassen. Recht trivial wäre zum Beispiel, die Gyges-Geschichte als einleitende Traumsequenz zu behandeln, aus der die Spielerin am Beginn des eigentlichen Spiels dann erwacht, nachdem sie einen ersten Denkanstoß zur Gerechtigkeit bekommen hat. Das soll natürlich nicht heißen, dass ich auf der Gyges-Geschichte beharren möchte, es ist nur eine sehr schön modellierbare Geschichte, die Platon uns da auf dem Silbertablett serviert, und als Einstieg vielleicht ganz brauchbar.</span> --[[Benutzer:Thai|Thai]] 11:20, 19. Mär. 2009 (UTC)
 
::<span style='color:#044'>Zwei unterschiedliche Plots, ja, aber nicht prinzipiell unvereinbar. Es würden sich bestimmt Möglichkeiten finden lassen. Recht trivial wäre zum Beispiel, die Gyges-Geschichte als einleitende Traumsequenz zu behandeln, aus der die Spielerin am Beginn des eigentlichen Spiels dann erwacht, nachdem sie einen ersten Denkanstoß zur Gerechtigkeit bekommen hat. Das soll natürlich nicht heißen, dass ich auf der Gyges-Geschichte beharren möchte, es ist nur eine sehr schön modellierbare Geschichte, die Platon uns da auf dem Silbertablett serviert, und als Einstieg vielleicht ganz brauchbar.</span> --[[Benutzer:Thai|Thai]] 11:20, 19. Mär. 2009 (UTC)
 +
 +
:::<span style='color:#800000'>Nach dem, was wir heute über 392b besprochen haben, müßte die Verbindung eigentlich darin bestehen, daß der Spieler eine Theaterintendantin ist, die im platonischen Staat ein Stück über Gyges aufführen möchte. --[[Benutzer:H.A.L.|H.A.L.]] 21:06, 19. Mär. 2009 (UTC)</span>
  
 
== Ausblick: Was mich noch interessiert ==
 
== Ausblick: Was mich noch interessiert ==
Zeile 173: Zeile 179:
 
* In Inform7 gibt es dieses Konzept meines Wissens nach nicht in dem genauen Sinn, da man bestimmte 'actions' auch dazu verwenden kann, 'properties' von anderen 'things' (Objekten) verändern kann. Anders gesagt: Man kann die 'actions' nicht einem 'thing' zurechnen – die actions in Inform7 bestehen eigenständig neben den Dingen in der Welt.
 
* In Inform7 gibt es dieses Konzept meines Wissens nach nicht in dem genauen Sinn, da man bestimmte 'actions' auch dazu verwenden kann, 'properties' von anderen 'things' (Objekten) verändern kann. Anders gesagt: Man kann die 'actions' nicht einem 'thing' zurechnen – die actions in Inform7 bestehen eigenständig neben den Dingen in der Welt.
  
== Beispiel, wie man das in Inform7 implementiern könnte ==
+
== Beispiel, wie man das in Inform7 implementieren könnte ==
 
Verfügbar [http://phaidon.philo.at/viewvc/Probegalopp/book.inform/ im Probegalopp-SVN-Verzeichnis]
 
Verfügbar [http://phaidon.philo.at/viewvc/Probegalopp/book.inform/ im Probegalopp-SVN-Verzeichnis]
  
Zeile 179: Zeile 185:
 
* Buch-Definition:
 
* Buch-Definition:
 
** Über einen Umweg: Ein Buch ist ein Gerät.
 
** Über einen Umweg: Ein Buch ist ein Gerät.
<source lang="inform">A book is a kind of device.
+
<code>A book is a kind of device.
 
A book has a text called title. The title of a book is usually "".
 
A book has a text called title. The title of a book is usually "".
 
A book has a text called color. The color of a book is usually "gray".
 
A book has a text called color. The color of a book is usually "gray".
Zeile 188: Zeile 194:
 
It is made of [material]. There are [italic type][content][roman type] in it.
 
It is made of [material]. There are [italic type][content][roman type] in it.
 
[if the noun is switched on]The book is open and I can see  
 
[if the noun is switched on]The book is open and I can see  
[a list of pages which are part of the noun].[end if]".</source>
+
[a list of pages which are part of the noun].[end if]".</code>
  
 
* Ein Buch hat zwei Seiten (eine linke und eine rechte)
 
* Ein Buch hat zwei Seiten (eine linke und eine rechte)
<source lang="inform">The side is a kind of value.
+
<code>The side is a kind of value.
 
The plural of side is sides.
 
The plural of side is sides.
 
The sides are left and right and none.
 
The sides are left and right and none.
Zeile 219: Zeile 225:
 
A left page is part of every book.
 
A left page is part of every book.
 
A right page is part of every book.
 
A right page is part of every book.
</source>
+
</code>
  
 
=== Actions ===
 
=== Actions ===
 
* Benutzereingaben mit Aktionen verknüpfen:
 
* Benutzereingaben mit Aktionen verknüpfen:
<source lang="inform">Understand "browse [something]" as browsing.
+
<code>Understand "browse [something]" as browsing.
 
Understand "open [book]" as switching on.
 
Understand "open [book]" as switching on.
Understand "read [something]" as reading.</source>
+
Understand "read [something]" as reading.</code>
  
 
==== Lesen ====
 
==== Lesen ====
<source lang="inform">Reading is an action applying to one visible thing.
+
<code>Reading is an action applying to one visible thing.
  
 
Check reading:
 
Check reading:
Zeile 245: Zeile 251:
  
 
Report reading:
 
Report reading:
say "To read more, I have to browse.".</source>
+
say "To read more, I have to browse.".</code>
  
 
==== Weiterblättern ====
 
==== Weiterblättern ====
<source lang="inform">Browsing is an action applying to one visible thing.
+
<code>Browsing is an action applying to one visible thing.
  
 
Check browsing:
 
Check browsing:
Zeile 268: Zeile 274:
 
Let L be the list of pages which are part of the noun;
 
Let L be the list of pages which are part of the noun;
 
repeat with item running through L:
 
repeat with item running through L:
increase the page number of item by 2.</source>
+
increase the page number of item by 2.</code>
  
 
=== Test-Welt ===
 
=== Test-Welt ===
Zeile 274: Zeile 280:
 
* Die Wand ist nur eine Spielerei
 
* Die Wand ist nur eine Spielerei
  
<source lang="inform">The house is a room.
+
<code>The house is a room.
  
 
The wall is a backdrop. The wall is everywhere.  
 
The wall is a backdrop. The wall is everywhere.  
Zeile 286: Zeile 292:
 
The blueBrowser is a book in the house.
 
The blueBrowser is a book in the house.
 
The color of the blueBrowser is "blue".
 
The color of the blueBrowser is "blue".
The title of the blueBrowser is "Helmut Balzert: methods of object-oriented system analysis".</source>
+
The title of the blueBrowser is "Helmut Balzert: methods of object-oriented system analysis".</code>
  
 
=== Test-Kommandos ===
 
=== Test-Kommandos ===
 
* Platon oder Balzert lesen
 
* Platon oder Balzert lesen
<source lang="inform">test readPlaton with "x yellowBrowser / open yellowBrowser / x yellowBrowser /  
+
<code>test readPlaton with "x yellowBrowser / open yellowBrowser / x yellowBrowser /  
 
read yellowBrowser / browse yellowBrowser /  
 
read yellowBrowser / browse yellowBrowser /  
 
read yellowBrowser / browse yellowBrowser / read yellowBrowser"
 
read yellowBrowser / browse yellowBrowser / read yellowBrowser"
Zeile 296: Zeile 302:
 
test readBalzert with "x blueBrowser / browse blueBrowser / open blueBrowser / x blueBrowser /  
 
test readBalzert with "x blueBrowser / browse blueBrowser / open blueBrowser / x blueBrowser /  
 
read browser / browse blueBrowser / browse blueBrowser /  
 
read browser / browse blueBrowser / browse blueBrowser /  
x blueBrowser / read blueBrowser".</source>
+
x blueBrowser / read blueBrowser".</code>
  
 
== Zusammenfassung und Ausblick ==
 
== Zusammenfassung und Ausblick ==
Zeile 310: Zeile 316:
 
  |-
 
  |-
 
  | style="background:#FFEBAD;" |'''Objekt'''  
 
  | style="background:#FFEBAD;" |'''Objekt'''  
  | align ="center" style="background:#E8E8E8;" |thing
+
  | align ="center" style="background:#E8E8E8;" |Instanz von thing, room, direction, region
 
  | style="background:#E8E8E8;" |einzelner Gegenstand des Interesses
 
  | style="background:#E8E8E8;" |einzelner Gegenstand des Interesses
 
  | align ="center" style="background:#E8E8E8;" |das gelbe Platon-Buch
 
  | align ="center" style="background:#E8E8E8;" |das gelbe Platon-Buch
Zeile 316: Zeile 322:
 
  |-
 
  |-
 
  | style="background:#FFEBAD;" |'''Klasse'''  
 
  | style="background:#FFEBAD;" |'''Klasse'''  
  | align ="center" style="background:#E8E8E8;" |kind
+
  | style="background:#E8E8E8;" |Basisklassen:<br>
 +
<ul>
 +
<li>thing</li>
 +
<li>room</li>
 +
<li>direction</li>
 +
<li>region</li>
 +
</ul>
 
  | style="background:#E8E8E8;" |beschreibt die Menge von Objekten mit gemeinsamen Attributen und Operationen
 
  | style="background:#E8E8E8;" |beschreibt die Menge von Objekten mit gemeinsamen Attributen und Operationen
 
  | align ="center" style="background:#E8E8E8;" |Buch
 
  | align ="center" style="background:#E8E8E8;" |Buch
  | style="background:#E8E8E8;" |
+
  | style="background:#E8E8E8;" |Neue Klassen mit <br><code>kind of <bekannte Klasse></code> ableiten
 
|-
 
|-
 
  | style="background:#FFEBAD;" |'''Attribut'''  
 
  | style="background:#FFEBAD;" |'''Attribut'''  
Zeile 325: Zeile 337:
 
  | style="background:#E8E8E8;" |beschreibt eine Eigenschaft einer Klasse  
 
  | style="background:#E8E8E8;" |beschreibt eine Eigenschaft einer Klasse  
 
  | align ="center" style="background:#E8E8E8;" |Buchtitel
 
  | align ="center" style="background:#E8E8E8;" |Buchtitel
  | style="background:#E8E8E8;" |Beim konkreten Objekt wird jedem Attribut ein Wert aus dem in der Klasse definierten Wertebereich zugewiesen.  
+
  | style="background:#E8E8E8;" |Beim konkreten Objekt wird jedem Attribut (property) ein Wert aus dem in der Klasse definierten Wertebereich (kind of value) zugewiesen.  
 
|-
 
|-
 
  | style="background:#FFEBAD;" |'''Operation'''  
 
  | style="background:#FFEBAD;" |'''Operation'''  
Zeile 333: Zeile 345:
 
  | style="background:#E8E8E8;" |In Inform7 nicht innerhalb der Objekte, sondern eigenständig  (in der Luft hängend) zu definieren. Besser ist IMHO zu sagen, dass es kein wirkliches Äquivalent zu Operationen in Inform7 gibt.
 
  | style="background:#E8E8E8;" |In Inform7 nicht innerhalb der Objekte, sondern eigenständig  (in der Luft hängend) zu definieren. Besser ist IMHO zu sagen, dass es kein wirkliches Äquivalent zu Operationen in Inform7 gibt.
 
|}
 
|}
 +
 +
 +
<div align="center">'''''Zu dieser Tabelle vergleiche die [[Benutzer_Diskussion:Andyk/Mitschriften/Projekttagebuch#Session_3:_Objektorienterte_Analyse_.28_24.02.2009_.29|Diskussion]].'''''</div>
 +
  
 
* Anmerkung: Wie sich das gesamte Objektorientierte Konzept zu dem 'rules' in Inform7 verhält, muss noch eigens erörtert werden (da ich die 'rules' noch nicht ganz verstanden habe).
 
* Anmerkung: Wie sich das gesamte Objektorientierte Konzept zu dem 'rules' in Inform7 verhält, muss noch eigens erörtert werden (da ich die 'rules' noch nicht ganz verstanden habe).
Zeile 343: Zeile 359:
 
<div align="center"> --> '''[[Benutzer:Andyk/Mitschriften/Technische I7-Auseinandersetzungen|Technische I7-Auseinandersetzungen]]''' <--</div>
 
<div align="center"> --> '''[[Benutzer:Andyk/Mitschriften/Technische I7-Auseinandersetzungen|Technische I7-Auseinandersetzungen]]''' <--</div>
  
= Session 5: Rahmenstruktur (11.03.2009) =
+
= Session 5: Rahmenstruktur (11. - 19.03.2009) =
 
== Motivation für diese Session ==
 
== Motivation für diese Session ==
 
Nachdem die Technischen Auseinandersetzungen mir einen Überblick über die Möglichkeiten von I7 gegeben haben, ist es nun höchste Zeit, mit meinem Vorhaben fortzufahren. Ich wollte nämlich bereits in Session 3 „eine Rahmenstruktur vorschlagen, die wir beim Lesen von Platons „Der Staat“ für das Erarbeiten der Inform7-Welt verwenden können“. Die Vorarbeiten dazu sind geschehen und beantworten folgende zwei Fragen:
 
Nachdem die Technischen Auseinandersetzungen mir einen Überblick über die Möglichkeiten von I7 gegeben haben, ist es nun höchste Zeit, mit meinem Vorhaben fortzufahren. Ich wollte nämlich bereits in Session 3 „eine Rahmenstruktur vorschlagen, die wir beim Lesen von Platons „Der Staat“ für das Erarbeiten der Inform7-Welt verwenden können“. Die Vorarbeiten dazu sind geschehen und beantworten folgende zwei Fragen:
Zeile 355: Zeile 371:
 
Man könnte sich über die vielen einleitenden Sessions (das ist nun schon die Fünfte) wundern, die noch nicht sehr viele inhaltlichen Aspekte dabei hat. Eine kleine Rechtfertigung: Wenn man ein IF alleine schreibt, muss man sich über all diese Regelungen nicht viele Gedanken machen (Man überlegt und programmiert quasi-parallel). Sobald man aber eine Welt gemeinschaftlich aufbauen will, die viele inhaltlichen Zusammenhänge abbildet und wo man nicht einfach drauf los programmieren kann, muss man sich überlegen, wie man die Bestandteile der Welt kurz beschreibt. Man beginnt auf einer high-level-Perspektive und kann immer detaillierter und schlussendlich zum I7-Code gehen (Klar wird man manchmal auch I7-Code ausprobieren...). Die Hoffnung, das alles mit der klassischen Objektorientierten Modellierungsmethode zu machen, ist in Session 3 unrealistisch geworden, da Inform7 in wichtigen Teilen nicht objektorientiert ist.
 
Man könnte sich über die vielen einleitenden Sessions (das ist nun schon die Fünfte) wundern, die noch nicht sehr viele inhaltlichen Aspekte dabei hat. Eine kleine Rechtfertigung: Wenn man ein IF alleine schreibt, muss man sich über all diese Regelungen nicht viele Gedanken machen (Man überlegt und programmiert quasi-parallel). Sobald man aber eine Welt gemeinschaftlich aufbauen will, die viele inhaltlichen Zusammenhänge abbildet und wo man nicht einfach drauf los programmieren kann, muss man sich überlegen, wie man die Bestandteile der Welt kurz beschreibt. Man beginnt auf einer high-level-Perspektive und kann immer detaillierter und schlussendlich zum I7-Code gehen (Klar wird man manchmal auch I7-Code ausprobieren...). Die Hoffnung, das alles mit der klassischen Objektorientierten Modellierungsmethode zu machen, ist in Session 3 unrealistisch geworden, da Inform7 in wichtigen Teilen nicht objektorientiert ist.
  
== Überblick ==
+
== Ausgelagert ==
 
+
Da die Seite zu groß wurde, hab ich die Überlegungen bezüglich der Rahmenstruktur ausgelagert:
Ich möchte mir kurz überlegen, welche Elemente in einer Interactive Fiction vorkommen können (oder manchmal: müssen). Wenn man die Elemente kennt, muss man sich fragen…:
 
* wie man die Elemente näher beschreiben kann (descriptions, initial appearances, properties, …),
 
* in welche Struktur(en) sie eingebettet sind (Actions, Rules, Scenes, Relationen,…) und
 
* wie die Struktur genau ausschaut (To-Phrasen, Aktivitäten, Algorithmen, Schleifen, ...).
 
 
 
=== Über die Sinnhaftigkeit einer Rahmenstruktur ===
 
Natürlich kann man einwenden, dass die geistige Flexibilität durch eine solche Rahmenstruktur eingeschränkt wird, da man dem Inhalt durch sie bereits voreingenommen entgegentritt. Andererseits ist der Einsatz einer solchen Struktur verständlich: Sie ermöglicht die Umsetzung durch ein Minimum an Kompatibilität zwischen inhaltlichen Überlegungen und technischen Einschränkungen. Mein Lösungsvorschlag aus diesem Dilemma: Die Rahmenstruktur aus Sicht jener Struktur, die sich aus den inhaltlichen Überlegungen ergibt, in Frage stellen und (falls I7 uns das erlaubt) anpassen.
 
 
 
Es folgt nun also der '''<font color="maroon">Versuch, I7-Konzepte in Elemente, Elementspezifikationen, Strukturen, Strukturspezifikationen einzuteilen</font>'''. Wir sollten prüfen, ob das eine viable Einteilung und Auflistung ist:
 
 
 
== Elemente ==
 
(eine vollständige Auflistung der Elemente und auch der Elementspezifikationen findet man in der I7-Entwicklungsumgebung unter INDEX / KINDS. Ich habe versucht, die wichtigsten zusammenzufassen)
 
 
 
* '''Räumliche Struktur:''' room, region, door
 
 
 
* '''Zeug:''' thing, supporter, container, device, <other kinds>
 
  
* '''Kulisse:''' scenery, backdrop
+
'''<div align="center">--> [[Benutzer:Andyk/Mitschriften/Inform_7_Rahmenstruktur|Zur Rahmenstruktur]] <--</div>'''
  
* '''Akteure und Akteurzeug:''' person (man, woman, animal), player, player’s holdall, <actor>’s holdall
+
= Session 6: Inhaltliche Überlegungen (29.03.2009) =
 +
== Was ist eine platonische Fiktion? ==
 +
Nachdem die technischen Aspekte bezüglich der Möglichkeiten von I7 als auch die Frage, wie man die Inhalte mit Hilfe der (erweiterbaren) Rahmenstruktur in I7 umsetzen kann , halbwegs geklärt sind, wird es Zeit, Platon zu lesen und zu überlegen, wie eine platonische Fiktion im 21. Jahrhundert aussehen kann. Man könnte diese Phase aufteilen in:
 +
# Platon lesen und zentrale Prinzipien/Gesetzmäßigkeiten/Figuren herausdestillieren
 +
# Das Destillat auf die aktuellen Alltagserfahrungen beziehen/kritisieren
 +
# Ein Big-Picture des Plots mit Rätseln, Protagonisten, Aufgaben, Szenen, etc. entwickeln, das diesen Bezug konkret implementiert
 +
# Die Arbeitsgruppen arbeiten die Details unter Zuhilfenahme der Rahmenstruktur aus, einzelne Ergebnisse werden parallel in I7 implementiert
  
== Elementspezifikationen ==
+
Das wäre die strukturierte und nachvollziehbare Vorgehensweise. Wenn etwas mehr Zeit wäre, würde ich diese auch vorschlagen, denn es könnten daraus sogar mehrere spannende IF's hervorgehen. Da wir aber Ende Juni eine fertige IF fertig haben wollen, dürfte es sinnvoll sein, die Schritte 1-3 vermischt und spontan durchzuführen. Daher im Folgenden ein paar vermischte Überlegungen:
 +
== Buch 2: Die Abwesenheit von Tischen und Kuchen im Schweinestaat ==
 +
Zwischenbemerkung: Wo der Schweinestaat aus dem Boden gestampft wird, das ist so ein bisschen wie in Genesis oder eben Sim City, wo sich mit jedem Gedanken die Welt und ihr soziales Gefüge aufbaut.
  
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
+
== Überblick: Gesunder Staat VS. Üppiger Staat ==
|- style="background-color:#D8D8D8;font-size:11pt"
+
=== Was braucht man in einem Minimalstaat/Schweinestaat/Gesunden Staat? ===
|style="font-weight:bold" width="88" colspan="5" height="16" align="center" valign="center" | Spezifikation für Räume
+
;Grundbedürfnisse:
 +
* Nahrungsmittel / Bauer
 +
* Wohnungen / Baumeister
 +
* Kleider / Weber
 +
* Schuhe / Schuster
  
|- style="font-size:11pt"
+
;Durch Arbeitsteilung:
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="center" | Struktur
+
* Pflüge-Hacken-Werkzeuge / Schmied
|style="background-color:#D99795;font-weight:bold" align="center" valign="bottom" | Beispiel
+
* Tapezieren / Zimmermann
|style="background-color:#95B3D7;font-weight:bold" colspan="2" rowspan="2" align="center" | I7-Codebeispiel
+
* Weidevieh / Rinder-&Schafhirten
 +
* Handelsware / Handelsherren
 +
* Schiffe / Seefahrer
 +
* Händler / Landesinterner Handel
 +
* Hilfsarbeiten / Lohnarbeiter
  
|- style="font-size:11pt"
+
;Im Gegensatz zum "Aufgeblähten Staat" haben sie keine:
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="center" | Property
+
* Zukost / Zukostbauern: Salz, Oliven, Käse, Zwiebel, Kohl, Feigen, Erbsen, Bohnen, Myrten, Eicheln, Wein
|style="background-color:#FAC090;font-style:Italic" align="center" valign="center" | Value
+
* Tische, Pölster,
|style="background-color:#D99795;font-style:Italic" align="center" valign="center" | Inhalt
+
* Gold, Weihrauch, Myrrhe
 +
* Freundinnen, Kuchen
 +
* Malerei, Stickerei,
 +
* Elfenbein
  
|- style="font-size:11pt"
+
=== Der Aufgeblähte Staat ===
|style="background-color:#FCD5B4" height="16" align="center" valign="center" | identifier
+
; neue Berufe
|style="background-color:#FCD5B4" align="center" valign="center" | in-code
+
* Jäger
|style="background-color:#E6B9B8" align="center" valign="center" | my house
+
* nachahmende Künstler: Dichter, Rhapsoden, Schaupeiler, Tänzer, Theaterdirektoren
|style="background-color:#C5D9F1" colspan="2" rowspan="7" align="center" valign="center" | <small><source lang="inform">My house is a dark room.
+
* Handwerker für ''weiblichen'' Schmuck
The map region of my house is Retz.
+
* Hilfskräfte wie: Erzieher, Ammen, Wärter''innen'', Zofen, Friseure, Fleisch- und Mehlspeisköche, Schweinehirten
Grandmas house is a lighted room in Retz.
+
* Mehr Ärzte, da schlechtere Lebensweise
My house is north of grandmas house.
+
* Heer der Wächter, die sonst keinen Beruf haben
The description of my house is
+
** wachsam
"Nice house with [windowcount] windows."
+
** kann auf den "Such!"-Befehl hören
The printed name of my house is "AKAdemie".
+
** kann auf den "Fass!"-Befehl hören,
My house has a number called windowcount.
+
** Tapfer, "mutvollen Herzens" VS. sanft zu Freunden
The windowcount of my house is 6.</source></small>
 
  
|- style="font-size:11pt"
+
== Bemerkung: >>Bei Zeus<< ==
|style="background-color:#FCD5B4" height="15" align="center" valign="center" | description
+
Ein kleine Forumulierung, die ich mir in meinen Gedanken ausgemalt habe: "Ganz natürlich, bei Zeus"  
|style="background-color:#FCD5B4" align="center" valign="center" | text
+
Diese oder eine ähnliche Formulierung  muss unbedingt in unsere IF... Man muss sich lebhaft vorstellen, wie Platon dem Sokrates eine Frage stellen lässt und Adeimantos antwortet auf die Frage; unsicher darüber, ob ihm jetzt wieder ein Kreuzverhör bevorsteht. Danach ein paar Sekunden Stille und es scheint, als ob Sokrates nun zu einem neuen Schlag ausholen würde.  
|style="background-color:#E6B9B8" align="center" valign="center" | "Nice house with...."
 
  
|- style="font-size:11pt"
+
Doch stattdessen platzt er mit einem leicht lehrerhaften Unterton "Ganz natürlich.... '''bei ZEUS!'''" heraus, als ob Adeimantos Antwort nicht ohnehin schon aus seiner Frage und der vorherigen Darlegung ersichtlich gewesen wäre. Ich muss dabei immer schmunzeln.
|style="background-color:#FCD5B4" height="15" align="center" valign="center" | printed name
 
|style="background-color:#FCD5B4" align="center" valign="cennter" | text
 
|style="background-color:#E6B9B8" align="center" valign="center" | "AKAdemie"
 
  
|- style="font-size:11pt"
+
Beispielstelle im zweiten Buch, wo er die Sache mit der Arbeitsteilung und der natürlichen Aufteilung der Talente das erste Mal entfaltet: 369d - 370b
|style="background-color:#FCD5B4" height="15" align="center" valign="center" | map region
 
|style="background-color:#FCD5B4" align="center" valign="center" | region
 
|style="background-color:#E6B9B8" align="center" valign="center" | Retz
 
  
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" align="center" valign="center" | lighted/dark
 
|style="background-color:#FCD5B4" align="center" valign="center" | either/or
 
|style="background-color:#E6B9B8" align="center" valign="center" | dark
 
  
|- style="font-size:9pt"
+
== Platokratie und nebenläufige Szenarien ==
|style="background-color:#FCD5B4" height="30" align="center" valign="center" | <new property><BR>windowcount
+
Vorhin kam bei der "Der Bulle von Tölz" folgende Szene, die mir eine Idee entlockt hat:
|style="background-color:#FCD5B4" align="center" valign="center" | <some value><BR>number
+
* Zwei der Protagonisten dieser Episode lieferten sich ein Gefecht aus Bibelzitaten, sozusagen auf die Art: Wer versteht den Herrn besser?
|style="background-color:#E6B9B8" align="center" | 6
 
  
|- style="font-size:9pt"
+
;Zwei, drei Ansätze dazu:
|style="background-color:#FCD5B4" height="31" align="center" | is <D> of <R>
 
|style="background-color:#FCD5B4" align="center" | <D>… Direction<BR><R>… Room
 
|style="background-color:#E6B9B8" align="center" | is north of grandmas house
 
  
|}
+
* Als kleine Zwischensequenz in unserer IF könnte man - je nachdem wie unser Main-Plot konkret ausschaut - einen NPC einrichten, der einem nur weiterhilft (z.B. eine Tür öffnet oder einen Gegenstand gibt), wenn man Platons Werk gut kennt und Inkonsequenzen in der Implementierung (Diskrepanz zwischen fiktiver und idealer in der Politeia beschriebenen Welt) aufzeigt.
  
 +
* Man könnte - das wäre eine Radikalisierung der Idee - die fiktionale Welt als [http://de.wikipedia.org/wiki/Gottesstaat Gottesstaat] aufbauen, nur eben mit Platons Werk als Basis/Bibel. Ein Realstaat - auch wenn er nur fiktional implementiert ist - ist ja nie ganz perfekt (weil man den Text deuten und jene Bereiche, die im Text nicht oder nur vage vorkommen, sinngemäß einrichten muss).
  
 +
In beiden Fällen (Zwischensequenz oder Radikalisierung) kann man dort nicht nur direkte Inkonsequenzen mit Platons Text aufzeigen, sondern auch Meinungsverschiedenheiten unseres Teams. Das meine ich folgendermaßen: Es kann ja sein, dass wir unterschiedliche Vorstellungen, wie man die IF aufbauen muss, haben, dass aber im Team beschlossen wird, eine bestimmte Vorstellung umzusetzen. Das muss aber nicht bedeuten, dass die anderen Vorstellungen völlig ausgeblendet werden; sie könnten eben in diesem NPC integriert werden.
  
 +
* Eine komplexere Erweiterung wäre es, dass - sobald die Spielerin dem NPC einen ihrer Bedenken mitteilt - der NPC beschließt, diesen Vorschlag direkt umzusetzen. Technisch würde das bedeuten, dass man nebenläufige Szenarien entwickeln muss, in denen andere Gesetzmäßigkeiten herrschen und Gegenstände existieren.
  
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
+
----
|- style="background-color:#D8D8D8;font-size:11pt"
+
Das Problem ist, dass das Ganze immer noch sehr abstrakt ist und keine konkrete inhaltliche Geschichte enthält. Deshalb im Folgenden noch eine sehr konkrete Idee:
|style="font-weight:bold" width="112" colspan="5" height="16" align="center" valign="bottom" | Spezifikation für Türen
 
  
|- style="font-size:11pt"
+
== Die Harmoniker. Oder: Die Welt im Jahre 2050 ==
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" align="center" valign="center" | Beispiel
 
|style="background-color:#95B3D7;font-weight:bold" colspan="2" rowspan="2" align="center" | I7-Codebeispiel
 
  
|- style="font-size:11pt"
+
;Wächter und Virenscanner
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
+
Der Wächter soll mit Feinden scharf umgehen und mit Freunden milde, so wie der "edle Hund". Genauso sollen auch Virenscanner die bösartigen Applikationen von den gutartigen unterscheiden.
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value
 
|style="background-color:#D99795;font-style:Italic" align="center" valign="bottom" | Inhalt
 
  
|- style="font-size:11pt" align="center" valign="center"
+
Jetzt weiß man aber [http://www.research.ibm.com/antivirus/SciPapers/VB2000DC.htm aus der theoretischen Informatik] (oder evt. wenn man Hunde gut kennt), dass das nicht möglich ist. Nur bekanntes Bösartiges + bekannte Abwandlungen können erkannt werden, fremdes Bösartiges jedoch nicht (Die Bösartigkeit stellt sich erst zur Laufzeit heraus, weil man automatisiert, also mittels syntaktischer Analyse im Allgemeinen nichts über die Funktion eines Code-Stücks herausfinden kann). Je mehr Abwandlungen und Patterns jedoch berücksichtigt werden, desto öfter werden gutartige Programme als bösartig erkannt. Auch der Hund kann sich irren.
|style="background-color:#FCD5B4" height="16" | identifier
 
|style="background-color:#FCD5B4" | in-code
 
|style="background-color:#E6B9B8" | golden door
 
|style="background-color:#C5D9F1" colspan="2" rowspan="10" | <small><source lang="inform">The Cemetery and the Church
 
are lighted rooms in Retz.
 
The jimmy is a thing in Cemetery.
 
The golden door is a door.
 
The golden door is locked and unopenable.
 
The description of the golden door is "
 
[if the player is in the church]
 
This is the exit of the church
 
[otherwise]
 
This is the entrance of the church
 
[end if]".
 
The matching key of the golden
 
door is the jimmy.
 
The golden door is inside of Church
 
and outside of Cemetery.</source></small>
 
  
|- style="font-size:11pt" align="center" valign="center"
+
;Der konkrete Plotvorschlag:
|style="background-color:#FCD5B4" height="15" | description
+
Eine mögliche Welt im Jahre 2050. Die Finanz- und Wirtschaftskrise des ersten Jahrzehnts dieses Jahrtausends hat die Situation in den westlichen Ländern verschäft. Ehemalige Industriestaaten sind nur noch ein Zerrbild ihres alten Glanzes. Das europäische Projekt ist gescheitert. Das diplomatische Verhältnis der europäischen Nationen ist zerstritten und wird nur durch die  gegenseitigen wirtschaftlichen Abhängigkeiten aufrecht erhalten. Seit der [http://www.wertewirtschaft.org/magazin/?id=4607 Annäherung der islamischen Auslegung an utilitaristische Wertvorstellungen] erfreut sich der Islam großer Beliebtheit. Es gibt  mittlerweile mehr moslemische als christliche Anhänger in den westlichen Ländern. Die klassische abenländische Kultur muss ihrem Untergang ins Auge blicken. Auf dem seit 2020 verlassenen Kuba (Tropische Wirbelstürme / Überschwemmungen) hat sich jedoch seit 2030 eine etwas skurrile Gruppe gebildet (die mittlerweile in Summe beachtliche  1 000 000 Personen umfasst), die die alten  platonischen Schriften wieder hervorgekramt hat und nicht davon abzubringen ist, dass der Stadtstaat, so wie er in der Politeia beschrieben wird, weltweit umgesetzt werden muss, um die Glückseligkeit der Menschen zu garantieren. Die Besonderheit ist die Bedingung für die Mitgliedschaft: Vermittels einer speziellen Technologie müssen alle vergangenen Erinnerungen der neuen Mitglieder gelöscht werden, sodass verderbliche Erziehungsmuster die Stabilität der Stadtstaaten nicht gefährden. Und der Zustrom ist erstaunlich enorm, seitdem die Unternehmung von 9 Wiener Philosophen und Informatikerinnen ins Leben gerufen wurde. Mittlerweile gibt es 60 solcher Stadtstaaten mit jeweils zwischen 1.000 und 30.000 Mitglieder, die (außer den gegenseitigen Handelsbeziehungen und einem Friedensvertrag) weitgehend voneinander unabhängig sind. Die große Gemeinsamkeit ist die Verpflichtung, ihr Leben und ihre Stadtstaats-Ordnung nach der Politeia zu richten. Es gibt jedoch keinen Kanon, der eine bestimmte Interpretation vorschreibt, weshalb sich die einzelnen Stadtstaaten vor allem in Bereichen, von denen die Politeia nicht so ausführlich und klar spricht, stark voneinander unterscheiden (neue Technologien,  Außenhandelsbeziehungen, Verhütungsmittel, Reisen in andere Länder,...) - einzig der Herrscher oder die Herrscherin des Stadtstaates bestimmen über die Form der Interpretation.
|style="background-color:#FCD5B4" | text
 
|style="background-color:#E6B9B8" | "[if...]..."
 
  
|- style="font-size:11pt" align="center" valign="center"
+
Ein Charakter, den die Spielerin spielt, ist [http://de.wikipedia.org/wiki/Asmaa_Abdol-Hamid Abqurah Al-Makki] ([http://www.beepworld.de/members60/lailaomamina/namen.htm Name verändert]), eine muslimische Journalistin aus dem Iran, die beauftragt wird, nach Kuba zu reisen und über die inneren Vorgänge zu berichten. Für Gäste, die sich ihr Gedächtnis nicht löschen lassen, ist der Zutritt nämlich streng verboten. Man vermutet aufgrund des wachsenden Zustroms und der knappen kubanischen Landfläche mittelfristig kriegerische Aktivitäten.
|style="background-color:#FCD5B4" height="15" | printed name
 
|style="background-color:#FCD5B4" | text
 
|style="background-color:#E6B9B8" | default: identifier
 
  
|- style="font-size:11pt" align="center" valign="center"
+
Die Spielerin erhält ein kleines als Anhänger getarntes Notebook mit Satellitenverbindung zum Internet, um live aus den Stadt-Staaten über die geheimen Pläne der Harmoniker, wie sie sich selbst nennen, zu bloggen. Nachdem ihr Flugzeug von den Harmonikern überraschend abgeschossen und im Meer versenkt wurde (bislang zeigten sich die Harmoniker nicht aggressiv gegenüber Besuchen aus anderen Ländern, sie wiesen sie einfach ab und schickten sie zurück), konnte sie sich gerade noch mit dem Fallschirm auf eine Nebeninsel (Isla de la Juventud - Insel der Jugend) retten. Die erste Aufgabe ist, unerkannt an den Wachen des dort gegründeten Stadtstaats vorbei zu kommen. Ihre Hauptaufgabe danach ist, mindestens 5 der Stadtstaaten zu besuchen und eine Einschätzung der Lage abzugeben, wobei das Problem besteht, dass viele der Herrscherinnen ein sehr zurückgezogenes Leben führen. Abqurah muss über Mittelsmänner erst ihre Fähigkeiten und ihre Kenntnis der platonischen Staatslehre beweisen, bevor sie würdig ist, in den inneren Kreis einzutreten, wo die Herrscherin sich aufhält.
|style="background-color:#FCD5B4" height="15" | open/closed
 
|style="background-color:#FCD5B4" | either/or
 
|style="background-color:#E6B9B8" | closed
 
  
|- style="font-size:11pt" align="center" valign="center"
+
Und jetzt kommt die Sache mit dem Anti-Viren-Scanner zum Zug:
|style="background-color:#FCD5B4" height="15" | openable/unopenable
+
Sie muss in den ersten Stadtstaat [http://www.cubaworld.de/cubainfos/cubas-staedte/nueva-gerona.html Nueva Gerona] auf der Insel der Jugend reinkommen. Sie weiß, dass sie mit ihrem Kopftuch und dem Notebook-Schmuck von den Wächtern als verdächtig eingestuft wird. Eine Möglichkeit wäre es nun, die Wächter abzulenken,  so wie man einen edlen Hund ablenkt, indem man ihm etwas gibt, was ihn  freundlich stimmt (einen Hundeknochen oder einen Stock...):
|style="background-color:#FCD5B4" | either/or
+
* Sie weiß, dass die Wächter besonders streng erzogen werden und sehr wenig an - sagen wir "aufregender" Literatur zu lesen/sehen bekommen. Platon sei Dank hat sie noch ein Playboy-Magazin in ihrer Tasche, das sie auf eine Parkbank legt. Sie wartet, bis die Wächter am Eingang das Hochglanz-Magazin finden und kann nun ungehindert reingehen.
|style="background-color:#E6B9B8" | unopenable
 
  
|- style="font-size:11pt" align="center" valign="center"
+
* Eine weitere Möglichkeit wäre, herauszufinden, welche Güter in diesem  Stadtstaat nicht produziert werden, die die Wächter jedoch brauchen. Da die Wächter ja selbst nicht produzieren dürfen, müssen sie auf die Produktion warten. Zum Beispiel könnte aus einem Gespräch mit den Wächtern hervorgehen, dass dieser Stadtstaat eine Schweinestaat sei und dass sie gehört haben, dass in üppigen Stadtstaaten guter Marmorkuchen gemacht wird. Von irgendwo muss die Spielerin also einen Marmorkuchen herbekommen.
|style="background-color:#FCD5B4" height="15" | unlocked/locked
 
|style="background-color:#FCD5B4" | either/or
 
|style="background-color:#E6B9B8" | locked
 
  
|- style="font-size:11pt" align="center" valign="bottom"
+
----
|style="background-color:#FCD5B4" height="15" | unlockable/lockable
 
|style="background-color:#FCD5B4" | either/or
 
|style="background-color:#E6B9B8" | lockable
 
  
|- style="font-size:11pt" align="center" valign="bottom"
+
Diese Ideen sind nur mal so aus dem Bauch heraus geschrieben und nicht perfekt. Ihr könnt den Text direkt verändern und ergänzen, so wie ihr ihn gerne haben wollt - durch die Wiki-History können wir alte Versionen jederzeit wiederherstellen bzw. ansehen, also keine Scheu: Dieses Gedächtnis kann nicht gelöscht werden ;) --[[Benutzer:Andyk|Andyk]] 21:04, 29. Mär. 2009 (UTC)
|style="background-color:#FCD5B4" height="15" | matching key
 
|style="background-color:#FCD5B4" | thing
 
|style="background-color:#E6B9B8" | jimmy
 
  
|- style="font-size:9pt" align="center" valign="center"
+
= Session 7: IF und endliche Automaten (14.04.2009) =
|style="background-color:#FCD5B4;font-style:Italic" height="15" | <new property>
+
== Hinführung ==
|style="background-color:#FCD5B4;font-style:Italic" | <some value>
+
Habe mich ein bisschen bei den Inform7 Extensions umgesehen und habe dabei [http://www.inform-fiction.org/I7/Download%20-%20Extensions.html#topic24 Simple CYOA] entdeckt, das menübasierte Spiele erlaubt, die IMHO vor allem für IF-Anfänger geeignet sind. Pro Zustand gibt es maximal 4 Alternativen, wovon man eine davon auswählen kann. Danach kommt man in den nächsten Zustand. Natürlich schränkt das die Freiheiten der Spielerin drastisch ein: Man kann nicht mehr beliebig herumlaufen, die Gegend erkunden, Fehler machen und sukzessive korrigieren, sondern muss den Wegen folgen die vorgegeben sind; So wie der Zug nur auf den Gleisen fahren kann und nicht irgendwo auf der Wiese. Wenn man dann am Ziel angelangt ist, hat man nicht das Gefühl, es aus eigener Anstrengung geschafft zu haben. Es war ja fast eine notwendige Folge, dass man angekommen ist.
|style="background-color:#E6B9B8" | &nbsp;
 
  
|- style="font-size:9pt" align="center" valign="center"
+
Trotzdem habe ich die Extension mal ausprobiert und zwar aus folgenden Gründen:
|style="background-color:#FCD5B4" height="31" | is <D> of <R> and <BR><D> of <R>
+
* Man kommt sehr schnell zu spielbaren Resultaten; der Ablauf ist geordnet und überschaubar (mit all den obigen Nachteilen, weswegen ich nicht dafür wäre, das ganze Spiel auf diese Art zu implementieren)
|style="background-color:#FCD5B4" | <D>… Direction<BR><R>… Room
+
* Ich lese für eine Projektmanagement-Vorlesung gerade ein Buch, in dem vorgeschlagen wird, so bald wie möglich "Versuchsballons" steigen zu lassen. Das sind Prototypen, die man am Anfang des Projekts macht und die man durch die kritischen Rückmeldungen der Teammitglieder und der Auftraggeber sukzessive verändert, um am Ende tatsächlich das zu bekommen, was man sich ungefähr erhofft hat: <br><br>''"Weil man frühzeitig und häufig falsch liegt, gelangt man schnellstmöglich auf die richtige Fährte. Die Probleme, mit denen wir es zu tun haben, und die Lösungen, die wir ableiten, sind viel zu komplex, um komplett ausgeformt dem Kopf einer einzelnen Person zu entspringen. Werden Sie dickhäutig, und kommen Sie mit einem 'Was haltet ihr von dieser Idee?', auch wenn Sie genau wissen, das Sie völlig daneben liegen."'' (DeMarco et al.: Adrenalin-Junkies und Formular-Zombies, S.69f)<br><br>
|style="background-color:#E6B9B8" | is north of grandmas house
+
* Der Ansatz ist aber nicht ausschließlich einer Hörigkeit von Projektmanagement-"Philosophie" geschuldet, sondern geht zurück auf die Frage der Realisierbarkeit des "speziellen Zustands", den wir in der [[KickOff_Session_(PSI)|Kick-Off-Session]] als alternativen Ansatz besprochen haben. Demnach sollen Entscheidungen getroffen werden und anhand dieser Entscheidungen ergeben sich Folgeentscheidungen bzw. bestimmte Konsequenzen. Ich habe versucht, diesen Ansatz trickfilmartig zu realisieren (interessanter und komplexer wäre die Implementierung bei einem nicht-menü-basierten Spiel). Es stellt sich heraus, dass auch bei so geordneten Verhältnissen sehr viele Interaktionen mit den Entscheidungen möglich sind.
 +
* Damit das ganze ein konkreter Beitrag zum Projekt ist, habe ich [[Benutzer_Sinn_und_Arif_Aslan/_Kranker_Zimmermann|das von Arif und Helga beschriebene Szenario]] versucht umzusetzen. Bis jetzt bin ich noch nicht ganz mit Szene1 fertig, wobei ich einige Ergänzungen vorgenommen habe, weil das Szenario wie ein Theaterstück mit wenigen interaktiven Elementen aber vielen Dialogen geschrieben ist, was die Implementierung ungleich schwerer macht, weil man sich nicht nur Gedanken machen muss, wie man den Inhalt in Code ausdrückt, sondern weil man zusätzliche inhaltliche Entscheidungen treffen muss, um interaktive Elemente in den Code zu bekommen.
  
|}
+
== Der Ablauf als endlicher Automat ==
 +
[[Datei:Zustandsgraph.jpg|thumb|Zustandsdiagramm von [http://phaidon.philo.at/viewvc/Probegalopp?view=rev&revision=20 Distinctions (Revision 20)]]]
 +
[[Datei:Zustandsgraph_V2.jpg|thumb|Zustandsdiagramm von [http://phaidon.philo.at/viewvc/Probegalopp?view=rev&revision=21 Distinctions (Revision 21)] - [http://phaidon.philo.at/viewvc/Probegalopp/Distinctions.inform/Source/story.ni?r1=20&r2=21 Diff]]]
 +
* Das schöne an dieser Extension ist, dass man den fertigen Code als Graph darstellen kann (Abbildungen rechts), sodass man die Abläufe noch besser darstellen und einem mit I7 nicht vertrautem Publikum erläutern kann. Die Darstellung ähnelt im Prinzip einem [http://de.wikipedia.org/wiki/Endlicher_Automat endlichen Automaten] oder einem [http://de.wikipedia.org/wiki/Zustandsdiagramm Zustandsdiagramm]. Man startet in einem Zustand und wenn ein bestimmtes Ereignis eintritt (die Spielerin trifft eine Entscheidung), geht man in den nächsten Zustand oder bleibt im selben Zustand, und so weiter. Anbei eine kleine Aufschlüsselung der Symbole:
 +
* '''Die gelben Kreise''' repräsentieren Zustände (Pages), in denen etwas passiert (im Prinzip wird einfach Text ausgegeben)
 +
* '''Die grünen Rechtecke''' repräsentieren in meinem Beispiel Eigenschaften, die die Spielerin aufgrund ihrer Handlungen zugewiesen werden. Darauf aufbauend können bestimmte Zustände (nicht) erreicht werden. Außerdem erfolgt am Ende eine textuelle Analyse des Gesamtverhaltens, basierend auf den getroffenen Entscheidungen. Das ist der Punkt, der für den "speziellen Zustand" brauchbar ist und relativ einfach möglich ist, auch wenn die textuelle Beschreibung des Verhaltens immer noch eine Herausforderung ist.
 +
* '''Durchgezogene Pfeile''' symbolisieren Entscheidungen, die die Spielerin getroffen hat. Je nach Entscheidung kommt man in bestimmte Zustände (gelbe Kreise).
 +
* '''Strichlierte Pfeile''' repräsentieren Zustandsübergänge, die nicht direkt durch eine Entscheidung der Spielerin verursacht wurden, sondern der Übergang passiert automatisch.
 +
* '''Gelbliche Rauten''' repräsentieren die Punkte der Spielerin, die vergeben (+) oder abgezogen (-) werden, wenn ein bestimmter Zustand erreicht wird.
 +
* '''Die bläulichen Rauten''' visualisieren die Punktezahl, die das Wissen der Spielerin über Platons Staat versucht anhand der Entscheidungskaskaden zu quantifizieren. Man kann sich vorstellen dass, je mehr Entscheidungen der Spielerin man kennt, desto spezifischer kann man auf ihre Einstellungen/Meinungen antworten.
 +
* '''Blaue Rechtecke''' stellen Bedingungen dar. Wenn Sie erfüllt sind, dann kommt es z.B. zu einem Zustandsübergang.
  
 +
== Der I7-Code ==
 +
* Bis jetzt habe ich nur einmal Szene1 (mit einigen Modifikationen) implementiert. (Todo: Rest)
 +
* Jeweils [http://phaidon.philo.at/viewvc/Probegalopp/Distinctions.inform/Source/story.ni?view=markup '''letzte Version'''].
 +
* [http://phaidon.philo.at/viewvc/Probegalopp/Distinctions.inform/Source/story.ni?revision=20&view=markup '''Version 1''' (14.04.09)]
 +
* [http://phaidon.philo.at/viewvc/Probegalopp/Distinctions.inform/Source/story.ni?revision=21&view=markup '''Version 2''' (15.04.09)]
  
 +
;Kurzbeschreibung der ersten 4 Zustände:
 +
* '''Start:''' Man findet sich als Handelsmann in einer Politeia und muss sich nach lukrativen Waren umschauen. Man hat die Möglichkeit, zum Schuster oder zum Zimmermann zu gehen.
 +
* '''Shoemaker:''' Ein Wächter sagt dir, dass der Schuster gerade die Wächter-Schuhe repariert und er keine Störung duldet. Du gehst automatisch zum Zimmermann.
 +
* '''Carpenter:''' Du kannst den Schuster grüßen oder direkt nach seinen Produkten fragen. (Wenn du dich entscheidest, ihn zu grüßen, hat das bestimmte Konsequenzen - ich will ja nicht spoilen ^^)
 +
* '''C_Products:''' Du kannst ihn nach Schuhen, Tischen oder Mobiltelefonen fragen. Was wird naheliegend sein? ;)
  
 +
= Session 8: Interessante Extensions (19.04.2009) =
 +
Eine kurze Session über eventuell brauchbare Extensions, die uns ersparen, diese Räder neu zu erfinden.
 +
== NPC-Routinen ==
 +
Falls man den NPCs eine gewisse Inteligenz verleihen will, kann man sich folgende Extensions ansehen:
 +
* '''[http://www.inform-fiction.org/I7Downloads/Extensions/Michael%20Callaghan/Patrollers.i7x Patrollers]''': Die Autorin kann vordefinierte Routen festlegen, die die NPCs ablaufen.
  
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
+
* '''[http://www.inform-fiction.org/I7Downloads/Extensions/Emily%20Short/Simple%20Followers.i7x Simple Followers]''': NPCs folgen der Spielerin. Das würde ganz gut zu unserer angedachten Strategie passen, unterschiedliche Charaktere zu implementieren, die gemeinsam die Welt erkunden, wobei die Spielerin in unterschiedlichen Szenarios die Rolle eines dieser Charaktere einnimmt.
|- style="background-color:#D8D8D8;font-size:11pt"
 
|style="font-weight:bold" width="130" colspan="5" height="16" align="center" valign="bottom" | Spezifikation für Dinge
 
  
|- style="font-size:11pt" align="center"
+
* '''[http://www.inform-fiction.org/I7Downloads/Extensions/Nate%20Cull/Planner.i7x Planner]''' und [http://www.inform-fiction.org/I7Downloads/Extensions/Nate%20Cull/Basic%20Plans.i7x Basic Plans]: Es handelt sich hierbei um einen zielorientierten Agenten, der versucht, ein vordefiniertes Ziel zu erreichen, wobei man Teilziele bzw. auch Actions vordefinieren kann, um den Agenten die Mittel an die Hand zu geben, das Ziel zu erreichen. Ein Gedanke dazu: Das Teilziel könnte sein, die Spielerin zu überreden (vgl. auch [http://www.inform-fiction.org/I7Downloads/Extensions/Ron%20Newcomb/Player-Character%20Requires%20Persuasion.i7x diese Extension]), eine bestimmte Entscheidung (zum Beipsiel zu Gunsten  klassisch-platonischer-Lehre) zu treffen. Ein anderer NPC könnte dagegen das Ziel haben, ihn für die gegenteilige Entscheidung zu gewinnen (Engerl/Teuferl auf der Schulter).
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" | Struktur
 
|style="background-color:#D99795;font-weight:bold" | Beispiel
 
|style="background-color:#95B3D7;font-weight:bold" colspan="2" rowspan="2" | I7-Codebeispiel
 
  
|- style="font-size:11pt" align="center"
+
== Andere Extensions ==  
|style="background-color:#FAC090;font-style:Italic" height="16" | Property
 
|style="background-color:#FAC090;font-style:Italic" | Value
 
|style="background-color:#D99795;font-style:Italic" | Inhalt
 
  
|- style="font-size:11pt"
+
* '''[http://www.inform-fiction.org/I7Downloads/Extensions/Emily%20Short/Transit%20System.i7x Transit System]''': Bezüglich des Verlinkens einzelner Szenarien könnte sich dieses Plugin anbieten, das nach vordefinierter Route (ich kann mir vorstellen, dass man auch zufällige Elemente bzw. Entscheidungen aus bereits gespielten Szenarien in die Routenplanung miteinfließen lassen kann) die Landkarte abfährt. Spielerin und NPCs können zu- und aussteigen.  
|style="background-color:#FCD5B4" height="16" align="center" | identifier
 
|style="background-color:#FCD5B4" align="center" | in-code
 
|style="background-color:#E6B9B8" align="center" | jimmy
 
|style="background-color:#C5D9F1" colspan="2" rowspan="16" | <small><source lang="inform">
 
[The jimmy is a singular-named and
 
proper-named and inedible and unlit
 
and portable thing.]
 
  
The printed name of jimmy is
+
* Objekte während des Spiels erstellen (könnte nützlich sein, falls man dynamisch z.B. ein etwas verändertes Szenario "bauen" will): '''[http://www.inform-fiction.org/I7Downloads/Extensions/Jesse%20McGrew/Dynamic%20Objects.i7x Dynamic Objects]''' und [http://www.inform-fiction.org/I7Downloads/Extensions/Jesse%20McGrew/Dynamic%20Tables.i7x Dynamic Tables].
"rusty jimmy".
 
The initial appearance of jimmy is
 
"Oh, what's this? A thief may
 
lost this jimmy...".
 
The jimmy is initially carried.
 
  
The description of jimmy is
+
* Hinweissystem: '''[http://www.inform-fiction.org/I7Downloads/Extensions/Eric%20Eve/Adaptive%20Hints.i7x Adaptive Hints]'''
"[if proper-named]A jimmy. So what?
 
[otherwise]A broken jimmy[end if]".
 
  
Understand "rusty jimmy" as jimmy.
+
* '''[http://www.inform-fiction.org/I7Downloads/Extensions/Emily%20Short/Tutorial%20Mode.i7x Tutorial Mode]''': Für IF-Anfänger; schlägt wichtige Befehle vor.
  
Instead of pushing jimmy:
+
* Fußnoten: Das finde ich im Zshg. mit I7 witzig: '''[http://www.inform-fiction.org/I7Downloads/Extensions/Stephen%20Granade/Footnotes.i7x Footnotes]'''
  now the jimmy is improper-named;
 
  say "Oh no. The jimmy brake down...".
 
  
Instead of unlocking the golden door
+
* Anstatt dem Simple CYOA, mit dem ich in der letzten Session versucht habe, einen Teil eines Szenarios modellieren, wäre wohl die '''Built-in-Extension: Menus''' sinnvoller, soweit ich das auf den ersten Blick sehe. Denn hier kann man Menüs nur temporär verwenden, und ansonsten wieder zurückschalten auf Standard-I7-Parsing. Schaue ich mir bei Gelegenheit mal an.
with jimmy when jimmy is improper-named,  
 
  say "The jimmy does not fulfill the
 
  intended function of a jimmy since
 
  you have pushed it too heavy.".</source></small>
 
  
|- style="font-size:11pt"
+
* Geheimtür in der Höhle: Interessant wäre, falls wir uns doch noch entschließen, das Höhlengleichnis als ein Szenario zu implementieren, es ein bisschen abzuändern. So könnte man z.B. mit der Extension '''[http://www.inform-fiction.org/I7Downloads/Extensions/Andrew%20Owen/Secret%20Doors.i7x Secret Doors]''' eine Geheimtür in der Höhle platzieren.
|style="background-color:#FCD5B4" height="15" align="center" | kind
 
|style="background-color:#FCD5B4" align="center" | kind
 
|style="background-color:#E6B9B8" align="center" | thing
 
  
|- style="font-size:11pt"
+
= Session 9 : Selbstkorrekturmechanismen (30.04.09) =
|style="background-color:#FCD5B4" height="15" align="center" | description
+
Nur so nebenbei: Bin vor ein paar Tagen in [http://netzpolitik.org/2009/der-kampf-der-kulturen/ diesem Artikel] auf ein Popper-Zitat und seine Abwandlung gestoßen, die die Frage nach Qualität der Herrscher und Wächter auf eine andere Ebene verschiebt:
|style="background-color:#FCD5B4" align="center" | text
 
|style="background-color:#E6B9B8" align="center" | "[if proper-named]…"
 
  
|- style="font-size:11pt"
+
* "Wie können wir unsere politischen Einrichtungen so aufbauen, dass auch unfähige und unredliche Machthaber keinen großen Schaden anrichten können?"  
|style="background-color:#FCD5B4" height="15" align="center" | printed name
 
|style="background-color:#FCD5B4" align="center" | text
 
|style="background-color:#E6B9B8" align="center" | rusty jimmy
 
  
|- style="font-size:11pt"
+
* "Wie können wir unsere technischen Infrastrukturen so aufbauen, dass unfähige und unredliche Machthaber damit keinen großen Schaden anrichten können?"
|style="background-color:#FCD5B4" height="15" align="center" | initial<BR>appearance
 
|style="background-color:#FCD5B4" align="center" | text
 
|style="background-color:#E6B9B8" align="center" | "Oh… whats this? "
 
  
|- style="font-size:11pt"
+
Platon geht so vor, dass er im neunten Buch z.B. Tyrannen und den tyrannischen Staat einfach die Attribute arm, ungerecht, unglücklich,... zuweist, im Gegensatz zu seinem in früheren Büchern erläuterten Philosophen-König und seinem Staat. Dass es jedoch in der Realität möglich ist, dass Tyrannen an die Macht kommen, hat keine Konsequenzen für das entwickelte Staatsmodell. Ich empfinde es, ohne das näher zu belegen, als einen Nachteil, wenn man seine Theorie ausschließlich auf die Spähre des Idealen gründet. Wenn morgen in Österreich ein Tyrann die Macht ergreifen sollte, dann wird er seine Ansprüche nicht dadurch aufgeben, dass man ihn mit Verweis auf Platon als arm, ungerecht und unglücklich klassifiziert.--[[Benutzer:Andyk|Andyk]] 22:59, 30. Apr. 2009 (UTC)
|style="background-color:#FCD5B4" height="15" align="center" | not wearable/<br>wearable
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | default: not wearable
 
  
|- style="font-size:9pt"
+
:<span style="color:#008000">Schwierige Frage. Die gängige Antwort lautet meines Wissens etwa: Damit der einzelne nicht zu viel Schaden anrichten kann, gibt es Kontrollinstanzen, die seinen Handlungsspielraum einschränken, genauer gesagt, es gibt mehrere Instanzen, die ''einander'' einschränken ("die Herrscher kontrollieren" würde ja in einen Regreß führen) (http://de.wikipedia.org/wiki/Gewaltenteilung Gewaltenteilung]). Damit eine Instanz einer anderen gegenüber einen Einwand begründen kann, braucht es ein Set ausdrücklich festgelegter Regeln. Für technische Infrastruktur gilt das noch mehr, da eine Maschine ja nur anhand von aufgeschriebenen Regeln funktioniert. Solche Regelsysteme werden aber sehr schnell zu komplex für das menschliche Begreifen, ohne jemals die Komplexität der Wirklichkeit erfassen zu können. Wir bewegen uns ständig auf einem schmalen Grat zwischen Dogmatismus und Willkür. Platon schlägt sich hier eindeutig auf die Seite der Dogmatismuskritik, wenn er meint, daß das "gesunde" Herrscherempfinden durch zu viel Regelung in zu vielen Details nur behindert wird (425a f., 297a, auch 445c ff.: Monarchie mit grundlegender Verfassung; die Fußnote zu 445e in der Reclam-ausgabe verweist auch auf ''Politikos'' 293ff.). Ich weiß nicht, ob er das sagt, aber er könnte immerhin eine Art Peer Review installieren - nicht Gegeninstanzen gleichen die Fehler des einzelnen aus, sondern das Plenum der Instanz, deren Mitglied der einzlene ist. Das wäre sogar in einer Monarchie denkbar, da ein König immer Berater hat. Platon spricht nicht davon, er operiert ganz mit dem Vertrauen in den erleuchteten Herrscher, aber genauso könnte er auch den Dialog zwischen den erleuchteten Individuen ins Feld führen.</span>
|style="background-color:#FCD5B4" height="30" align="center" | singular-named/<BR>plural-named
+
:<span style="color:#008000">Das ist wohl ein Problem aller Utopien, daß man irgendwo an Punkte stößt, die so gar nicht mit der Wirklichkeit in Einklang zu bringen sind. Hier kann man immer sagen "das ist ja nur eine Utopie", aber es bleibt doch eine Lücke in der Argumentation. Besonders gilt das für Utopien, die mit der (nicht ganz unberechtigten) Annahme operieren, daß man durch Sozialisation das moralische Verhalten der Bürgerinnen beeinflussen kann und daß in einem idealen Staat eine Reihe von Problemen wegfallen würden, weil eben die Bürger anders dächten.  --[[Benutzer:H.A.L.|H.A.L.]] 06:32, 1. Mai 2009 (UTC)</span>
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | singular-named
 
 
 
|- style="font-size:9pt"
 
|style="background-color:#FCD5B4" height="30" align="center" | proper-named/<BR>improper-named
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | proper-named
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" align="center" | edible/inedible
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | inedible
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" align="center" | initially carried
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | yes
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" align="center" | portable/fixed in place
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | portable
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" align="center" | pushable between rooms
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | yes
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" align="center" | unlit/lit
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | unlit
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" align="center" | scenery
 
|style="background-color:#FCD5B4" align="center" | Zuweisung
 
|style="background-color:#E6B9B8" align="center" | no
 
 
 
|- style="font-size:8pt"
 
|style="background-color:#FCD5B4" height="45" | located in <R><BR>located in <C><BR>located at <S>
 
|style="background-color:#FCD5B4" | <R>… Room<BR><C>… Container<BR><S>… Supporter
 
|style="background-color:#E6B9B8" align="center" | located in player's holdall<BR>(weil initially carried)
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4;font-style:Italic" height="16" align="center" | <new property>
 
|style="background-color:#FCD5B4;font-style:Italic" align="center" | <some value>
 
|style="background-color:#E6B9B8" align="center" | &nbsp;
 
 
 
|}
 
 
 
 
 
 
 
 
 
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="background-color:#D8D8D8;font-size:11pt"
 
|style="font-weight:bold" width="125" colspan="5" height="16" align="center" valign="bottom" | Spezifikation für Container
 
 
 
|- style="font-size:11pt" align="center"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" | Struktur
 
|style="background-color:#D99795;font-weight:bold" | Beispiel
 
|style="background-color:#95B3D7;font-weight:bold" colspan="2" rowspan="2" | I7-Codebeispiel
 
 
 
|- style="font-size:11pt" align="center"
 
|style="background-color:#FAC090;font-style:Italic" height="16" | Property
 
|style="background-color:#FAC090;font-style:Italic" | Value
 
|style="background-color:#D99795;font-style:Italic" | Inhalt
 
 
 
|-
 
|style="background-color:#FCD5B4" height="16" align="center" | identifier
 
|style="background-color:#FCD5B4" align="center" | in-code
 
|style="background-color:#E6B9B8" align="center" | small coffin
 
|style="background-color:#C5D9F1;font-size:11pt" colspan="2" rowspan="17" | <small><source lang="inform">The big coffin is a container in Cemetery.
 
The small coffin is an edible container
 
in big coffin.
 
The description of the small coffin is
 
"It is made of marzipan."
 
The carrying capacity of small coffin is 1.
 
The carrying capacity of big coffin is 10.
 
The hammer is a lit thing in small coffin.</source></small>
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" align="center" | kind
 
|style="background-color:#FCD5B4" align="center" | kind
 
|style="background-color:#E6B9B8" align="center" | container
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" align="center" | description
 
|style="background-color:#FCD5B4" align="center" | text
 
|style="background-color:#E6B9B8" align="center" | "It is made of marzipann."
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" align="center" | printed name
 
|style="background-color:#FCD5B4" align="center" | text
 
|style="background-color:#E6B9B8" align="center" | default: identifier
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" align="center" | initial appearance
 
|style="background-color:#FCD5B4" align="center" | text
 
|style="background-color:#E6B9B8" align="center" | "Oh… whats this? …"
 
 
 
|-
 
|style="background-color:#FCD5B4" height="26" align="center" | not wearable/<BR>wearable
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | default: not wearable
 
 
 
|-
 
|style="background-color:#FCD5B4" height="26" align="center" | singular-named/<BR>plural-named
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | singular-named
 
 
 
|-
 
|style="background-color:#FCD5B4" height="26" align="center" | proper-named/<BR>improper-named
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | proper-named
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" align="center" | edible/inedible
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | edible
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" align="center" | initially carried
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | default: no
 
 
 
|-
 
|style="background-color:#FCD5B4" height="26" align="center" | portable/<BR>fixed in place
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | portable
 
 
 
|-
 
|style="background-color:#FCD5B4" height="26" align="center" | pushable <BR>between rooms
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | no
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" align="center" | unlit/lit
 
|style="background-color:#FCD5B4" align="center" | either/or
 
|style="background-color:#E6B9B8" align="center" | unlit
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" align="center" | scenery
 
|style="background-color:#FCD5B4" align="center" | Zuweisung
 
|style="background-color:#E6B9B8" align="center" | no
 
 
 
|-
 
|style="background-color:#FCD5B4;font-size:9pt" height="36" | located in <R><BR>located in <C><BR>located at <S>
 
|style="background-color:#FCD5B4;font-size:9pt" | <R>… Room<BR><C>… Container<BR><S>… Supporter
 
|style="background-color:#E6B9B8;font-size:9pt" align="center" | located in big coffin<BR>(located in Cemetery)
 
 
 
|-
 
|style="background-color:#FCD5B4" height="15" | carrying capacity
 
|style="background-color:#FCD5B4" align="center" | number
 
|style="background-color:#E6B9B8" align="center" | 1
 
 
 
|-
 
|style="background-color:#FCD5B4;font-style:Italic" height="15" align="center" | <new property>
 
|style="background-color:#FCD5B4;font-style:Italic" align="center" | <some value>
 
|style="background-color:#E6B9B8" align="center" | &nbsp;
 
 
 
|}
 
 
 
== Strukturen ==
 
 
 
* Understandings
 
* Aktionen
 
* Gruppen von Aktionen
 
* Regeln
 
** Regelbücher für Aktionen (Check, Carry Out, Report)
 
** Aktions-bezogene Regeln (Instead of, After, Before, Persusation, Unsuccessful attempt)
 
** Zeitbezogene Regeln (Every Turn, Spielbeginn, Spielende, Szenenbeginn, Szenenende)
 
** Individuelle Regeln/Regelbücher
 
** Prozedurale Regeln
 
** Aktivitäts-bezogene Regeln (Before, For, After)
 
* Aktivitäten
 
* Szenen
 
* Relationen
 
* Phrasen (To, To-say,
 
 
 
Aktionen, Understandings, Regeln (und evt. Szenen) sind eng miteinander verknüpft.
 
 
 
Aktivitäten und Aktivitäts-bezogene Regeln sind eng miteinander verknüpft.
 
 
 
Szenen und Zeitbezogene Regeln sind eng miteinander verknüpft
 
 
 
== Strukturspezifikationen ==
 
 
 
=== Understandings ===
 
Es ist zunächst wichtig, zwischen Aktionen und Spieler-Befehlen zu unterscheiden. Spieler-Befehle sind sprachliche Ausdrücke, die der Spieler eingibt. Die sprachlichen Ausdrücke (genannt: Topics) verursachen eine Aktion, sofern es ein Standard-Befehl ist oder eine passende Understand-Phrase im Code festgelegt wurde.
 
 
 
Man kann zwischen verschiedenen Arten von Understandings unterscheiden:
 
* '''Befehl:''' Spieler-Befehl, der eine Aktion verursacht
 
* '''Alias''': Ausdruck, der synonym zu einem Objektnamen verwendet werden kann
 
* '''Mistake:''' Understandings, die nur eine Textmeldung verursachen und Vorrang gegenüber anderen Understandings haben ( vgl. [[Benutzer:Andyk/Mitschriften/Technische_I7-Auseinandersetzungen#Ein_paar_Bemerkungen_zu_Understand|hier]] )
 
 
 
Zusätzlich sollte man angeben, unter welchen Bedingungen ein sprachlicher Ausdruck auf bestimmte Weise verstanden werden soll. (z.B könnte <code>kill the soldier</code> nur in der Szene „Gemetzel“ zur Aktion <code>kill [a person]</code> führen).
 
 
 
Ich schlage vor, Understandings folgendermaßen zu spezifizieren (da man mit Understand auch noch andere Dinge machen kann, habe ich <Other> in der "Typ"- und "führt zu"-Zeile reingeschrieben. Wenn man nicht weiß, wie man den Zusammenhang in die Rahmenstruktur bringt, können Ausnahmefälle bei "zusätzliche Bemerkungen" beschrieben werden):
 
 
 
 
 
{| class="wikitable" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="4" rowspan="2" height="15" align="center" | Spezifikation für Understandings
 
| width="6"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel 2
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="16" | Typ
 
|style="background-color:#FCD5B4" | (Befehl|Alias|Mistake|Other)
 
|style="background-color:#E6B9B8" | Befehl
 
|style="background-color:#E6B9B8" | Mistake
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="20" | Topic
 
|style="background-color:#FCD5B4" | Ausdruck, den die Spielerin eingibt
 
|style="background-color:#E6B9B8" | "read [book]"
 
|style="background-color:#E6B9B8" | "read [book]"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="30" | führt zu
 
|style="background-color:#FCD5B4" | (Aktion|Objekt|Befehl|Text|Other)
 
|style="background-color:#E6B9B8" | Aktion: reading
 
|style="background-color:#E6B9B8" | Text "reading is too…"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="49" | Bedingungen
 
|style="background-color:#FCD5B4" | (Szene X läuft|Akteur im Raum R|…)<BR>Alles, was wahr oder falsch sein kann
 
|style="background-color:#E6B9B8" | keine
 
|style="background-color:#E6B9B8" | Szene "blue-Monday-feeling" läuft
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="59" | zusätzliche<BR>Bemerkungen
 
|style="background-color:#FCD5B4" | Warum wird diese Verbindung hergestellt?
 
|style="background-color:#E6B9B8" | &nbsp;
 
|style="background-color:#E6B9B8" | kann man auch mit einer Check-Rule<br>machen, aber so geht’s auch.
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="4" rowspan="2" height="15" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|-
 
|style="background-color:#C5D9F1" colspan="4" height="242" | <source lang="inform">The degree is a kind of value.
 
The degrees are low and middle and high and pathologic.
 
The player has a degree called alcohol level.
 
 
 
A blue-monday-feeling is a scene.
 
Blue-monday-feeling begins when the alcohol level of the player is high or the alcohol level
 
of the player is pathologic.
 
Blue-monday-feeling ends when the alcohol level of  the player is low or the alcohol level
 
of the player is middle.
 
 
 
Understand "read [book]" as a mistake ("Reading is too productive in betray of my actual
 
constitution") when blue-monday-feeling is happening.
 
Understand "read [book]" as reading [when blue-monday-feeling is not happening].
 
 
 
When play begins, change the alcohol level of the player to high.
 
When the blue-monday-feeling begins, say "I think that I will be unable to do something
 
productive the next time...".
 
When the blue-monday-feeling ends, say "I will never again drink alcoholics.".
 
 
 
A bottle of mineral water is a edible thing. A bottle of mineral water is in the house.
 
Instead of drinking bottle of mineral water:
 
change the alcohol level of the player to low.</source>
 
|style="font-size:11pt"  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
 
 
 
 
''Ein kleiner Hinweis:
 
Man sollte das Standard-Befehlsset (Index/Actions/“Commands available to the player“) verwenden und nur dort, wo es semantisch notwendig ist, zusätzliche Befehle durch Understandings festlegen. Es ist kein Problem, wenn sowohl ein Standardbefehl als auch ein selbst erstellter Befehl auf eine Aktion gemapped werden. Schwierig für die Spieler wird es erst dann, wenn ausschließlich individuelle Befehle verwendet werden, die man im Kontext des Spiels und der vorhergehenden Beschreibungen schwer bis gar nicht erraten kann.''
 
 
 
=== Aktionen ===
 
Um eine Aktion grob zu spezifizieren, sind folgende Angaben wichtig:
 
 
 
{| class="wikitable" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für Aktionen
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="16" | Aktionsname
 
|style="background-color:#FCD5B4" | <Verb> + ing
 
|style="background-color:#E6B9B8" | destroying
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="45" | Objektbezug
 
|style="background-color:#FCD5B4" |  (visible thing|thing|room|nothing|text|topic)<BR>Visible thing bedeutet, man braucht das Ding<br> nicht angreifen, es reicht, wenn es sichtbar ist.
 
|style="background-color:#E6B9B8" | thing
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" | Licht?
 
|style="background-color:#FCD5B4" | (yes|no) default: no
 
|style="background-color:#E6B9B8" | yes
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="128" | informelle<BR>Beschreibung
 
|style="background-color:#FCD5B4" | Was wird durch die Aktion bewirkt und was <br>sind die Bedingungen für das Ausführen der Aktion? <br>Das ist sinnvoll, wenn man nur weiß, dass man die <br>Aktion brauchen wird, aber die Regeln noch nicht explizit <br>definiert werden (z.B. weil eine andere Arbeitsgruppe dafür verantwortlich ist oder weil man gerade keine Zeit dafür hat).
 
|style="background-color:#E6B9B8" | '''Vorbedingung:''' Man kann nur Bücher lesen. Das Buch ist offen (wenn nicht - öffne es).<BR><BR>'''Wirkung:''' Es wird der Inhalt der linken und rechten Seite des Buches angezeigt.<BR><BR> '''Bericht:''' Einen Hinweis einbauen, dass man zum Weiterlesen umblättern muss (vgl. Aktion browse)
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="15" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="33" align="center" | Reading is an action applying to one thing requiring light.
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
 
 
 
 
 
 
Für jede Aktion werden explizit 3 Regelbücher erstellt (Prüfen,Durchführen,Berichten), die aber jeweils leer bleiben können, doch dazu später.
 
 
 
=== Gruppen von Aktionen ===
 
* Aktionsgruppen, auf die man später zum Beispiel in Regeln Bezug nehmen kann (vgl. [[Benutzer:Andyk/Mitschriften/Technische_I7-Auseinandersetzungen#Kinds_of_Actions_und_Regeln|hier]]) :
 
 
 
 
 
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für Aktionsgruppen
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="16" | Name
 
|style="background-color:#FCD5B4" | Name der Gruppe
 
|style="background-color:#E6B9B8" | unjust action
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="50" | Liste der <BR>Aktionen
 
|style="background-color:#FCD5B4" | Aktion1<BR>Aktion2<BR>Aktion3
 
|style="background-color:#E6B9B8" | attacking<BR>drinking<BR>stealing
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="74" | Zweck der<BR>Verwendung
 
|style="background-color:#FCD5B4" | Warum wird diese Gruppe definiert?<BR>Wofür könnte sie eingesetzt werden?<BR>
 
|style="background-color:#E6B9B8" | Man kann damit alle ungerechten Handlungen <BR>klassifizieren und dann eine Regel erstellen, <BR>wodurch ungerechte Handlungen nur von <BR>ungerechten Personen durchgeführt werden können.
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="38" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="69" align="center" | Attacking is unjust action.<BR>Drinking is unjust action.<BR>Stealing is unjust action.
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
=== Regeln ===
 
Wenn man sich Regeln überlegt, sollte man ein bisschen ein Verständnis über die technischen Hintergründe haben, die [[Benutzer:Andyk/Mitschriften/Technische_I7-Auseinandersetzungen#Regeln_.2F_rules|hier]] und [[Benutzer:Andyk/Mitschriften/Technische_I7-Auseinandersetzungen#Regelb.C3.BCcher|hier]] zu finden sind.
 
==== Regelbücher für Aktionen ====
 
 
 
Es gibt folgende Typen von Regeln, die auf eine bestimmte Aktion Bezug nehmen (die Liste ist nach der Reihenfolge, nach der die Regeln geprüft werden, geordnet):
 
* '''BEFORE''': Hier kann man gut Ergänzungen für Standard-Regeln unterbringen
 
** ''Persuasion (nur für NPCs wichtig)'': Die Regel gibt Antwort auf die Frage, ob ein NPC der Aufforderung, etwas zu tun, nachkommen soll.
 
* '''INSTEAD OF''': Mit dieser Regel kann man üblicherweise Regeln von Standard-Aktionen/Aktionsgruppen blockieren. Das heißt, nach einer Instead-Of-Regel wird standardmäßig mit „STOP THE ACTION“ abeschlossen.
 
* '''CHECK''': Regelbuch, indem geprüft wird, ob für die Aktion nötige Vorbedingungen erfüllt sind. Falls nicht, wird abgebrochen.
 
** ''Unsuccessful Attempt By  (nur für NPCs wichtig)'': Ein NPC würde gern der Aufforderung nachkommen, kann aber nicht, weil es CHECK- oder INSTEAD-OF-Regeln der Welt nicht erlauben
 
* '''CARRY OUT:''' Die Regeln dieses Regelbuchs führen die Aktion aus, d.h. verändern bestimmte Zustände der Welt, der Spielfigur, etc. Hier sollte wenn möglich kein Text ausgegeben werden.
 
* '''AFTER''': Solche Regeln sind nützlich für Szenen-Wechsel (wenn eine solche Regel existiert, wird die Report-Regel üblicherweise unterdrückt).
 
* '''REPORT''': Hier soll Text ausgegeben werden, der dokumentiert, was in CARRY OUT passiert ist.
 
 
 
 
 
Zur Spezifikation dieser Regelarten schlage ich folgenden Rahmen vor:
 
 
 
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für nur-Aktions-bezogene Regeln
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="56" | Typ
 
|style="background-color:#FCD5B4" | ( Before | Persusasion | Instead of |<BR>Check | Unsuccessful Attempt |<BR>Carry out | After | Report )
 
|style="background-color:#E6B9B8" align="center" | Instead of
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="67" | Name
 
|style="background-color:#FCD5B4" | Name der Regel (wenn gewünscht)
 
|style="background-color:#E6B9B8" align="center" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="108" | Reihenfolge
 
|style="background-color:#FCD5B4" | (nur, wenn gewünscht; Bezugspunkt ist <BR>immer das durch den Typ festgelegte <BR>Regelbuch)<BR><BR>ganz am <Anfang|Ende><BR><vor|nach|statt> Regel <R>
 
|style="background-color:#E6B9B8" align="center" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="50" | Betroffene <BR>Aktion oder <BR>Aktionsgruppe
 
|style="background-color:#FCD5B4" | <Aktion|Aktionsgruppe>
 
|style="background-color:#E6B9B8" align="center" | Aktionsgruppe: unjust action
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" | Akteur
 
|style="background-color:#FCD5B4" | (alle|nur NPC|nur Spieler)
 
|style="background-color:#E6B9B8" align="center" | alle
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" | Bedingungen
 
|style="background-color:#FCD5B4" | Alles, was wahr oder falsch sein kann
 
|style="background-color:#E6B9B8" align="center" | wenn das Sein des Spielers <br>gerecht ist
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="99" | informelle<BR>Beschreibung
 
|style="background-color:#FCD5B4" | * Was wird durch die Regel getan? <BR>* Was ist durch sie erlaubt/verboten?<BR>* Was wird durch sie verändert?  <BR>* Welche Aktivitäten führt sie ungefähr aus? <BR>(evt. I7-Codestücke zur Verdeutlichung)
 
|style="background-color:#E6B9B8" align="left" | * say "I cannot do this because<BR> of my moralic behaviour"<BR><BR>* erhöhe den Zähler der un-<BR>gerechten Taten um 1.<BR><BR>* vermindere die  Punktezahl um 10
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="166" | Ergebnisse<BR>(Outcome)
 
|style="background-color:#FCD5B4" | Bedingungen angeben für:<BR><Erfolg|Misserfolg|benanntes Ergebnis><br> der Regel --> Regelbuch wird nicht weiter verarbeitet<BR><BR>Ergebnis unentschieden --> nächste Regel<br> im Regelbuch<BR><BR>Geplante Verwendung von Ergebnissen <br>(in Aktionen, anderen Regeln, …)
 
|style="background-color:#E6B9B8" align="center" | unter allen Bedingungen: <BR>Regelstatus unentschieden
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="64" | Benannte <BR>Ergebnisse
 
|style="background-color:#FCD5B4" | <Ausdruck1> bedeutet <BR><Erfolg|Misserfolg|Unentschieden>
 
|style="background-color:#E6B9B8" align="center" | keine
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="20" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="94" align="center" | <source lang="inform">Instead of unjust action when the being of the player is just:
 
    say "I cannot do this because of my moralic Being.";
 
    increase UnjustDeeds of player by 1;
 
    decrease the score by 10.
 
</source>
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
==== Zeitbasierte Regeln ====
 
 
 
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für Zeitbasierte Regeln
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="56" | Typ
 
|style="background-color:#FCD5B4" | When play begins, When play ends, <BR>When scene S begins, <BR>When scene S ends, Every turn
 
|style="background-color:#E6B9B8" align="center" | When scene begins<BR>scene: blue-Monday-feeling
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="67" | Name
 
|style="background-color:#FCD5B4" | Name der Regel (wenn gewünscht)
 
|style="background-color:#E6B9B8" align="center" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="108" | Reihenfolge
 
|style="background-color:#FCD5B4" | (nur, wenn gewünscht; Bezugspunkt ist <BR>immer das durch den Typ festgelegte <BR>Regelbuch)<BR><BR>ganz am <Anfang|Ende><BR><vor|nach|statt> Regel <R>
 
|style="background-color:#E6B9B8" align="center" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="33" | Bedingungen
 
|style="background-color:#FCD5B4" | Alles, was wahr oder falsch sein kann
 
|style="background-color:#E6B9B8" align="center" | wenn Spieler im Haus ist
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="75" | informelle<BR>Beschreibung
 
|style="background-color:#FCD5B4" | Was wird durch die Regel getan? <BR>Was ist durch sie erlaubt/verboten?<BR>Was wird durch sie verändert?  <BR>Welche Aktivitäten führt sie ungefähr aus? <BR>(evt. I7-Codestücke zur Verdeutlichung)
 
|style="background-color:#E6B9B8" align="center" | * say "I feel so slumberous"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="90" | Ergebnisse<BR>(Outcome)
 
|style="background-color:#FCD5B4" | Bedingungen angeben für:<BR>* <Erfolg|Misserfolg|benanntes Ergebnis><BR>* Ergebnis unentschieden<BR><BR>Geplante Verwendung von Ergebnissen <BR>(in Aktionen, anderen Regeln, …)
 
|style="background-color:#E6B9B8" align="center" | unter allen Bedingungen: <BR>Regelstatus unentschieden
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="99" | Benannte <BR>Ergebnisse
 
|style="background-color:#FCD5B4" | <Ausdruck1> bedeutet <BR><Erfolg|Misserfolg|Unentschieden>
 
|style="background-color:#E6B9B8" align="center" | keine
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="22" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="103" align="center" | <source lang="inform">When the blue-monday-feeling begins
 
when player is in house,
 
    say "I think that I will be
 
    unable to do something productive the next time...".
 
 
 
Every turn when the blue-monday-feeling is happening,
 
    say "I feel so slumberous".</source>
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
 
 
==== Prozedurale Regeln ====
 
*  Diese Spezifikation verwendet man, wenn man bestehende oder bereits definierte Regeln '''unter bestimmten Umständen''' nicht oder schon oder anders verwenden möchte (dazu vgl. [[Benutzer:Andyk/Mitschriften/Technische_I7-Auseinandersetzungen#Hacking:_Einsicht_und_Modifikation_der_I7-Tiefenstrukturen|hier]] )
 
* Gibt es keine speziellen Umstände, braucht man auch keine Prozedurale Regel
 
* Prozedurale Regeln kann man als Metaregeln ansehen, die dazu führen, dass unter bestimmten Bedingungen (z.B. in einer bestimmten Szene) bestimmte Regeln (z.B. die Regel, dass die Zeit vergeht) anders als normalerweise anwenden (unterdrücken oder mit einer anderen Regel ersetzen)
 
 
 
 
 
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für Prozedurale Regeln
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="125" | Aktion
 
|style="background-color:#FCD5B4" | * Regel <R> ignorieren<BR>* <R> durch <R2> ersetzen<BR>* ignorierte <R> wiederherstellen<BR>* Ergebnis von <R> unterdrücken<BR>* ignoriertes Ergebnis von <R> wiederherstellen<BR>* verschiebe <R> (vor|nach> <R2>
 
|style="background-color:#E6B9B8" align="center" | Die "Turn Sequence Rules" <BR>ignorieren
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="67" | Bedingungen
 
|style="background-color:#FCD5B4" | Alles, was wahr oder falsch sein kann
 
|style="background-color:#E6B9B8" align="center" | wenn eine Aktion der<BR> Aktionsgruppe "acting fast" <BR>ausgeführt wird
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="108" | Bemerkungen
 
|style="background-color:#FCD5B4" | Warum braucht man diese Prozedurale Regel?<BR>Was will man damit für ein Verhalten erzielen?
 
|style="background-color:#E6B9B8" align="center" | Alle Aktionen, die man in dieser<BR> Aktiongruppe definiert, performen<BR>schneller, weil ein Haufen von<BR> komplexen und oft auftretenden <BR>Regeln ignoriert werden.
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="18" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="118" align="center" | Procedural rule when acting fast: ignore the turn sequence rules.
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
==== Individuelle Regeln / Regelbücher ====
 
 
 
=== Aktivitäten ===
 
 
 
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für Aktivitäten
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="23" | Name
 
|style="background-color:#FCD5B4" | Name der neuen Aktivität
 
|style="background-color:#E6B9B8" | Soultransferring
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="67" | Objektbezug
 
|style="background-color:#FCD5B4" | (something|nothing)
 
|style="background-color:#E6B9B8" | something
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="144" | Variablen
 
|style="background-color:#FCD5B4" align="center" | (können von den Regeln <BR>geändert/gelesen werden)<BR><BR>Variablen anzugeben wird nur sinnvoll sein,<BR>wenn man schon relativ konkrete <BR>Vorstellungen hat, was die Aktivität<BR>bezwecken soll.<BR><BR><Value1> genannt <Name1>
 
|style="background-color:#E6B9B8" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="181" | informelle<BR>Beschreibung
 
|style="background-color:#FCD5B4" align="center" | Was wird durch die Aktivität ausgeführt <BR>und was sind die Bedingungen für das <BR>Ausführen der Aktivität? Unter welchen<BR>Umständen wird die Aktivität aufgerufen? <BR>Diese Beschreibung ist sinnvoll, wenn man nur<BR>weiß, dass man die Aktivität brauchen wird, <BR>aber die Regeln noch nicht explizit definiert<BR>werden (mangels Zeit, fehlender Details <BR>oder anderer Verantwortungsbereich).
 
|style="background-color:#E6B9B8" | Der Spieler wird aufgrund seiner<BR>im Spiel bekannt gegebenen Wahl<BR>in eine andere Person transferiert.<BR>Diese Aktivität triggert im Kontext<BR>des Spiels "Sein und Schein V2" <BR>das Ende der Szene <BR>"Carry on Nature",  in der sogut <BR>wie alle üblichen I7-Befehle<BR>suspendiert sind. Das eigentliche<BR>interaktive Spiel beginnt erst<BR>danach.
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="4" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="64" align="center" | Soultransferring something is an activity.
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
 
 
==== Regeln für Aktivitäten ====
 
 
 
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für Aktivitäts-bezogene Regeln (Object-parametrized rulebooks)
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="56" | Typ
 
|style="background-color:#FCD5B4" | (Before |For | After)
 
|style="background-color:#E6B9B8" align="center" | For
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="67" | Name
 
|style="background-color:#FCD5B4" | Name der Regel (wenn gewünscht)
 
|style="background-color:#E6B9B8" align="center" | the soul transfer rule
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="108" | Reihenfolge
 
|style="background-color:#FCD5B4" | (nur, wenn gewünscht; Bezugspunkt ist <BR>immer das durch den Typ festgelegte <BR>Regelbuch)<BR><BR>ganz am <Anfang|Ende><BR><vor|nach|statt> Regel <R>
 
|style="background-color:#E6B9B8" align="center" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="50" | Betroffene Aktivität
 
|style="background-color:#FCD5B4" | <Aktivität>
 
|style="background-color:#E6B9B8" align="center" | Soultransferring <someone>
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="15" | Bedingungen
 
|style="background-color:#FCD5B4" | wenn <andere Aktivität> (nicht) läuft
 
|style="background-color:#E6B9B8" align="center" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="95" | Beschreibung
 
|style="background-color:#FCD5B4" | Was wird durch die Regel getan? <BR>Was ist durch sie erlaubt/verboten?<BR>Was wird durch sie verändert?  <BR>Welche Aktivitäten führt sie ungefähr aus? <BR>(evt. I7-Codestücke zur Verdeutlichung)
 
|style="background-color:#E6B9B8" align="center" | * Glückwunsch-Text zum neuen Körper<BR>* Befehlsprompt auf Standard ändern<BR>* Spielerin auf "target"-Person ändern
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="21" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="86" align="center" | <source lang="inform">Rule for Soultransferring someone (called the target)
 
(this is the soultransfer rule):
 
say "[paragraph break]I hope you enjoy being [the target].
 
            Conversion is excluded[line break]";
 
change the command prompt to "> ";
 
change player to the target.</source>
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
=== Szenen ===
 
 
 
{| class="wikitable" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für Szenen
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="56" | Typ
 
|style="background-color:#FCD5B4" | (Wiederkehrend|Einmalig)
 
|style="background-color:#E6B9B8" align="center" | Einmalig
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="67" | Name
 
|style="background-color:#FCD5B4" | Name der Szene
 
|style="background-color:#E6B9B8" align="center" | Call on Nature
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="108" | Start-<BR>Bedingung
 
|style="background-color:#FCD5B4" | Unter welchen Umständen beginnt die Szene?<BR>Alles, was wahr oder falsch sein kann<BR>(Wenn Szene S endet, Wenn Punktezahl >10,…)
 
|style="background-color:#E6B9B8" align="center" | Wenn das Spiel beginnt
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="72" | End-<BR>Bedingung
 
|style="background-color:#FCD5B4" | Unter welchen Umständen endet die Szene?<BR>Alles, was wahr oder falsch sein kann<BR>(Wenn Szene S endet, Wenn Punktezahl >10,…)
 
|style="background-color:#E6B9B8" align="center" | Wenn der Spieler nicht mehr im Himmel ist
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="105" | Plot
 
|style="background-color:#FCD5B4" | Was passiert?<BR>Welche Rätsel/Aufgaben sind zu bewältigen?<BR>Welche Gegenstände zu holen?<BR>Sind besondere  Regeln/Aktivitäten wichtig?
 
|style="background-color:#E6B9B8" align="left" | * Der Spieler muss nur die gestellten Fragen beantworten<BR>* Das Standard I7-Verhalten ist suspendiert<BR>* Die Eingaben werden mit After reading a command-Regeln abgefangen
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="61" | Ausgang
 
|style="background-color:#FCD5B4" | Wie endet die Szene? Interessant, wenn man <br>mehrere Ausgänge vorsieht und Daran <br>[[#Zeitbasierte_Regeln|"Zeitbasierte Regeln"]] (When Szene x ends happily…)<br>anknüpft.
 
|style="background-color:#E6B9B8" align="center" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="15" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="138" align="center" | <source lang="inform">A scene has a number called step.
 
Call on nature is a non-recurring scene.
 
Call on nature begins when play begins.
 
Call on nature ends when the player is not in heaven.
 
The step of call on nature is 0.
 
When Call on nature begins:
 
clear the screen;
 
now the step of call on nature is 1;
 
say "[paragraph break][paragraph break][step of call on nature]:
 
        Why do you think you are here? You think you can relax with
 
        playing a simple interactive fiction?";
 
change the command prompt to "(Y/N)? ";
 
stop the action.
 
 
 
When Call on nature ends:
 
say "[paragraph break]Nature left you alone with your new destiny";
 
change the command prompt to "> ";
 
change the left hand status line to
 
        "[the player's surroundings] / [turn count] turns / [score] points";
 
change the right hand  status line to "[time of  day]".
 
</source>
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 
 
 
=== Relationen ===
 
* Im Prinzip sind Relationen Eigenschaften, die einem Ding verglichen mit einem anderen Ding zukommen.
 
* Prädikatenlogische Interpretation: Eine Relation ist ein Prädikat, das ein Individuum näher bestimmmt.
 
* Graphentheoretische Interpretation: Relationen sind Kanten. Sie verbinden zwei Knoten miteinander.
 
* Technische Details gibt's [[Benutzer:Andyk/Mitschriften/Technische_I7-Auseinandersetzungen#Relationen|hier]]
 
 
 
* "the stone, and the table, have no opinions, emotions, knowledge or memory. If the stone is taken away and then put back, nothing has changed. People, on the other hand, tend to remember having met each other before; they like being in some places, but not others; their behaviour depends on who, or what, is nearby. Being conscious, they have internal states, unlike the stone. Relations are a simple but powerful way to express and talk about such connections, and although they have numerous uses in physical contexts too, they are at their most powerful when helping to make the characters of interactive fiction come alive."
 
 
 
 
 
{| class="wikitable" align="center" <hiddentext>generated with [[:de:Wikipedia:Helferlein/VBA-Macro for EXCEL tableconversion]] V1.7<\hiddentext>
 
|- style="font-size:11pt"
 
|style="background-color:#D8D8D8;font-weight:bold" width="82" colspan="3" rowspan="2" height="15" align="center" | Spezifikation für Relationen
 
| width="4"  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-weight:bold" colspan="2" height="16" align="center" valign="bottom" | Struktur
 
|style="background-color:#D99795;font-weight:bold" rowspan="2" align="center" | Beispiel
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FAC090;font-style:Italic" height="16" align="center" valign="bottom" | Property
 
|style="background-color:#FAC090;font-style:Italic" align="center" valign="bottom" | Value / Beschreibung
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="102" | Name
 
|style="background-color:#FCD5B4" | Name der Relation
 
|style="background-color:#E6B9B8" align="center" | Justice
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="92" | Objekte
 
|style="background-color:#FCD5B4" | Welche Objektarten werden verbunden?<BR>Links: <thing|room|person|new kind><BR>Rechts: <thing|room|person|new kind><BR><BR>ggf. Name der rechten Seite (Ehepartner, Haustier<br>, Freundin, Bruder,…)
 
|style="background-color:#E6B9B8" align="center" | Links: People<BR>Rechts: People
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="108" | Quantität
 
|style="background-color:#FCD5B4" | * 1-zu-1 Beziehung<BR>* 1-zu-Viele-Beziehung<BR>* Viele-zu-1-Beziehung<BR>* Viele-zu-Viele-Beziehung<BR>* Gruppen-Beziehung <BR>* Bedingung wann Relation zutrifft
 
|style="background-color:#E6B9B8" align="center" | Bedingung: <BR>Wenn das Sein <BR>der Personen gleich ist
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="93" | Typ
 
|style="background-color:#FCD5B4" | (S|A)<BR>S… Symmetrisch (nur: 1-zu-1, Viele-zu-Viele)<BR>A… Asymmetrisch<BR><BR>S: Relation geht in beide Richtungen<BR>A: geht nur in eine Richtung (default)<BR>
 
|style="background-color:#E6B9B8" align="center" | S
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="161" | Verben
 
|style="background-color:#FCD5B4" | to / to be <Verb> (normal oder invers)<BR><BR>(  wenns schräge Verben sind, <BR>  dann mit Beugung . Es kann <BR>  sinnvoll sein, mehrere Verben <BR>  anzugeben, die diese Relation <BR>  implizieren. Wenn das Verb von<BR>  rechts nach links verstanden<BR>  werden soll, "invers" angeben)
 
|style="background-color:#E6B9B8" align="center" | to resemble<BR>to equal
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#FCD5B4" height="46" | Bemerkungen
 
|style="background-color:#FCD5B4" | Ideen, wo man die Relation einsetzen kann;<BR>andere Implementierungsdetails<BR>etc.
 
|style="background-color:#E6B9B8" align="center" | /
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#95B3D7;font-weight:bold" colspan="3" rowspan="2" height="14" align="center" | I7-Code
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|  valign="bottom" | &nbsp;
 
 
 
|- style="font-size:11pt"
 
|style="background-color:#C5D9F1" colspan="3" height="182" align="center" | <source lang="inform">Justice relates people (called x) to another
 
(called y) when the being of x is the being of y.
 
 
 
The verb to resemble (it resembles, they resemble,
 
it resembled) implies the justice relation.
 
 
 
The verb to equal (it equals, they equal,
 
it equaled) implies the justice relation.
 
 
 
Instead of asking Sokrates about something
 
when Sokrates equals the player:
 
say "You are my friend".
 
</source>
 
|  valign="bottom" | &nbsp;
 
 
 
|}
 

Aktuelle Version vom 4. Oktober 2016, 22:20 Uhr

<root> <div class='right_side_navigation' style='width:156px;position:fixed;bottom:50px;background-color:#efefef;border-color:#bbbbbb;border-width:1pt;border-style:solid;padding:1px 2px;font-size:8pt;text-align:center;filter:alpha(opacity=90);-moz-opacity: 0.9;opacity: 0.9;'> Navigation (PSI)<br> Hauptseite (alt)<br> Hauptseite (Endspurt)<br> recent changes<br> Alle Seiten

Development<br> Endspurt<br> Dev-Talk<br> ChangeLog<br> Repository<br> Global Mindset V4<br /> Szenariosammlung<br /> Projekt-Präsentation

</div><ignore><includeonly></ignore><ignore></includeonly></ignore></root>

Inhaltsverzeichnis

Session 1 ( 09.02.2009 )

Ich habe vor, an dieser Stelle so etwas wie ein Projekttagebuch zu führen, das die Ideen, die mir beim Lesen der Bücher 3,4 und 5 kommen, kommentiert (Selbst-Dokumentation). Einzelne inhaltliche Ergebnisse (wie z.B. Inform7Code oder Analyseergebnisse, Storyboard-Ideen, Raumgestaltungen, etc.) werde ich dann nochmals explizit und pointierter an anderer Stelle verlinken, sodass man sich nicht durch das Tagebuch wälzen muss. Wer will – ich denke, dass es sinnvoll ist - kann sich an dieser Unternehmung beteiligen; kommentieren, kritisieren, erläutern. Wenn nur ein Kopf denkt, passiert es unter Umständen, dass man sich irgendwohin verfährt – und ein Vorzug unseres Projektes (also einer Kooperation) soll es ja sein, so etwas zu verhindern.

Vorbemerkungen, Zielsetzung

Bevor ich zu lesen beginne, sollte ich mir im Klaren werden, in welche Richtung ich lesen soll – also worauf ich achten soll. Als ich die besagten Bücher das erste Mal gelesen habe, hat sich bei mir auf jeden Fall so etwas wie ein elementartiger Aufbau des Staates eröffnet, der für eine objektorientierte Analyse, wie wir sie für Inform7 gut gebrauchen können, geeignet scheint. Es wird – das wurde schon angemerkt - sehr konkret beschrieben, wie der Staat auszusehen hat, wer welche Aufgaben hat, etc. Beim Lesen möchte ich mal überwiegend bei Platons Gedankenexperiment bleiben und den Gegenwartsbezug - den wir diskutiert haben und den ich auch für sinnvoll erachte - auf später verschieben, da ich fürchte, dass es beim Lesen zu sehr ablenken könnte, es sei denn, es gibt eine penetrante Assoziation, dann werde ich das kurz anmerken. Ich werde bei Motivation und Gelegenheit ein kleines Exzerpt des Buches „Methoden der objektorientierten Systemanalyse“ von Heide Balzert anfertigen, wo es darum geht, wie man die richtigen Klassen (in Inform: Kinds) und Attribute (in Inform: Kind of values) findet; einfach gesagt handelt es sich um eine Methode zur Analyse eines prosa-artigen Textes (wie z.B. eines Pflichtenhefts oder in unserem Fall eines Platon-Werks).

Wo anfangen?

Wollte eigentlich mit Buch 3 anfangen, aber irgendwie hat sich mir der Gedanke ergeben, dass man noch weiter vorne zu analysieren beginnen müsste. Deshalb bin ich nochmal zu Buch 2 und der Gyges-Stelle zurückgegangen. Die Motivation, warum Glaukon das vorschlägt ist ja, dass er beweisen will, dass man nur gerecht handelt, wenn man nicht anders kann. Wenn man freigestellt ist und nicht mit Konsequenzen rechnen muss, dann tut man Unrecht. Und was dann ab 360e kommt ist eigentlich Objektorientierung in Reinform. Glaukon geht von zwei Klassen/Konzepte „Gerechter“ und „Ungerechter“ aus wie von zwei Tierarten (Katze und Maus) – beide verhalten sich völlig anders und haben auch ganz andere Eigenschaften. Wir stellen „jeden als vollendet in seiner Art hin“. Hier werde ich wahrscheinlich das nächste Mal beginnen, ein paar Merkmale von Glaukons Modellierung Gerechter/Ungerechter zu explizieren.--Andyk 01:10, 13. Feb. 2009 (CET)

„Der Gipfel der Ungerechtigkeit ist es, gerecht zu scheinen, ohne es zu sein.“

Diesen Punkt finde ich sehr wichtig. Man stellt die philosophische Erkundigung, was Gerechtigkeit sei, gerne einem "oberflächlichen", "technizistischen" Schwarz-Weiß-Denken gegenüber. So einfach ist das nicht. Platon selbst ist ungeniert dualistisch. --anna 15:42, 17. Mär. 2009 (UTC)

Session 2: Sein und Schein ( 22.02.2009 )

Nun hab ich endlich Zeit gefunden, ein paar meiner Notizen von letzter Woche zu digitalisieren. Das letzte Mal habe ich bemerkt, dass Glaukon die beiden Personen Gerechter und Ungerechter ganz genau auseinanderdividiert und dass sich das ganz gut mit Objektorientierter Modellierung verbinden lässt. Ich habe versucht, in einer kleinen Inform7-Implementierung und parallel dazu allgemein anhand eines Klassendiagramms wichtige Teile von dieser Gegenüberstellung von Gerechtem und Ungerechtem zu modellieren. Diese Gegenüberstellung ist von Glaukon genau so konstruiert, dass es darauf hinausläuft, dass man nur aus Zwang gerecht handelt. Ein wichtiges Werkzeug, damit diese Konsequenz aufgeht, ist die Unterscheidung von Sein und Schein.

  • Eine ideale Gerechte Person IST gerecht, und muss auch, wenn sie den Leuten ungerecht erscheint, gerecht handeln. (Wobei ich mich frage, wie man ganz persönlich wissen kann, was gerecht IST, wenn man bei jeder gerechten Handlung eine auf den Deckel bekommt, weil die gerechte Handlung dem Anschein nach ungerecht ist. Das führt wohl bereits hin zur Rolle der Erziehung und der sozialen Verstrickungen.)
  • Eine ideale ungerechte Person vollzieht ihre ungerechten Taten derart, dass man ihr nie draufkommt, dass die Taten "in Wirklichkeit" ungerecht sind, was zur Folge hat, dass auch sie selbst von 'den Leuten' als gerecht gesehen wird. Durch Rhetorik, Tapferkeit, Beziehungen baut sie den Schein der Gerechtigkeit auf. Falls sie einmal einen Fehler begeht, helfen ihr diese Fähigkeiten, ihn auszubalanzieren.
  • Ich habe auch noch 'die Leute' modelliert, denn man kann sich fragen, welcher Gerechtigkeitsstatus denen zukommt. Ich habe die Entscheidung getroffen, dass ihre Erscheinung 'neutral' ist (sozusagen: die graue Masse, die nicht besonders auffällt) und dass ihr Sein 'unentschieden' ist. Diese Leute sollte man nicht als eigenständige Personen sehen, sondern eher als die Vorstellung die man sich selbst als Antwort auf die Frage 'Wie könnte man meine Handlung beurteilen?' gibt. In der Glaukon-Argumentation ist das jedenfalls nicht so im Vordergrund, aber IMHO eine wichtige Frage. Denn wenn diejenigen, die den Gerechtigkeitsstatus beurteilen (den Ungerechten loben und den Gerechten Foltern, Fesseln und Kreuzigen), alle gerechte Leute sind, dann müssten sie wissen, dass gerechte Handlungen nicht immer gerecht erscheinen. Und wenn sie ungerechte Leute sind, kann man sich auf ihr Urteil nicht verlassen, da es ihnen nicht um den Gerechtigkeitsstatus der Handlung geht, sondern darum, welche Vorteile eine bestimmte Beurteilung für sie selbst bringt.
Es ist ein doppelter, verschränkter Dualismus. Einerseits gerecht/ungerecht, andererseits Sein/Schein. Daraus ergeben sich arithmetisch vier Kombinationen. (Platon ist ja auch Mathematik-Freund). Wie man diesen formal errechneten Kombinationen psychisch-sozialen Inhalt zuordnet gehört ins Überschneidungsgebiet von Mathematik und Ethik. --anna 15:51, 17. Mär. 2009 (UTC)
Wenn nicht ein dreifacher. Beim Betrachten der ersten Implementierung hat der Umstand eine starke Rolle gespielt, daß diese Struktur zum einen auf eine Person anwendbar ist und zum anderen auch auf eine Handlung (s. a. Diskussionsseite). --H.A.L. 09:37, 19. Mär. 2009 (UTC)

Wenn man 'Hochbegabt an Leib und Seele' ist, warum sollte man ungerecht sein?

  • Diese Trennung von Gerechter und Ungerechter hat den Sinn, dass man sie am Ende einander gegenüberstellen kann: "[...] dann sollen sie beurteilt werden, wer der glücklichere ist."
  • Wenn man sich durchliest, was der Ungerechte so alles vollbringen soll dann wünsch ich mir schon rein aus Faulheit bzw. weil es zu stressig ist, nicht ungerecht zu sein. Ein Anforderungsbeispiel, das eine ideale ungerechte Person erfüllen muss:
    • Sie muss das Durchführbare sogut wie immer vom Undurchführbaren auseinanderhalten. Das geht nicht. Wenn sie Fehler macht, hat sie zwar ihre Redekunst und ihre Beziehungen, ihre körperliche Kraft und das ungerecht verdiente Geld zur Hilfe, aber die Fehler dürfen nicht zu häufig sein, denn sonst wird der Schein bald löchrig. Das dürfte ein ungeheurer Druck sein, dem man ausgesetzt ist.
  • Das Problem, dass man in Inform7 durch überlagerte Szenarios deutlich machen könnte ist, dass es zu anstrengend ist ungerecht zu sein, da man Fehler macht und dass Ehrlichkeit (im Schein das Sein durchblicken lassen --> Transparenz) auch für sich selbst vorteilhaft ist, weil man nicht so streng auf die Konsistenz der Mauer des Scheins zu achten braucht.
  • Das ist nur so eine Idee, die von der Rezeption wegführt. Bis jetzt habe ich eher die Glaukon-Idee, dass der Ungerechte immer belohnt wird, in Inform7 integriert.

Inform7-Implementierungsentwurf

Klassendiagramm über wichtige Stellen von Glaukons Argumentation

UPDATE: Es gibt eine Version von "Sein und Schein", wo die Auswahl der Spielfigur implementiert ist.


  • Ich habe im Probegalopp-SVN-Verzeichnis das Modell, das ich allgemein in Form eines Klassendiagramms dargestellt habe, versucht in Inform7 zu implementieren. Das Ganze ist noch nicht sehr anspruchsvoll und hat keine Handlung. Ein paar Bemerkungen dazu:
  • Es gibt einen Status der Gerechtigkeit, der einen der folgenden Werte annehmen kann: gerecht, ungerecht, unentschieden, neutral.
  • Jeder Mensch kann charakterisiert werden durch sein Sein und durch seinen Schein. Sein und Schein sind jeweils Stati der Gerechtigkeit.
  • Die Gruppe der Menschen kann in Untergruppen aufgespalten werden: Gerechte, Ungerechte und Neutrale ('die Leute').
  • Mensch ('human') soll in diesem Framework statt dem Inform7-Konzept 'person' verwendet werden.
  • Handlungen können gerecht oder ungerecht sein (als kinds of actions modelliert). Man kann mit einer Zuweisung der folgenden Art bestimmen, um welche Art von Handlung es sich handelt:
Attacking is unjust action.
Kissing is just action.
  • Es gibt nun 4 Kombinationen, die auftreten können, wenn ein Mensch eine Handlung vollzieht:
    • Gerechter Mensch --> Gerechte Handlung:
    • Gerechter Mensch --> Ungerechte Handlung
    • Ungerechter Mensch --> Ungerechte Handlung
    • Ungerechter Mensch --> Gerechte Handlung
  • Die Logik der von mir modellierten Welt verhindert, dass ein Gerechter Mensch ungerechte Handlungen vollzieht und ein ungerechter Mensch gerechte Handlungen. (Details siehe Inform7-Code)
  • In jedem Menschen ist ein Zähler integriert, der zählt, wieviele gerechte respektive ungerechte Handlungen versucht bzw. durchgeführt worden sind (Das könnte einem am Ende vor die Nase gehalten werden)
  • Interessant finde ich, dass die Kapselung des Seins gegenüber dem Schein IMHO genau der Kapselung von privaten und öffentlichen Variablen in der Objektorientierten Programmierung entspricht. Im Klassendiagramm habe ich das folgendermaßen angedeutet:
    • sowohl Being als auch Appearance sind private Variablen. Das deutet das Zeichen '-' üblicherweise an.
    • die öffentliche Funktion getAppearance bedeutet, dass jede andere Klasse (also jeder andere Mensch zum Beispiel) die Erscheinung ansehen kann. (öffentliche Variablen oder Funktionen werden mit dem vorangehenden Zeichen '+' angedeutet)
    • da es keine getBeing-Funktion gibt, weiß niemand (außer die Programmierer) ob dieser Mensch seinem Wesen nach ein gerechter oder ein ungerechter Mensch ist (niemand würde eine Änderung der privaten Variable Sein direkt bemerken - es sei denn, dass sie in der Funktion getAppearance irgendwie verwendet würde).
    • Man hat hier also genau die Unterscheidung zwischen öffentlicher Fassade und geheimer, interner Programmlogik (wie plausibel das in unserer Welt ist, ist eine andere Frage, aber sowohl bei diesen Platon-Stellen als auch in der Objektorientierten Welt kann ich diese Struktur erkennen).
  • Was sich aus diesem Framework machen ließe:
    • Zunächst wählt die Spielerin, was sie gerne SEIN würde (welche Auswirkungen das auf ihre Erscheinung hat, lässt man im Unklaren)
    • Nun wird die Spielerin vor bestimmte Probleme gestellt, die sie lösen muss (wobei die Regeln der Welt gelten, dass gerechte Personen nur gerecht handeln können und vice versa mutatis mutandis; der Versuch wird mitgezählt)
    • Entsprechend Glaukon muss ein gerechter Mensch auf jeden Fall getötet werden und ein ungerechter muss das Spiel auf jeden Fall gewinnen.
    • Man könnte ab einer bestimmten Anzahl an Versuchen, entgegen seinem Sein zu handeln, das Sein der Spielerin verändern (von Gerecht auf Ungerecht und vice versa). Auch das könnte man mitzählen (nicht implementiert).
    • Das wäre ein kleines Motivationsspiel für die Frage der Gerechtigkeit, die dann im Staat mit dem Aspekt der Erziehung und der Gemeinschaft beleuchtet wird.

'einen Staat in einem Denkentwurf entstehen lassen' [369a]

Im Folgenden ein paar Überlegungen und Aspekte, die mir im zweiten Buch bei der Entstehung des Staates (ab ca. 369a) aufgefallen sind:

  • 369b: ein Staat entsteht, weil keiner von uns auf sich allein gestellt sein kann, sondern vieler anderer bedarf.
    • Eine Stelle, dir mir interessant erscheint: "da sie [die Leute] vielerlei Bedürfnisse haben, so lassen wir viele in einer Siedlung als Mitbürger und Helfer zusammenkommen; dieser Siedlungsgemeinschaft geben wir den Namen Staat". Und ein paar Zeilen später: "Nun wollen wir in Gedanken einen Staat von Anfang an entstehen lassen. Es schafft ihn aber, so glaube ich, unsere eigene Bedürftigkeit!"
    • Wie kann man das <Es schafft ihn aber unsere eigene Bedürftigkeit> verstehen? Vielleicht so? Die ganze Staatskonzeption passiert nicht zum Spaß, sondern aufgrund der Notwendigkeit heraus, dass solche Zweckgemeinschaften selbst einer gewissen Struktur bedürftig sind.

Ansatz für unser Projekt

  • Zu Spielbeginn sind wir mit einer Art Reiseführer oder Erzähler konfrontiert, der die Spielerin zunächst in die Glaukon/Adeimantos-Welt (vgl. Implementierungsentwurf oben) teleportiert. Das ist eine ganz simple Welt mit wenigen Gesetzen und ohne staatlicher Struktur, die von der folgenden Grundüberlegung ausgeht:
    • wie willst du das Beste aus deinem Leben machen? Warum glaubst du, bist du überhaupt hier? du glaubst, du kannst entspannen bei einer gemütlichen Interactive Fiction? weit gefehlt. Du bekommst die einmalige Chance, dein Leben neu anzufangen. Mach das Beste daraus; Viel Spaß.
    • Dann könnte man im oben beschriebenen Setting erste aufgaben bekommen (vielleicht auch Aufgaben, die alleine nicht zu lösen sind, die man nur im Zusammenhang eines Staates lösen kann - was eine gute Überleitung zur Welt des Staats sein könnte)
  • Solche Reiseführer oder Erzähler kenne ich aus den typischen 2D-Adventures. Meistens stellt sich bei solchen Spielen heraus, dass dieser Reiseführer / der Erzähler eng mit dem Plot verflochten ist, d.h. die Spielerin deswegen gerufen hat, weil er in ärgsten Schwierigkeiten steckt.
  • Und ist es nicht so? ;) Wir wollen doch tatsächlich durch dieses Projekt etwas herausfinden, was uns Platons Konzept der Gerechtigkeit im Rahmen der Staatskonzeption besser verstehen lässtt?
  • Zunächst liegt es an uns, dass wir durch die Entwicklung der Rahmengeschichte tatsächlich ein paar Schritte in dieser Frage weiterkommen, denn Geschichten und den Inform-7-Code muss man schreiben, sonst hat die Spielerin keine Möglichkeit, zu spielen.
  • Für die Spielentwicklung ist die Spielerin also ein Platzhalter, der - wenn das Spiel zu Ende ist - in den Plot vollständig integriert ist (der Platzhalter wurde also im Laufe des Spiels allmählich immer mehr bestimmt) zumindest hab ich das bei den Adventures, die ich gespielt habe (Monkey Island, Indiana Jones, Sam'n'Max, Simon the Sorcerer,...) so erlebt.
  • Dieser sich allmählich bestimmende Platzhalter hat im Entwicklungsprozess eine wichtie Rolle: Durch ihn ist man gezwungen, Entscheidungen im Handlungsverlauf und im Weltenbau zu treffen, sodass die Spielerin, die prinzipiell jede(r) sein kann, ...
    • den Sinn der Geschichte versteht
    • weiß, was sie für eine Rolle in der Handlung einnimt
    • weiß, wie sie prinzipiell ihre Aufgaben erfüllen kann, um in der Geschichte weiterzukommen
    • Spaß dabei hat und etwas daraus lernt.
Die Gyges-Geschichte und die Konstruktion des Modellstaates geben zwei verschiedene plots vor. Im ersten Fall wird die bekannte Welt vorausgesetzt und man müsste sich dazu Episoden einfallen lassen. Im zweiten Fall wird eine soziale Welt ab ovo aufgebaut. Dahinein könnte man entweder die Spielerin verwickeln, oder man läßt sie auf das Ergebnis treffen (vgl. Startrek). --anna 16:03, 17. Mär. 2009 (UTC)
Zwei unterschiedliche Plots, ja, aber nicht prinzipiell unvereinbar. Es würden sich bestimmt Möglichkeiten finden lassen. Recht trivial wäre zum Beispiel, die Gyges-Geschichte als einleitende Traumsequenz zu behandeln, aus der die Spielerin am Beginn des eigentlichen Spiels dann erwacht, nachdem sie einen ersten Denkanstoß zur Gerechtigkeit bekommen hat. Das soll natürlich nicht heißen, dass ich auf der Gyges-Geschichte beharren möchte, es ist nur eine sehr schön modellierbare Geschichte, die Platon uns da auf dem Silbertablett serviert, und als Einstieg vielleicht ganz brauchbar. --Thai 11:20, 19. Mär. 2009 (UTC)
Nach dem, was wir heute über 392b besprochen haben, müßte die Verbindung eigentlich darin bestehen, daß der Spieler eine Theaterintendantin ist, die im platonischen Staat ein Stück über Gyges aufführen möchte. --H.A.L. 21:06, 19. Mär. 2009 (UTC)

Ausblick: Was mich noch interessiert

  • Möchte mir die Code-Beispiele, die vor allem von H.A.L gemacht wurden, noch genau anschauen.
  • Ein paar Texte über die theoretischen Ansätze der Interaktivität begutachten
  • Ein bisschen mehr mit Inform7 machen. Ich komm mir bei dieser Art von Programmierung immer noch ein bisschen Fehl am Platz vor. Der Ansatz der natürlichen Sprache ist eine Sache, doch auf der anderen Seite kann man zum Beispiel von der Klasse 'object' nicht direkt ableiten, sondern muss 'thing' verwendet, um die vorgegebenen Strukturen einer Interactive Fiction nicht durcheinanderzubringen. Ganz wohl fühle ich mich jedenfalls noch nicht mit Inform7.--Andyk 18:09, 22. Feb. 2009 (CET)

Session 3: Objektorienterte Analyse ( 24.02.2009 )

Motivation für diese Session

Ich möchte in diesser Session von dem in Session1 erwähnten Buch v. Helmut Balzert „Methoden der objektorientierten Systemanalyse“ eine Darstellung in Hinblick auf unsere gemeinsame Arbeit versuchen und darüber hinaus eine Rahmenstruktur vorschlagen, die wir beim Lesen von Platons „Der Staat“ für das Erarbeiten der Inform7-Welt verwenden können.


Ich mache das vor dem Hintergrund des folgenden Problems: Wenn wir die zentralen Stellen in Platons „Der Staat“ lesen, wo es um die Frage geht: „Wie kann ein idealer Staat aussehen?“ dann können wir daran etwas verstehen und jeder wird sein Verständnis in einer anderen Art und Weise zum Ausdruck bringen. Da wir jedoch trotz des natürlichsprachigen Ansatzes von Inform7 mit einer Programmiersprache arbeiten müssen, sollten wir unser Verständnis so ausdrücken, dass zwei Punkte erfüllt sind:
  • Wir (jede Teilnehmerin unseres Projekts) können anhand der Ausdrücke nachvolllziehen, worum es geht
  • die Ausdrücke können ohne großem Interpretationsaufwand von den Teilnehmerinnen, die für die Inform7-Implementierung zuständig sind, in Inform7-Code umgesetzt werden. Man soll während der Implementierung nicht mehr überlegen müssen, wie das jetzt gemeint ist – denn das sollte in der vorherigen Phase schon passiert sein und würde die ganze vorherige Interpretations- und Modellierungsabeit wieder zunichte machen. Das zwingt uns außerdem auch, so konkret wie notwendig die einzelnen Ausgestaltungen unseres platonischen Staates zu entwerfen.
Philosophie und Informatik: Philosophisch besteht oft die Tendenz, Texte als Anstoss für weitergehende Überlegungen zu nehmen. Es gibt auch immer wieder genaue, rekonstruierende Lektüre. Aber dass man mit dem Text etwas macht, noch dazu im Einvernehmen mit einer Gruppe und in einem technischen Rahmen, ist kaum bekannt. --anna 16:18, 17. Mär. 2009 (UTC)
Dabei fällt mir persönlich auf, daß ich auch bei Umsetzungen in IF o.ä. eher dazu neige, den Text als "Anstoß" zu nehmen. Wenn ich einen Text als Erzählung umzusetzen versuche, dann extrahiere ich daraus in der Regel eine sehr grobe Vorstellung eines Sachverhalts, zu der ich dann eine Parabel entwickle. - Ich habe schon des öfteren zu meinem Leidwesen festgestellt, daß ich differenziert über die Details eines Textes nachdenken oder "etwas damit machen" kann - aber nicht beides gleichzeitig. --H.A.L. 10:22, 19. Mär. 2009 (UTC)

Genau zu diesem Zweck bietet sich Objektorientierte Analyse an. Es wird jedoch in dieser verkürzten informatischen Terminologie kaum eine Philosophin mit dieser Art von Ausdrücken vertraut sein, weshalb ich nun versuchen will, die wichtigsten Notationselemente und Begriffe kurz zu erklären und gleich mit der Notation, wie sie in Inform7 verwendet wird, zu verbinden.

Objekt (Inform7: thing)

  • [Balzert, S.31-36]
Definition

Ein Objekt „ist [..] ein Gegenstand des Interesses, insbesondere einer Beobachtung, Untersuchung oder Messung.“

Beispiele
  • Dinge ( ein ganz bestimmter Opel Manta, ein Ring, der Hörsaal 3D, die Stadt Wien)
  • Personen ( Gyges, Adeimantos, Sokrates, der da drüben mit der roten Haube )
  • Begriffe ( eine bestimmte Gerechtigkeit, eine bestimmte Krankheit, eine bestimmte Besonnenheit)
Merkmale
  • Ein Objekt ist ein konkretes Einzelding, wobei es vom Abstraktionsgrad abhängt, was man unter Einzelding verstehen will.
  • „In der objektorienterten Softwareentwicklung besitzt ein Objekt bestimmte Eigenschaften und reagiert mit einem definierten Verhalten auf seine Umgebung.“
„Die Eigenschaften eines Objektes werden durch dessen Attributwerte ausgedrückt“
Das Verhalten des Objekts wird „durch eine Menge von Operationen (Funktionen) ausgedrückt“
  • „Außerdem besitzt jedes Objekt eine bestimmte Identiät, die es von allen anderen Objekten unterscheidet.“ „Objektidentität bedeutet, daß alle Objekte aufgrund ihrer Existenz unterscheidbar sind, auch dann wenn sie zufällig identische Attributwerte besitzen. Die Identität eines Objekts kann sich nicht ändern.“

Klasse (Inform7: Kind of)

  • [Balzert, S.36-46]

Man kann Objekte besser verstehen, wenn man ähnliche von ihnen zu einer Gruppe zusammenfasst und sagt: Objekte, die diese Eigenschaften (Attribute) und diese Funktionen (Operationen) haben, sind alle von der Art/Klasse „Mensch“. Man klassifiziert alle Objekte eines bestimmten Ausschnittes der Welt (das ist so etwas Ähnliches wie die bei Aristoteles bekannte Ontologie).

In der Softwareentwicklung kehrt man diesen Prozess ein wenig um und sagt: Ausgehend von dieser Klasse (die diese Attribute und jene Operationen hat) leiten sich Objekte ab, bei denen Attribute einen konkreten Wert haben (zum Beispiel: das Attribut 'Alter' hat den Wert '23') und Operationen unter Umständen die Attribute des Objekts verändern können (dazu genauer etwas später).

Definition

„Eine Klasse beschreibt eine Kollektion von Objekten mit gleichen Eigenschaften (Attribute), gemeinsamer Funktionalität (Operationen), gemeinsamen Beziehungen zu anderen Objekten und gemeinsamer Semantik. Ferner legt die Klasse fest, wie neue Objekte dieser Klasse erzeugt werden. Eine Klasse definiert also die Eigenschaften und das Verhalten ihrer Objekte.“

Beispiel (von der Betrachtung der Einzeldinge zur Klassifikation)

Ich betrachte das Ding zu meiner Linken. Es ist gelb. Es steht darauf geschrieben „Platon. Der Staat. Reclam“. Dieses Ding ist aus Papier. Man kann es aufschlagen. Wenn man es aufschlägt, finden sich, symmetrisch aufgeteilt gedruckte Sätze. Im linken Bereich des Dings findet sich links oben eine Zahl. Im rechten Bereich findet sich rechts oben eine Zahl, die um 1 größer ist als die Zahl im linken Bereich. Es stellt sich heraus, dass die Bereiche fortlaufend durchnummeriert sind.

Ich betrachte das Ding zu meiner Rechten. Es ist blau. Es steht darauf geschrieben „Heide Balzert. Medhoden der objektorientierten Systemanalyse. Angewandte Informatik. Herausgegeben von Helmut Balzert.“. Dieses Ding ist ebenfalls aus Papier und man kann es aufschlagen. Die Nummerierung der Bereiche ist ähnlich wie bei dem gelben Ding.

Das Ding links, ich nenne es „gelbSchlag“, hat nach meiner obigen Betrachtung folgende Eigenschaften:

  • Farbe: gelb
  • Material: Papier
  • Inhalt: gedruckte Sätze, nummeriert

Man kann folgende Dinge mit „gelbSchlag“ durchführen:

  • Aufschlagen
  • Weiterblättern

Das Ding rechts, ich nenne es „blauSchlag“, hat demnach folgende Eigenschaften:

  • Farbe: blau
  • Material: Papier
  • Inhalt: gedruckte Sätze, nummeriert

Folgende Dinge kann man mit „blauSchlag“ durchführen:

  • Aufschlagen
  • Weiterblättern

Es scheint so, als ob es zwischen diesen beiden Dingen eine Ähnlichkeit geben würde. Beide Dinge haben eine Farbe, sind aus dem Material „Papier“ und ihr Inhalt ist „gedruckte Sätze, nummeriert“. Beide kann man Aufschlagen und Weiterblättern. Von nun an gehören diese beiden und alle Dinge, die solche Eigenschaften und Operationen aufweisen, zur Klasse „Buch“.

Ich habe versucht, die obige in Sprache verfasste Analyse der beiden Bücher in Inform7 unterzubringen. (vgl. weiter unten )

Attribut (Inform7: Properties / Kind of Value)

  • [Balzert S.46-53]
Definition

„Die Attribute beschreiben die Daten bzw. die Eigenschaften einer Klasse. Alle Objekte einer Klasse besitzen dieselben Attribute, doch unterschiedliche Attributwerte.“

Beispiel
  • Wir haben oben die Klasse Bücher gefunden. Typische Attribute, die ich in der obigen Analyse beschrieben habe, sind: Buchtitel, Farbe und Material.
  • In Inform7 definiert man Attribute mit <kind> has a <kind of value> called <Attributname>. Zusätzlich muss man angeben, welche Werte diese Attribute annehmen können (Werte-Bereich alias Kind of Value). Standard-Wertebereiche sind 'text' oder 'numbers'. Falls man neue definieren will, muss man einen neuen Kind of Value definieren (unten im Beispiel bei side geschehen.
Merkmale
  • „Der Attributname muss im Kontext der Klasse eindeutig sein.“
  • „Im allgemeinen wird ein Substantiv dafür verwendet“. (die Farbe, der Titel,...)
  • Bei reiner Objektorientierung (bei Inform ist das nicht der Fall) dürfen die Attribute nur überc die Operationen der Klasse geändert werden. „Die Attribute sind zwar sichtbar für den Systemanalytiker, aber nicht sichtbar für andere Klassen bzw. deren Objekte.“ (Dieses Konzept nennt man auch Information Hiding)

Operation (Inform7: ungefähr Action)

  • [Balzert S.53-60]
Definition

„Operationen beschreiben die Funktionalität eines Objekts. Eine Operation ist eine ausführbare Tätigkeit im Sinne einer Funktion bzw. eines Algorithmus. Sie kommuniziert mit anderen Objekten über Ein-/Ausgabe-Parameter.[...]Operationen werden jeweils auf ein einzelnes Objekt angewandt.“

Beispiele
  • Wir haben oben die Beiden Operationen „Aufschlagen“ und „Weiterblättern“ gefunden (wobei wir davon ausgegangen sind, dass wir wissen, was beim Aufschlagen und Weiterblättern mit dem Buch passiert.
Merkmale
  • In Inform7 gibt es dieses Konzept meines Wissens nach nicht in dem genauen Sinn, da man bestimmte 'actions' auch dazu verwenden kann, 'properties' von anderen 'things' (Objekten) verändern kann. Anders gesagt: Man kann die 'actions' nicht einem 'thing' zurechnen – die actions in Inform7 bestehen eigenständig neben den Dingen in der Welt.

Beispiel, wie man das in Inform7 implementieren könnte

Verfügbar im Probegalopp-SVN-Verzeichnis

Kinds und Kind of Values

  • Buch-Definition:
    • Über einen Umweg: Ein Buch ist ein Gerät.

A book is a kind of device. A book has a text called title. The title of a book is usually "". A book has a text called color. The color of a book is usually "gray". A book has a text called material. The material of a book is usually "paper". A book has a text called content. The content of a book is usually "sentences and page numbers". The description of a book is "A [color] book[if title of the noun is empty] [otherwise] named [italic type][title][roman type][end if]. It is made of [material]. There are [italic type][content][roman type] in it. [if the noun is switched on]The book is open and I can see [a list of pages which are part of the noun].[end if]".

  • Ein Buch hat zwei Seiten (eine linke und eine rechte)

The side is a kind of value. The plural of side is sides. The sides are left and right and none. A page is a kind of thing. A page has a side called page side. The page side of a page is usually none. A page has a number variable called page number. The page number is usually 1. A page has a text variable called text. The text of a page is usually "[one of]The quick brown fox jumps over the lazy dog[or] Franz jagt im komplett verwahrlosten Taxi quer durch Bayern[or] kaufen sie jede woche vier gute bequeme pelze[or] ein wackerer bayer vertilgt jeden tag bequem zwo pfund schweinshaxe[or] karl mays pferdevieh sagt jawohl zur quellnixe am bach[or] zwölf süße boxkämpfer jagten quer durch vinyl[or] falsches üben von xylophonmusik quält jeden größeren zwerg.[or] Bei jedem klugen Wort von Sokrates rief Xanthippe zynisch: Quatsch! [or]Bei jedem klugen Wort von Sokrates rief Xanthippe zynisch: Quatsch![purely at random]".

The description of a page is "This is a [page side] page with page number [page number]. It is written: [italic type][text][roman type]". A left page is a kind of page. A right page is a kind of page. The page side of a left page is left. The page number of a left page is usually 1. The page side of a right page is right. The page number of a right page is usually 2. [Two pages are parts of every book.] A left page is part of every book. A right page is part of every book.

Actions

  • Benutzereingaben mit Aktionen verknüpfen:

Understand "browse [something]" as browsing. Understand "open [book]" as switching on. Understand "read [something]" as reading.

Lesen

Reading is an action applying to one visible thing.

Check reading: if the noun is not a book then say "I cannot read [the noun]. Maybe you should try a book!?" instead; if the noun is not switched on begin; say "(first opening [the noun])[command clarification break]"; try switching on the noun; end if.

Carry out reading: Let L be the list of pages which are part of the noun; repeat with item running through L begin; say "At [page side of item] page (#[page number of item]):[line break] [italic type][text of item][roman type][paragraph break]"; end repeat.

Report reading: say "To read more, I have to browse.".

Weiterblättern

Browsing is an action applying to one visible thing.

Check browsing: if the noun is not a book then say "I cannot browse through [the noun]. Maybe you should try a book!?" instead; if the noun is not switched on begin; say "(first opening [the noun])[command clarification break]"; try switching on the noun; end if.

Carry out browsing: pageswitch the noun.

Report browsing: say "I switched to the next page".

To pageswitch (whatever - a book): if whatever is not a book then say "[printed name of the noun] is not a book."; Let L be the list of pages which are part of the noun; repeat with item running through L: increase the page number of item by 2.

Test-Welt

  • Zwei Bücher in einem Hauus
  • Die Wand ist nur eine Spielerei

The house is a room.

The wall is a backdrop. The wall is everywhere. The description of the wall is "[one of]This wall is from Pink Floyd.[or] Impenetrable.[purely at random]".

The yellowBrowser is a book in the house. The color of the yellowBrowser is "yellow". The title of the yellowBrowser is "Platons Politeia".

The blueBrowser is a book in the house. The color of the blueBrowser is "blue". The title of the blueBrowser is "Helmut Balzert: methods of object-oriented system analysis".

Test-Kommandos

  • Platon oder Balzert lesen

test readPlaton with "x yellowBrowser / open yellowBrowser / x yellowBrowser / read yellowBrowser / browse yellowBrowser / read yellowBrowser / browse yellowBrowser / read yellowBrowser"

test readBalzert with "x blueBrowser / browse blueBrowser / open blueBrowser / x blueBrowser / read browser / browse blueBrowser / browse blueBrowser / x blueBrowser / read blueBrowser".

Zusammenfassung und Ausblick

Anbei eine kleine Tabelle, die zusammenfassen soll, was für Objektorientierung typisch ist:

Konzept Inform7-Entsprechung Erklärung Beispiel Kommentar
Objekt Instanz von thing, room, direction, region einzelner Gegenstand des Interesses das gelbe Platon-Buch
Klasse Basisklassen:
  • thing
  • room
  • direction
  • region
beschreibt die Menge von Objekten mit gemeinsamen Attributen und Operationen Buch Neue Klassen mit
kind of <bekannte Klasse> ableiten
Attribut property + kind of value beschreibt eine Eigenschaft einer Klasse Buchtitel Beim konkreten Objekt wird jedem Attribut (property) ein Wert aus dem in der Klasse definierten Wertebereich (kind of value) zugewiesen.
Operation ~Action oder
"To ..."-Phrasen
Ausführbare Tätigkeit im Sinn einer Funktion oder eines Algorithmus Weiterblättern In Inform7 nicht innerhalb der Objekte, sondern eigenständig (in der Luft hängend) zu definieren. Besser ist IMHO zu sagen, dass es kein wirkliches Äquivalent zu Operationen in Inform7 gibt.


Zu dieser Tabelle vergleiche die Diskussion.


  • Anmerkung: Wie sich das gesamte Objektorientierte Konzept zu dem 'rules' in Inform7 verhält, muss noch eigens erörtert werden (da ich die 'rules' noch nicht ganz verstanden habe).

Nachdem die grundlegendsten Elemente und Begriffe der Objektorientierung nun erklärt sind und mir der Zusammenhang bzw. die Unterschiede mit Inform7 durch die Buch-Implementierung ein bisschen deutlicher geworden sind, kann es jetzt endlich darum gehen, die Vorschläge aus dem Balzert-Buch zusammenzufassen. Nämlich: Wie soll man am Besten vorgehen, um Objekte zu analysieren? Was mir jetzt etwas klarer geworden ist, ist das Problem, dass wir dadurch, dass Inform7 sich nicht ausschließlich an objektorientierte Konzepte hält sondern durch 'actions' und 'rules' aus der Reihe fällt, die Vorschläge aus dem Buch sicher nicht alle ohne Änderungen übernehmen können.

Session 4: Einschub: Inform7 vs. Standard-Programmiersprachen ( 26.02. - 03.03.2009 )

Um die Übersicht zu wahren, verlinke ich diese Session auf eine eigene Seite. Sie kann relativ unabhängig von den anderen Überlegungen verstanden werden, da es hauptsächlich um eine technische Auseinandersetzung mit den Möglichkeiten von Inform7 geht.

Session 5: Rahmenstruktur (11. - 19.03.2009)

Motivation für diese Session

Nachdem die Technischen Auseinandersetzungen mir einen Überblick über die Möglichkeiten von I7 gegeben haben, ist es nun höchste Zeit, mit meinem Vorhaben fortzufahren. Ich wollte nämlich bereits in Session 3 „eine Rahmenstruktur vorschlagen, die wir beim Lesen von Platons „Der Staat“ für das Erarbeiten der Inform7-Welt verwenden können“. Die Vorarbeiten dazu sind geschehen und beantworten folgende zwei Fragen:

  1. Was sind objektorientierte Konzepte und inwieweit kann man sie auf I7 übertragen? (Session 3)
  2. Welche anderen Konzepte werden in I7 sonst noch verwendet und was kann man mit ihnen machen? (Technische Auseinandersetzungen)


Ich finde es sinnvoll, sich noch einmal einen Überblick über die in I7 verwendeten Konzepte zu machen, um dann mit diesem Überblick das eigentliche Ziel in diesem Projekt anzugehen: Lektüre und Diskussion der platonischen Staatskonzeption sowie paralleler und anschließender Umsetzung in I7. Version1 der Rahmenstruktur wird sich zeitlich wohl ganz gut mit der ersten Seminar-Einheit ausgehen.


Man könnte sich über die vielen einleitenden Sessions (das ist nun schon die Fünfte) wundern, die noch nicht sehr viele inhaltlichen Aspekte dabei hat. Eine kleine Rechtfertigung: Wenn man ein IF alleine schreibt, muss man sich über all diese Regelungen nicht viele Gedanken machen (Man überlegt und programmiert quasi-parallel). Sobald man aber eine Welt gemeinschaftlich aufbauen will, die viele inhaltlichen Zusammenhänge abbildet und wo man nicht einfach drauf los programmieren kann, muss man sich überlegen, wie man die Bestandteile der Welt kurz beschreibt. Man beginnt auf einer high-level-Perspektive und kann immer detaillierter und schlussendlich zum I7-Code gehen (Klar wird man manchmal auch I7-Code ausprobieren...). Die Hoffnung, das alles mit der klassischen Objektorientierten Modellierungsmethode zu machen, ist in Session 3 unrealistisch geworden, da Inform7 in wichtigen Teilen nicht objektorientiert ist.

Ausgelagert

Da die Seite zu groß wurde, hab ich die Überlegungen bezüglich der Rahmenstruktur ausgelagert:

Session 6: Inhaltliche Überlegungen (29.03.2009)

Was ist eine platonische Fiktion?

Nachdem die technischen Aspekte bezüglich der Möglichkeiten von I7 als auch die Frage, wie man die Inhalte mit Hilfe der (erweiterbaren) Rahmenstruktur in I7 umsetzen kann , halbwegs geklärt sind, wird es Zeit, Platon zu lesen und zu überlegen, wie eine platonische Fiktion im 21. Jahrhundert aussehen kann. Man könnte diese Phase aufteilen in:

  1. Platon lesen und zentrale Prinzipien/Gesetzmäßigkeiten/Figuren herausdestillieren
  2. Das Destillat auf die aktuellen Alltagserfahrungen beziehen/kritisieren
  3. Ein Big-Picture des Plots mit Rätseln, Protagonisten, Aufgaben, Szenen, etc. entwickeln, das diesen Bezug konkret implementiert
  4. Die Arbeitsgruppen arbeiten die Details unter Zuhilfenahme der Rahmenstruktur aus, einzelne Ergebnisse werden parallel in I7 implementiert

Das wäre die strukturierte und nachvollziehbare Vorgehensweise. Wenn etwas mehr Zeit wäre, würde ich diese auch vorschlagen, denn es könnten daraus sogar mehrere spannende IF's hervorgehen. Da wir aber Ende Juni eine fertige IF fertig haben wollen, dürfte es sinnvoll sein, die Schritte 1-3 vermischt und spontan durchzuführen. Daher im Folgenden ein paar vermischte Überlegungen:

Buch 2: Die Abwesenheit von Tischen und Kuchen im Schweinestaat

Zwischenbemerkung: Wo der Schweinestaat aus dem Boden gestampft wird, das ist so ein bisschen wie in Genesis oder eben Sim City, wo sich mit jedem Gedanken die Welt und ihr soziales Gefüge aufbaut.

Überblick: Gesunder Staat VS. Üppiger Staat

Was braucht man in einem Minimalstaat/Schweinestaat/Gesunden Staat?

Grundbedürfnisse
  • Nahrungsmittel / Bauer
  • Wohnungen / Baumeister
  • Kleider / Weber
  • Schuhe / Schuster
Durch Arbeitsteilung
  • Pflüge-Hacken-Werkzeuge / Schmied
  • Tapezieren / Zimmermann
  • Weidevieh / Rinder-&Schafhirten
  • Handelsware / Handelsherren
  • Schiffe / Seefahrer
  • Händler / Landesinterner Handel
  • Hilfsarbeiten / Lohnarbeiter
Im Gegensatz zum "Aufgeblähten Staat" haben sie keine
  • Zukost / Zukostbauern: Salz, Oliven, Käse, Zwiebel, Kohl, Feigen, Erbsen, Bohnen, Myrten, Eicheln, Wein
  • Tische, Pölster,
  • Gold, Weihrauch, Myrrhe
  • Freundinnen, Kuchen
  • Malerei, Stickerei,
  • Elfenbein

Der Aufgeblähte Staat

neue Berufe
  • Jäger
  • nachahmende Künstler: Dichter, Rhapsoden, Schaupeiler, Tänzer, Theaterdirektoren
  • Handwerker für weiblichen Schmuck
  • Hilfskräfte wie: Erzieher, Ammen, Wärterinnen, Zofen, Friseure, Fleisch- und Mehlspeisköche, Schweinehirten
  • Mehr Ärzte, da schlechtere Lebensweise
  • Heer der Wächter, die sonst keinen Beruf haben
    • wachsam
    • kann auf den "Such!"-Befehl hören
    • kann auf den "Fass!"-Befehl hören,
    • Tapfer, "mutvollen Herzens" VS. sanft zu Freunden

Bemerkung: >>Bei Zeus<<

Ein kleine Forumulierung, die ich mir in meinen Gedanken ausgemalt habe: "Ganz natürlich, bei Zeus" Diese oder eine ähnliche Formulierung muss unbedingt in unsere IF... Man muss sich lebhaft vorstellen, wie Platon dem Sokrates eine Frage stellen lässt und Adeimantos antwortet auf die Frage; unsicher darüber, ob ihm jetzt wieder ein Kreuzverhör bevorsteht. Danach ein paar Sekunden Stille und es scheint, als ob Sokrates nun zu einem neuen Schlag ausholen würde.

Doch stattdessen platzt er mit einem leicht lehrerhaften Unterton "Ganz natürlich.... bei ZEUS!" heraus, als ob Adeimantos Antwort nicht ohnehin schon aus seiner Frage und der vorherigen Darlegung ersichtlich gewesen wäre. Ich muss dabei immer schmunzeln.

Beispielstelle im zweiten Buch, wo er die Sache mit der Arbeitsteilung und der natürlichen Aufteilung der Talente das erste Mal entfaltet: 369d - 370b


Platokratie und nebenläufige Szenarien

Vorhin kam bei der "Der Bulle von Tölz" folgende Szene, die mir eine Idee entlockt hat:

  • Zwei der Protagonisten dieser Episode lieferten sich ein Gefecht aus Bibelzitaten, sozusagen auf die Art: Wer versteht den Herrn besser?
Zwei, drei Ansätze dazu
  • Als kleine Zwischensequenz in unserer IF könnte man - je nachdem wie unser Main-Plot konkret ausschaut - einen NPC einrichten, der einem nur weiterhilft (z.B. eine Tür öffnet oder einen Gegenstand gibt), wenn man Platons Werk gut kennt und Inkonsequenzen in der Implementierung (Diskrepanz zwischen fiktiver und idealer in der Politeia beschriebenen Welt) aufzeigt.
  • Man könnte - das wäre eine Radikalisierung der Idee - die fiktionale Welt als Gottesstaat aufbauen, nur eben mit Platons Werk als Basis/Bibel. Ein Realstaat - auch wenn er nur fiktional implementiert ist - ist ja nie ganz perfekt (weil man den Text deuten und jene Bereiche, die im Text nicht oder nur vage vorkommen, sinngemäß einrichten muss).

In beiden Fällen (Zwischensequenz oder Radikalisierung) kann man dort nicht nur direkte Inkonsequenzen mit Platons Text aufzeigen, sondern auch Meinungsverschiedenheiten unseres Teams. Das meine ich folgendermaßen: Es kann ja sein, dass wir unterschiedliche Vorstellungen, wie man die IF aufbauen muss, haben, dass aber im Team beschlossen wird, eine bestimmte Vorstellung umzusetzen. Das muss aber nicht bedeuten, dass die anderen Vorstellungen völlig ausgeblendet werden; sie könnten eben in diesem NPC integriert werden.

  • Eine komplexere Erweiterung wäre es, dass - sobald die Spielerin dem NPC einen ihrer Bedenken mitteilt - der NPC beschließt, diesen Vorschlag direkt umzusetzen. Technisch würde das bedeuten, dass man nebenläufige Szenarien entwickeln muss, in denen andere Gesetzmäßigkeiten herrschen und Gegenstände existieren.

Das Problem ist, dass das Ganze immer noch sehr abstrakt ist und keine konkrete inhaltliche Geschichte enthält. Deshalb im Folgenden noch eine sehr konkrete Idee:

Die Harmoniker. Oder: Die Welt im Jahre 2050

Wächter und Virenscanner

Der Wächter soll mit Feinden scharf umgehen und mit Freunden milde, so wie der "edle Hund". Genauso sollen auch Virenscanner die bösartigen Applikationen von den gutartigen unterscheiden.

Jetzt weiß man aber aus der theoretischen Informatik (oder evt. wenn man Hunde gut kennt), dass das nicht möglich ist. Nur bekanntes Bösartiges + bekannte Abwandlungen können erkannt werden, fremdes Bösartiges jedoch nicht (Die Bösartigkeit stellt sich erst zur Laufzeit heraus, weil man automatisiert, also mittels syntaktischer Analyse im Allgemeinen nichts über die Funktion eines Code-Stücks herausfinden kann). Je mehr Abwandlungen und Patterns jedoch berücksichtigt werden, desto öfter werden gutartige Programme als bösartig erkannt. Auch der Hund kann sich irren.

Der konkrete Plotvorschlag

Eine mögliche Welt im Jahre 2050. Die Finanz- und Wirtschaftskrise des ersten Jahrzehnts dieses Jahrtausends hat die Situation in den westlichen Ländern verschäft. Ehemalige Industriestaaten sind nur noch ein Zerrbild ihres alten Glanzes. Das europäische Projekt ist gescheitert. Das diplomatische Verhältnis der europäischen Nationen ist zerstritten und wird nur durch die gegenseitigen wirtschaftlichen Abhängigkeiten aufrecht erhalten. Seit der Annäherung der islamischen Auslegung an utilitaristische Wertvorstellungen erfreut sich der Islam großer Beliebtheit. Es gibt mittlerweile mehr moslemische als christliche Anhänger in den westlichen Ländern. Die klassische abenländische Kultur muss ihrem Untergang ins Auge blicken. Auf dem seit 2020 verlassenen Kuba (Tropische Wirbelstürme / Überschwemmungen) hat sich jedoch seit 2030 eine etwas skurrile Gruppe gebildet (die mittlerweile in Summe beachtliche 1 000 000 Personen umfasst), die die alten platonischen Schriften wieder hervorgekramt hat und nicht davon abzubringen ist, dass der Stadtstaat, so wie er in der Politeia beschrieben wird, weltweit umgesetzt werden muss, um die Glückseligkeit der Menschen zu garantieren. Die Besonderheit ist die Bedingung für die Mitgliedschaft: Vermittels einer speziellen Technologie müssen alle vergangenen Erinnerungen der neuen Mitglieder gelöscht werden, sodass verderbliche Erziehungsmuster die Stabilität der Stadtstaaten nicht gefährden. Und der Zustrom ist erstaunlich enorm, seitdem die Unternehmung von 9 Wiener Philosophen und Informatikerinnen ins Leben gerufen wurde. Mittlerweile gibt es 60 solcher Stadtstaaten mit jeweils zwischen 1.000 und 30.000 Mitglieder, die (außer den gegenseitigen Handelsbeziehungen und einem Friedensvertrag) weitgehend voneinander unabhängig sind. Die große Gemeinsamkeit ist die Verpflichtung, ihr Leben und ihre Stadtstaats-Ordnung nach der Politeia zu richten. Es gibt jedoch keinen Kanon, der eine bestimmte Interpretation vorschreibt, weshalb sich die einzelnen Stadtstaaten vor allem in Bereichen, von denen die Politeia nicht so ausführlich und klar spricht, stark voneinander unterscheiden (neue Technologien, Außenhandelsbeziehungen, Verhütungsmittel, Reisen in andere Länder,...) - einzig der Herrscher oder die Herrscherin des Stadtstaates bestimmen über die Form der Interpretation.

Ein Charakter, den die Spielerin spielt, ist Abqurah Al-Makki (Name verändert), eine muslimische Journalistin aus dem Iran, die beauftragt wird, nach Kuba zu reisen und über die inneren Vorgänge zu berichten. Für Gäste, die sich ihr Gedächtnis nicht löschen lassen, ist der Zutritt nämlich streng verboten. Man vermutet aufgrund des wachsenden Zustroms und der knappen kubanischen Landfläche mittelfristig kriegerische Aktivitäten.

Die Spielerin erhält ein kleines als Anhänger getarntes Notebook mit Satellitenverbindung zum Internet, um live aus den Stadt-Staaten über die geheimen Pläne der Harmoniker, wie sie sich selbst nennen, zu bloggen. Nachdem ihr Flugzeug von den Harmonikern überraschend abgeschossen und im Meer versenkt wurde (bislang zeigten sich die Harmoniker nicht aggressiv gegenüber Besuchen aus anderen Ländern, sie wiesen sie einfach ab und schickten sie zurück), konnte sie sich gerade noch mit dem Fallschirm auf eine Nebeninsel (Isla de la Juventud - Insel der Jugend) retten. Die erste Aufgabe ist, unerkannt an den Wachen des dort gegründeten Stadtstaats vorbei zu kommen. Ihre Hauptaufgabe danach ist, mindestens 5 der Stadtstaaten zu besuchen und eine Einschätzung der Lage abzugeben, wobei das Problem besteht, dass viele der Herrscherinnen ein sehr zurückgezogenes Leben führen. Abqurah muss über Mittelsmänner erst ihre Fähigkeiten und ihre Kenntnis der platonischen Staatslehre beweisen, bevor sie würdig ist, in den inneren Kreis einzutreten, wo die Herrscherin sich aufhält.

Und jetzt kommt die Sache mit dem Anti-Viren-Scanner zum Zug: Sie muss in den ersten Stadtstaat Nueva Gerona auf der Insel der Jugend reinkommen. Sie weiß, dass sie mit ihrem Kopftuch und dem Notebook-Schmuck von den Wächtern als verdächtig eingestuft wird. Eine Möglichkeit wäre es nun, die Wächter abzulenken, so wie man einen edlen Hund ablenkt, indem man ihm etwas gibt, was ihn freundlich stimmt (einen Hundeknochen oder einen Stock...):

  • Sie weiß, dass die Wächter besonders streng erzogen werden und sehr wenig an - sagen wir "aufregender" Literatur zu lesen/sehen bekommen. Platon sei Dank hat sie noch ein Playboy-Magazin in ihrer Tasche, das sie auf eine Parkbank legt. Sie wartet, bis die Wächter am Eingang das Hochglanz-Magazin finden und kann nun ungehindert reingehen.
  • Eine weitere Möglichkeit wäre, herauszufinden, welche Güter in diesem Stadtstaat nicht produziert werden, die die Wächter jedoch brauchen. Da die Wächter ja selbst nicht produzieren dürfen, müssen sie auf die Produktion warten. Zum Beispiel könnte aus einem Gespräch mit den Wächtern hervorgehen, dass dieser Stadtstaat eine Schweinestaat sei und dass sie gehört haben, dass in üppigen Stadtstaaten guter Marmorkuchen gemacht wird. Von irgendwo muss die Spielerin also einen Marmorkuchen herbekommen.

Diese Ideen sind nur mal so aus dem Bauch heraus geschrieben und nicht perfekt. Ihr könnt den Text direkt verändern und ergänzen, so wie ihr ihn gerne haben wollt - durch die Wiki-History können wir alte Versionen jederzeit wiederherstellen bzw. ansehen, also keine Scheu: Dieses Gedächtnis kann nicht gelöscht werden ;) --Andyk 21:04, 29. Mär. 2009 (UTC)

Session 7: IF und endliche Automaten (14.04.2009)

Hinführung

Habe mich ein bisschen bei den Inform7 Extensions umgesehen und habe dabei Simple CYOA entdeckt, das menübasierte Spiele erlaubt, die IMHO vor allem für IF-Anfänger geeignet sind. Pro Zustand gibt es maximal 4 Alternativen, wovon man eine davon auswählen kann. Danach kommt man in den nächsten Zustand. Natürlich schränkt das die Freiheiten der Spielerin drastisch ein: Man kann nicht mehr beliebig herumlaufen, die Gegend erkunden, Fehler machen und sukzessive korrigieren, sondern muss den Wegen folgen die vorgegeben sind; So wie der Zug nur auf den Gleisen fahren kann und nicht irgendwo auf der Wiese. Wenn man dann am Ziel angelangt ist, hat man nicht das Gefühl, es aus eigener Anstrengung geschafft zu haben. Es war ja fast eine notwendige Folge, dass man angekommen ist.

Trotzdem habe ich die Extension mal ausprobiert und zwar aus folgenden Gründen:

  • Man kommt sehr schnell zu spielbaren Resultaten; der Ablauf ist geordnet und überschaubar (mit all den obigen Nachteilen, weswegen ich nicht dafür wäre, das ganze Spiel auf diese Art zu implementieren)
  • Ich lese für eine Projektmanagement-Vorlesung gerade ein Buch, in dem vorgeschlagen wird, so bald wie möglich "Versuchsballons" steigen zu lassen. Das sind Prototypen, die man am Anfang des Projekts macht und die man durch die kritischen Rückmeldungen der Teammitglieder und der Auftraggeber sukzessive verändert, um am Ende tatsächlich das zu bekommen, was man sich ungefähr erhofft hat:

    "Weil man frühzeitig und häufig falsch liegt, gelangt man schnellstmöglich auf die richtige Fährte. Die Probleme, mit denen wir es zu tun haben, und die Lösungen, die wir ableiten, sind viel zu komplex, um komplett ausgeformt dem Kopf einer einzelnen Person zu entspringen. Werden Sie dickhäutig, und kommen Sie mit einem 'Was haltet ihr von dieser Idee?', auch wenn Sie genau wissen, das Sie völlig daneben liegen." (DeMarco et al.: Adrenalin-Junkies und Formular-Zombies, S.69f)

  • Der Ansatz ist aber nicht ausschließlich einer Hörigkeit von Projektmanagement-"Philosophie" geschuldet, sondern geht zurück auf die Frage der Realisierbarkeit des "speziellen Zustands", den wir in der Kick-Off-Session als alternativen Ansatz besprochen haben. Demnach sollen Entscheidungen getroffen werden und anhand dieser Entscheidungen ergeben sich Folgeentscheidungen bzw. bestimmte Konsequenzen. Ich habe versucht, diesen Ansatz trickfilmartig zu realisieren (interessanter und komplexer wäre die Implementierung bei einem nicht-menü-basierten Spiel). Es stellt sich heraus, dass auch bei so geordneten Verhältnissen sehr viele Interaktionen mit den Entscheidungen möglich sind.
  • Damit das ganze ein konkreter Beitrag zum Projekt ist, habe ich das von Arif und Helga beschriebene Szenario versucht umzusetzen. Bis jetzt bin ich noch nicht ganz mit Szene1 fertig, wobei ich einige Ergänzungen vorgenommen habe, weil das Szenario wie ein Theaterstück mit wenigen interaktiven Elementen aber vielen Dialogen geschrieben ist, was die Implementierung ungleich schwerer macht, weil man sich nicht nur Gedanken machen muss, wie man den Inhalt in Code ausdrückt, sondern weil man zusätzliche inhaltliche Entscheidungen treffen muss, um interaktive Elemente in den Code zu bekommen.

Der Ablauf als endlicher Automat

Zustandsdiagramm von Distinctions (Revision 20)
Zustandsdiagramm von Distinctions (Revision 21) - Diff
  • Das schöne an dieser Extension ist, dass man den fertigen Code als Graph darstellen kann (Abbildungen rechts), sodass man die Abläufe noch besser darstellen und einem mit I7 nicht vertrautem Publikum erläutern kann. Die Darstellung ähnelt im Prinzip einem endlichen Automaten oder einem Zustandsdiagramm. Man startet in einem Zustand und wenn ein bestimmtes Ereignis eintritt (die Spielerin trifft eine Entscheidung), geht man in den nächsten Zustand oder bleibt im selben Zustand, und so weiter. Anbei eine kleine Aufschlüsselung der Symbole:
  • Die gelben Kreise repräsentieren Zustände (Pages), in denen etwas passiert (im Prinzip wird einfach Text ausgegeben)
  • Die grünen Rechtecke repräsentieren in meinem Beispiel Eigenschaften, die die Spielerin aufgrund ihrer Handlungen zugewiesen werden. Darauf aufbauend können bestimmte Zustände (nicht) erreicht werden. Außerdem erfolgt am Ende eine textuelle Analyse des Gesamtverhaltens, basierend auf den getroffenen Entscheidungen. Das ist der Punkt, der für den "speziellen Zustand" brauchbar ist und relativ einfach möglich ist, auch wenn die textuelle Beschreibung des Verhaltens immer noch eine Herausforderung ist.
  • Durchgezogene Pfeile symbolisieren Entscheidungen, die die Spielerin getroffen hat. Je nach Entscheidung kommt man in bestimmte Zustände (gelbe Kreise).
  • Strichlierte Pfeile repräsentieren Zustandsübergänge, die nicht direkt durch eine Entscheidung der Spielerin verursacht wurden, sondern der Übergang passiert automatisch.
  • Gelbliche Rauten repräsentieren die Punkte der Spielerin, die vergeben (+) oder abgezogen (-) werden, wenn ein bestimmter Zustand erreicht wird.
  • Die bläulichen Rauten visualisieren die Punktezahl, die das Wissen der Spielerin über Platons Staat versucht anhand der Entscheidungskaskaden zu quantifizieren. Man kann sich vorstellen dass, je mehr Entscheidungen der Spielerin man kennt, desto spezifischer kann man auf ihre Einstellungen/Meinungen antworten.
  • Blaue Rechtecke stellen Bedingungen dar. Wenn Sie erfüllt sind, dann kommt es z.B. zu einem Zustandsübergang.

Der I7-Code

Kurzbeschreibung der ersten 4 Zustände
  • Start: Man findet sich als Handelsmann in einer Politeia und muss sich nach lukrativen Waren umschauen. Man hat die Möglichkeit, zum Schuster oder zum Zimmermann zu gehen.
  • Shoemaker: Ein Wächter sagt dir, dass der Schuster gerade die Wächter-Schuhe repariert und er keine Störung duldet. Du gehst automatisch zum Zimmermann.
  • Carpenter: Du kannst den Schuster grüßen oder direkt nach seinen Produkten fragen. (Wenn du dich entscheidest, ihn zu grüßen, hat das bestimmte Konsequenzen - ich will ja nicht spoilen ^^)
  • C_Products: Du kannst ihn nach Schuhen, Tischen oder Mobiltelefonen fragen. Was wird naheliegend sein? ;)

Session 8: Interessante Extensions (19.04.2009)

Eine kurze Session über eventuell brauchbare Extensions, die uns ersparen, diese Räder neu zu erfinden.

NPC-Routinen

Falls man den NPCs eine gewisse Inteligenz verleihen will, kann man sich folgende Extensions ansehen:

  • Patrollers: Die Autorin kann vordefinierte Routen festlegen, die die NPCs ablaufen.
  • Simple Followers: NPCs folgen der Spielerin. Das würde ganz gut zu unserer angedachten Strategie passen, unterschiedliche Charaktere zu implementieren, die gemeinsam die Welt erkunden, wobei die Spielerin in unterschiedlichen Szenarios die Rolle eines dieser Charaktere einnimmt.
  • Planner und Basic Plans: Es handelt sich hierbei um einen zielorientierten Agenten, der versucht, ein vordefiniertes Ziel zu erreichen, wobei man Teilziele bzw. auch Actions vordefinieren kann, um den Agenten die Mittel an die Hand zu geben, das Ziel zu erreichen. Ein Gedanke dazu: Das Teilziel könnte sein, die Spielerin zu überreden (vgl. auch diese Extension), eine bestimmte Entscheidung (zum Beipsiel zu Gunsten klassisch-platonischer-Lehre) zu treffen. Ein anderer NPC könnte dagegen das Ziel haben, ihn für die gegenteilige Entscheidung zu gewinnen (Engerl/Teuferl auf der Schulter).

Andere Extensions

  • Transit System: Bezüglich des Verlinkens einzelner Szenarien könnte sich dieses Plugin anbieten, das nach vordefinierter Route (ich kann mir vorstellen, dass man auch zufällige Elemente bzw. Entscheidungen aus bereits gespielten Szenarien in die Routenplanung miteinfließen lassen kann) die Landkarte abfährt. Spielerin und NPCs können zu- und aussteigen.
  • Objekte während des Spiels erstellen (könnte nützlich sein, falls man dynamisch z.B. ein etwas verändertes Szenario "bauen" will): Dynamic Objects und Dynamic Tables.
  • Fußnoten: Das finde ich im Zshg. mit I7 witzig: Footnotes
  • Anstatt dem Simple CYOA, mit dem ich in der letzten Session versucht habe, einen Teil eines Szenarios modellieren, wäre wohl die Built-in-Extension: Menus sinnvoller, soweit ich das auf den ersten Blick sehe. Denn hier kann man Menüs nur temporär verwenden, und ansonsten wieder zurückschalten auf Standard-I7-Parsing. Schaue ich mir bei Gelegenheit mal an.
  • Geheimtür in der Höhle: Interessant wäre, falls wir uns doch noch entschließen, das Höhlengleichnis als ein Szenario zu implementieren, es ein bisschen abzuändern. So könnte man z.B. mit der Extension Secret Doors eine Geheimtür in der Höhle platzieren.

Session 9 : Selbstkorrekturmechanismen (30.04.09)

Nur so nebenbei: Bin vor ein paar Tagen in diesem Artikel auf ein Popper-Zitat und seine Abwandlung gestoßen, die die Frage nach Qualität der Herrscher und Wächter auf eine andere Ebene verschiebt:

  • "Wie können wir unsere politischen Einrichtungen so aufbauen, dass auch unfähige und unredliche Machthaber keinen großen Schaden anrichten können?"
  • "Wie können wir unsere technischen Infrastrukturen so aufbauen, dass unfähige und unredliche Machthaber damit keinen großen Schaden anrichten können?"

Platon geht so vor, dass er im neunten Buch z.B. Tyrannen und den tyrannischen Staat einfach die Attribute arm, ungerecht, unglücklich,... zuweist, im Gegensatz zu seinem in früheren Büchern erläuterten Philosophen-König und seinem Staat. Dass es jedoch in der Realität möglich ist, dass Tyrannen an die Macht kommen, hat keine Konsequenzen für das entwickelte Staatsmodell. Ich empfinde es, ohne das näher zu belegen, als einen Nachteil, wenn man seine Theorie ausschließlich auf die Spähre des Idealen gründet. Wenn morgen in Österreich ein Tyrann die Macht ergreifen sollte, dann wird er seine Ansprüche nicht dadurch aufgeben, dass man ihn mit Verweis auf Platon als arm, ungerecht und unglücklich klassifiziert.--Andyk 22:59, 30. Apr. 2009 (UTC)

Schwierige Frage. Die gängige Antwort lautet meines Wissens etwa: Damit der einzelne nicht zu viel Schaden anrichten kann, gibt es Kontrollinstanzen, die seinen Handlungsspielraum einschränken, genauer gesagt, es gibt mehrere Instanzen, die einander einschränken ("die Herrscher kontrollieren" würde ja in einen Regreß führen) (http://de.wikipedia.org/wiki/Gewaltenteilung Gewaltenteilung]). Damit eine Instanz einer anderen gegenüber einen Einwand begründen kann, braucht es ein Set ausdrücklich festgelegter Regeln. Für technische Infrastruktur gilt das noch mehr, da eine Maschine ja nur anhand von aufgeschriebenen Regeln funktioniert. Solche Regelsysteme werden aber sehr schnell zu komplex für das menschliche Begreifen, ohne jemals die Komplexität der Wirklichkeit erfassen zu können. Wir bewegen uns ständig auf einem schmalen Grat zwischen Dogmatismus und Willkür. Platon schlägt sich hier eindeutig auf die Seite der Dogmatismuskritik, wenn er meint, daß das "gesunde" Herrscherempfinden durch zu viel Regelung in zu vielen Details nur behindert wird (425a f., 297a, auch 445c ff.: Monarchie mit grundlegender Verfassung; die Fußnote zu 445e in der Reclam-ausgabe verweist auch auf Politikos 293ff.). Ich weiß nicht, ob er das sagt, aber er könnte immerhin eine Art Peer Review installieren - nicht Gegeninstanzen gleichen die Fehler des einzelnen aus, sondern das Plenum der Instanz, deren Mitglied der einzlene ist. Das wäre sogar in einer Monarchie denkbar, da ein König immer Berater hat. Platon spricht nicht davon, er operiert ganz mit dem Vertrauen in den erleuchteten Herrscher, aber genauso könnte er auch den Dialog zwischen den erleuchteten Individuen ins Feld führen.
Das ist wohl ein Problem aller Utopien, daß man irgendwo an Punkte stößt, die so gar nicht mit der Wirklichkeit in Einklang zu bringen sind. Hier kann man immer sagen "das ist ja nur eine Utopie", aber es bleibt doch eine Lücke in der Argumentation. Besonders gilt das für Utopien, die mit der (nicht ganz unberechtigten) Annahme operieren, daß man durch Sozialisation das moralische Verhalten der Bürgerinnen beeinflussen kann und daß in einem idealen Staat eine Reihe von Problemen wegfallen würden, weil eben die Bürger anders dächten. --H.A.L. 06:32, 1. Mai 2009 (UTC)