Benutzer:Andyk/Mitschriften/PSI 06 12 08 Inform7 Einführung: Unterschied zwischen den Versionen

Aus Philo Wiki
Wechseln zu:Navigation, Suche
K (test with syntax highlighter)
K (syntax highlighting)
Zeile 26: Zeile 26:
 
: Regeln beschreiben, wie sich die Welt unter bestimmten Umständen verhalten soll? Zum Beispiel, wenn der Spieler mit der Welt interagiert.
 
: Regeln beschreiben, wie sich die Welt unter bestimmten Umständen verhalten soll? Zum Beispiel, wenn der Spieler mit der Welt interagiert.
 
:Es gibt Regeln, die standardmäßig inkludiert und für gewöhnlich nützlich sind. (siehe Inform7-Entwicklungsumgebung / Index / Rules ) Sie können aber auch verändert werden.
 
:Es gibt Regeln, die standardmäßig inkludiert und für gewöhnlich nützlich sind. (siehe Inform7-Entwicklungsumgebung / Index / Rules ) Sie können aber auch verändert werden.
:<code>when play begins, say "Ich begrüße Sie.".</code>
+
<source lang="inform">when play begins, say "Ich begrüße Sie.".</source>
  
 
: Eine Wichtige Form der Regel (die man mit WENN-DANN vergleichen kann) ist die INSTEAD-OF-Regel. Diese Regel ist von der Form: Instead of ''<eine bestimmte Aktion>'': verändere dies; verändere das.
 
: Eine Wichtige Form der Regel (die man mit WENN-DANN vergleichen kann) ist die INSTEAD-OF-Regel. Diese Regel ist von der Form: Instead of ''<eine bestimmte Aktion>'': verändere dies; verändere das.
  
: <code>Instead of taking the apple:</code>
+
<source lang="inform">Instead of taking the apple:
:: <code>say "I better not touch this. It may be a trap.";<br>say "Or should I...?";<br>remove the apple from play;<br>say "What the hell? The apple disappeared."</code>
+
say "I better not touch this. It may be a trap.";
 +
say "Or should I...?";
 +
remove the apple from play;
 +
say "What the hell? The apple disappeared."</source>
  
 
=== Grammatik des Weltenbaus ===
 
=== Grammatik des Weltenbaus ===
Zeile 38: Zeile 41:
  
 
==== Räume und Dinge ====
 
==== Räume und Dinge ====
: <code>The NIG is a region.<br> HS3D is a room.<br>HS3D contains a beamer.</code>
+
<source lang="inform">The NIG is a region.  
 +
HS3D is a room.
 +
HS3D contains a beamer.</source>
  
 
:;Verbindungen zwischen Räumen
 
:;Verbindungen zwischen Räumen
Zeile 48: Zeile 53:
  
 
::Am Beispiel des [http://www.univie.ac.at/kulturendifferenz/php/uploads/NIG_GEBAEUDEPLAN.pdf dritten Stocks im NIG]:  
 
::Am Beispiel des [http://www.univie.ac.at/kulturendifferenz/php/uploads/NIG_GEBAEUDEPLAN.pdf dritten Stocks im NIG]:  
:::<code>Floor3A, Floor3B, Floor3C and Floor3D are rooms.<br><br>Wooden door, DoorCD, DoorBC, DoorAB and DoorAD are open doors.<br><br>The description of Floor3D is "A long, long silent floor. I can only hear strange noices from the Heating. This is as weird as in The Shining... Where is Jack Nickolson?"<br>The description of the wooden Door is "This is the door of Lecture room 3D.".<br><br> The wooden Door is north of Floor3D and south of HS3D.<br><br>DoorCD is north of Floor3C and west of Floor3D.<br><br>DoorBC is south of Floor3C and west of Floor3B.<br><br>DoorAB is east of Floor3B and south of Floor3A.<br><br>DoorAD is north of Floor3A and east of Floor3D.
+
<source lang="inform">Floor3A, Floor3B, Floor3C and Floor3D are rooms.
</code>
+
 
 +
Wooden door, DoorCD, DoorBC, DoorAB and DoorAD are open doors.
 +
 
 +
The description of Floor3D is "A long, long silent floor. I can only hear strange noices from the Heating. This is as weird as in The Shining... Where is Jack Nickolson?".
 +
The description of the wooden Door is "This is the door of Lecture room 3D.".
 +
 
 +
The wooden Door is north of Floor3D and south of HS3D.
 +
 
 +
DoorCD is north of Floor3C and west of Floor3D.
 +
 
 +
DoorBC is south of Floor3C and west of Floor3B.
 +
 
 +
DoorAB is east of Floor3B and south of Floor3A.
 +
 
 +
DoorAD is north of Floor3A and east of Floor3D.
 +
</source>
  
 
:;Container
 
:;Container
:::<code>The Pandora Box is a closed container on the table. The box is transparent. The Box contains the Inform7 Documentation. The description of the Documentation is "The so called Inform7 Documentation. That is such stuff as my dreams are made on. ^^".<br>The description of the Pandora Box is "I have never seen a transparent Pandora Box. There is a small book in it named 'Inform7 Documentation'."</code>
+
<source lang="inform">The Pandora Box is a closed container on the table.  
 +
The box is transparent. The Box contains the Inform7 Documentation.  
 +
The description of the Documentation is "The so called Inform7 Documentation. That is such stuff as my dreams are made on. ^^".
 +
The description of the Pandora Box is "I have never seen a transparent Pandora Box. There is a small book in it named 'Inform7 Documentation'."</source>
  
 
==== Klassen (Kinds) ====
 
==== Klassen (Kinds) ====
Zeile 82: Zeile 105:
  
 
:;Wert des Attributs in eine Beschreibung integrieren:
 
:;Wert des Attributs in eine Beschreibung integrieren:
::<code>Sim0n3 is a Humanized PC in your house with description "My lovely Sim0n3... When I come home after a hard day she is always there for me. Because of the emergency power supply I bought last year she is online 24 hours a day and 7 days a week. Although she has only 950MHz, I like her. The status of Sim0n3 is: <b>[status]</b>.</code>
+
<source lang="inform">Sim0n3 is a Humanized PC in your house with description "My lovely Sim0n3... When I come home after a hard day she is always there for me. Because of the emergency power supply I bought last year she is online 24 hours a day and 7 days a week. Although she has only 950MHz, I like her. The status of Sim0n3 is: [status].</source>
  
 
:;Wert des Attributs im Zuge einer Aktion verändern:
 
:;Wert des Attributs im Zuge einer Aktion verändern:
::<code>Instead of cracking Sim0n3 when the player administers Sim0n3:</code>
+
<source lang="inform">Instead of cracking Sim0n3 when the player administers Sim0n3:
:::<code>say "In this special case I know the password and do not have to Brute-force. I am logging in now...";<br>award 200 points;<br><b>now</b> the status of Sim0n3 is logged in.</code>
+
say "In this special case I know the password and do not have to Brute-force. I am logging in now...";
 +
award 200 points;
 +
now the status of Sim0n3 is logged in.</source>
  
 
==== Relationen, Beziehungen ====
 
==== Relationen, Beziehungen ====
Zeile 107: Zeile 132:
 
:;Neue Relationen definieren:
 
:;Neue Relationen definieren:
 
::* Allgemein: ''<Relationsname>'' relates (various|one) ''<ObjektmengeA>'' to (various|one) ''<ObjektmengeB>''.
 
::* Allgemein: ''<Relationsname>'' relates (various|one) ''<ObjektmengeA>'' to (various|one) ''<ObjektmengeB>''.
:: <code>Administer relates one person (called the Administrator) to various Humanized PCs.<br><br>The verb to administer (he administers, they administer, he administered, it is administered, he is administering) implies the administer relation.<br><br>The player administers Sim0n3.<br><br>Instead of cracking Sim0n3 when the player administers Sim0n3:</code>
+
 
::: <code>say "In this special case I know the password and do not have to Brute-force. I am logging in now...";<br>award 200 points;<br>now the status of Sim0n3 is logged in.</code>
+
<source lang="inform">Administer relates one person (called the Administrator) to various Humanized PCs.
 +
 
 +
The verb to administer (he administers, they administer, he administered, it is administered, he is administering) implies the administer relation.
 +
 
 +
The player administers Sim0n3.
 +
 
 +
Instead of cracking Sim0n3 when the player administers Sim0n3:
 +
say "In this special case I know the password and do not have to Brute-force. I am logging in now...";
 +
award 200 points;
 +
now the status of Sim0n3 is logged in.</source>
  
 
==== Aktionen ====
 
==== Aktionen ====
Zeile 129: Zeile 163:
  
 
:;neue Aktionen definieren:
 
:;neue Aktionen definieren:
::<code>Cracking is an action applying to visible things.<br><br>Understand "crack [something]" as cracking.<br><br>Check cracking:</code>
+
<source lang="inform">Cracking is an action applying to visible things.
:::<code>if the noun is not a Humanized PC, say "This is not within the scope of Hacker ethics.".</code>
+
Understand "crack [something]" as cracking.
 +
 
 +
Check cracking:
 +
if the noun is not a Humanized PC, say "This is not within the scope of Hacker ethics.".
  
::<code>Instead of cracking Sim0n3 when the player administers Sim0n3:</code>
+
Instead of cracking Sim0n3 when the player administers Sim0n3:
:::<code>say "In this special case I know the password and do not have to Brute-force. I am logging in now...";<br>award 200 points;<br>now the status of Sim0n3 is logged in.</code>
+
say "In this special case I know the password and do not have to Brute-force. I am logging in now...";
 +
award 200 points;
 +
now the status of Sim0n3 is logged in.</source>
  
 
==== Veränderungen ====
 
==== Veränderungen ====
Zeile 150: Zeile 189:
 
* ermöglicht das Zusammenfassen von Akten
 
* ermöglicht das Zusammenfassen von Akten
 
* ermöglicht es, die Welt mit alternativen Geschichtsverläufen auszustatten
 
* ermöglicht es, die Welt mit alternativen Geschichtsverläufen auszustatten
:: <code>Nightmare is a scene.<br><br>Nightmare begins when the player is in HS3D.<br><br>When Nightmare begins:</code>
+
<source lang="inform">Nightmare is a scene.
::: <code>say "There is something wrong. In my dreams, I should not be at university.";<br>say "(Suddenly Martin Heidegger appears)";</code>
+
 
::: <code>move Heidegger to HS3D.</code>
+
Nightmare begins when the player is in HS3D.
:: <code>When Nightmare ends:</code>
+
 
:::<code>[remove Martin heidegger from play;]<br>move the player to your house;<br>say "Weird dream.".</code>
+
When Nightmare begins:
:: <code>Nightmare ends when Heidegger is in Floor3A.</code>
+
say "There is something wrong. In my dreams, I should not be at university.";
 +
say "(Suddenly Martin Heidegger appears)";
 +
move Heidegger to HS3D.
 +
 
 +
When Nightmare ends:
 +
[remove Martin heidegger from play;]
 +
move the player to your house;
 +
say "Weird dream.".
 +
 
 +
Nightmare ends when Heidegger is in Floor3A.</source>
  
 
==== Erweiterungen ====
 
==== Erweiterungen ====

Version vom 14. März 2009, 22:29 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>

Inform 7 - Eine kleine Einführung

Ein Versuch, sich an Inform7 heranzuwagen

The player is a character in a drama, rather than a disembodied observer like the movie camera: he or she is somebody trying to get something done (even if that something is only understanding the situation). (Inform7-Homepage)

Motivation: Text und Weltbeschreibung

  • Inform7 interpretiert die englische Sprache und erzeugt daraus eine virtuelle Welt. Jeder Satz ist ein Teil des Weltenbauplans. Man modelliert also Objekte (Dinge, Räume, Personen, ...) und weist ihnen Eigenschaften (Attribute) und Beschreibungen zu. Außerdem sind Relationen zwischen Objekten von großer Bedeutung.
  • Man muss aber lernen, auf welche Weise man die englische Sprache benutzen soll. Der Inform7-Interpreter kann keine Gedanken lesen. Er kann auch keine Welt erzeugen, wenn der Weltbauplan inkonsistent/widersprüchlich ist.
  • Der Spieler soll die Welt erkunden und verändern können. Dazu werden Aktionen und Regeln verwendet, die der Spieler mittels Eingabe von Befehlen auslösen kann und die unter bestimmten Umständen die Welt(zustände) auf eine gewisse Weise verändern.
  • Inform7 erlaubt außerdem das Vorsehen alternativer Handlungsstränge. Der Spieler muss davon nichts merken (zumindest nicht beim ersten Spieldurchgang).

Wie man spricht

Grundlagen des Objektorientierten Weltenbaus

Um mit Inform7 eine Welt zu erzeugen, braucht man zumindest folgende zwei Sprachmodi:

Assertions / Fakten

Fakten beschreiben die Ausgangskonfiguration der Welt, die der Spieler vorfindet. Die Welt besteht aus Objekten und Beziehungen zwischen Objekten. Objekte haben Eigenschaften (Attribute) und Fähigkeiten (ein Verhalten unter bestimmten Umständen). (Das sind die grundlegenden Dinge des Objektorientierten Paradigmas der Programmiersprachen).

<source lang="inform">The apple is a thing. The description of the apple is "Looks delicious." HS3D is a room. "I know this room. Usually, there are a lot of people here. On Saturday, it is empty." A table is here. The apple is on the table. The description of the table is "It is made of wood."</source>

Regeln

Regeln beschreiben, wie sich die Welt unter bestimmten Umständen verhalten soll? Zum Beispiel, wenn der Spieler mit der Welt interagiert.
Es gibt Regeln, die standardmäßig inkludiert und für gewöhnlich nützlich sind. (siehe Inform7-Entwicklungsumgebung / Index / Rules ) Sie können aber auch verändert werden.

<source lang="inform">when play begins, say "Ich begrüße Sie.".</source>

Eine Wichtige Form der Regel (die man mit WENN-DANN vergleichen kann) ist die INSTEAD-OF-Regel. Diese Regel ist von der Form: Instead of <eine bestimmte Aktion>: verändere dies; verändere das.

<source lang="inform">Instead of taking the apple: say "I better not touch this. It may be a trap."; say "Or should I...?"; remove the apple from play; say "What the hell? The apple disappeared."</source>

Grammatik des Weltenbaus

Unterschiedliche Sätze können dieselbe Welt hervorbringen. Die Grundkonzepte sind aber ähnlich und können bei den verschiedensten Sätzen verwendet werden.

Räume und Dinge

<source lang="inform">The NIG is a region. HS3D is a room. HS3D contains a beamer.</source>

Verbindungen zwischen Räumen
Direkt ohne Türen:
RoomA is north of RoomB.
Mit Türen:
The wooden door is north of RoomA and south of RoomB. The wooden door is a door.
Am Beispiel des dritten Stocks im NIG:

<source lang="inform">Floor3A, Floor3B, Floor3C and Floor3D are rooms.

Wooden door, DoorCD, DoorBC, DoorAB and DoorAD are open doors.

The description of Floor3D is "A long, long silent floor. I can only hear strange noices from the Heating. This is as weird as in The Shining... Where is Jack Nickolson?". The description of the wooden Door is "This is the door of Lecture room 3D.".

The wooden Door is north of Floor3D and south of HS3D.

DoorCD is north of Floor3C and west of Floor3D.

DoorBC is south of Floor3C and west of Floor3B.

DoorAB is east of Floor3B and south of Floor3A.

DoorAD is north of Floor3A and east of Floor3D. </source>

Container

<source lang="inform">The Pandora Box is a closed container on the table. The box is transparent. The Box contains the Inform7 Documentation. The description of the Documentation is "The so called Inform7 Documentation. That is such stuff as my dreams are made on. ^^". The description of the Pandora Box is "I have never seen a transparent Pandora Box. There is a small book in it named 'Inform7 Documentation'."</source>

Klassen (Kinds)

zu Klassen allgemein
  • Jedes Objekt ist von einer Klasse (Art/Sorte oder in Inform7: Kind) abgeleitet.
  • Klassen können selbst von einer anderen Klasse abgeleitet sein (Ober- und Unterklasse)
  • Die Basisklassen einer Inform7-Welt sind:
    • Thing
    • Room
    • Direction
  • Neue Klassen können aus bestehenden abgeleitet werden
neue Klassen definieren
Humanized PC is a kind of person. Humanized PC is usually fixed in place. A power button is part of every Humanized PC. The plural of Humanized PC is Humanized PCs.
Objekt aus der Klasse ableiten
Sim0n3 is a Humanized PC in your house.

Attribute(Kinds of Values)

zu Attribute allgemein
  • Attribute sind Eigenschaften von Objekten oder Klassen, die bestimmte Werte (Values) annehmen können
  • Beispiel: Eine Person hat einen Namen, der aus Buchstaben besteht und ein Alter, das aus einer Zahl zwischen 1 und 200 besteht. Sie hat außerdem ein Geschlecht, dass die Werte 'weiblich' oder 'männlich' annehmen kann.
Attribut definieren
Userstate is a kind of value. The Userstates are logged in and logged out.
Attribut und Attributwert einem Objekt hinzufügen
Sim0n3 has a Userstate called status. The status of Sim0n3 is logged out.
Wert des Attributs in eine Beschreibung integrieren

<source lang="inform">Sim0n3 is a Humanized PC in your house with description "My lovely Sim0n3... When I come home after a hard day she is always there for me. Because of the emergency power supply I bought last year she is online 24 hours a day and 7 days a week. Although she has only 950MHz, I like her. The status of Sim0n3 is: [status].</source>

Wert des Attributs im Zuge einer Aktion verändern

<source lang="inform">Instead of cracking Sim0n3 when the player administers Sim0n3: say "In this special case I know the password and do not have to Brute-force. I am logging in now..."; award 200 points; now the status of Sim0n3 is logged in.</source>

Relationen, Beziehungen

Zu Relationen allgemein
  • Relationen werden (in Inform7) durch Verben realisiert und beschreiben den Zusammenhang zwischen mehreren Objekten.
  • Relationen sind Phrasen, die man in Bezug auf die Objekte mit ja oder nein beantworten kann.
  • Thomas ist kleiner als Maria und Markus. Es handelt sich um eine 'kleiner als'-Relation.
  • Manche Relationen schließen sich aufgrund logischer oder physikalischer Zusammehänge gegenseitig aus
    • 'Das Buch liegt auf dem Tisch' und 'Das Buch ist Teil des Tisches' können nicht gleichzeitig zutreffen.
Standard-Relationen in Inform7
  • The Inform7 Documentation is in the Pandora Box.
  • The apple is on the table.
  • The black pullover is worn by the player.
  • The wooden Door is north of Floor3D and south of HS3D.
  • A power button is part of every Humanized PC.
  • ...
Neue Relationen definieren
  • Allgemein: <Relationsname> relates (various|one) <ObjektmengeA> to (various|one) <ObjektmengeB>.

<source lang="inform">Administer relates one person (called the Administrator) to various Humanized PCs.

The verb to administer (he administers, they administer, he administered, it is administered, he is administering) implies the administer relation.

The player administers Sim0n3.

Instead of cracking Sim0n3 when the player administers Sim0n3: say "In this special case I know the password and do not have to Brute-force. I am logging in now..."; award 200 points; now the status of Sim0n3 is logged in.</source>

Aktionen

Zu Akktionen allgemein
  • Eine Aktion ist ein Impuls, etwas zu tun
  • Eine Aktion kann erfolgreich sein oder nicht, und zwar in Bezug auf die Intention des Spielers, der die Aktion durch einen Befehl auslöst.
Standard-Aktionen in Inform7
  • examining
  • taking
  • switching off
  • opening/closing
  • ... (vgl. Index / Actions)
Verhalten von Standard-Aktionen verändern durch Regeln
  • Instead of taking your bed, say "I don't want to pump iron."
  • Before taking off the black pullover, say "I hope you are above 18."
  • After taking the Entscheidungsproblem: award 200 points; say "Wow, this is a heavy burden, i have to carry now.".
  • Instead of switching off a power button which is a part of a humanized pc (called the machine):try switching off the machine.
neue Aktionen definieren

<source lang="inform">Cracking is an action applying to visible things. Understand "crack [something]" as cracking.

Check cracking: if the noun is not a Humanized PC, say "This is not within the scope of Hacker ethics.".

Instead of cracking Sim0n3 when the player administers Sim0n3: say "In this special case I know the password and do not have to Brute-force. I am logging in now..."; award 200 points; now the status of Sim0n3 is logged in.</source>

Veränderungen

  • Veränderungen von Objekten bzw. von Attributwerten (z.B. bei einer bestimmten Aktion)
  • Viele Veränderungen enthalten das Schlüsselwort change oder now
  • Change player to Martin Heidegger
  • Change the command prompt to ":~# ".
  • Change the right hand status line to "Time: [time of day]".
  • Change the time of day to 10:00 PM.
  • Now the status of Sim0n3 is logged in.
  • Now the color of the pullover is red.

Szenarios

  • ermöglicht das Zusammenfassen von Akten
  • ermöglicht es, die Welt mit alternativen Geschichtsverläufen auszustatten

<source lang="inform">Nightmare is a scene.

Nightmare begins when the player is in HS3D.

When Nightmare begins: say "There is something wrong. In my dreams, I should not be at university."; say "(Suddenly Martin Heidegger appears)"; move Heidegger to HS3D.

When Nightmare ends: [remove Martin heidegger from play;] move the player to your house; say "Weird dream.".

Nightmare ends when Heidegger is in Floor3A.</source>

Erweiterungen

  • Man kann zusätzliche Regeln/Gegenstandstypen/... (Extentions) hinzufügen
  • Include Locksmith by Emily Short
  • Liste von Extentions

Randbedingungen: Installation, Test und Veröffentlichung

Schau hier und hier

Installation

Testen und Debuggen

  • Details zum Gegenstand apple: SHOWME apple
  • Liste von Gegenständen im Raum: SHOWME
  • Sequenz von Testbefehlen: test apple with "wear apple / examine apple / push apple / listen apple"
    • Im (unveröffentlichten) Spiel test apple eintippen
  • Liste von verfügbaren Tests: test

Release: Guncho

MUD-Clients
Verbindungsdaten zum Guncho-Server
  • Server-Hostname: game.guncho.com
  • Port: 4108
Verbinden zum MUD-Client

Wenn man sich (über Telnet oder über einen MUD-Client) eingewählt hat, kann man mit: connect <username> <passwort> oder wenn man noch keinen User angelegt hat mit:

connect guest

auf ein Spiel (hier z.B.: Sleep) mit dem Befehl:

@teleport sleep

zugreifen. Mit dem Control Panel kann man sich als registrierter User auch den Source Code oder den Index ansehen.

Kooperation: Subversion

todo - Wie läuft das eigentlich mit dem institutseigenem SVN bzgl. Upload-Berechtigung?