Benutzer:Andyk/Mitschriften/PSI 06 12 08 Inform7 Einführung: Unterschied zwischen den Versionen
Andyk (Diskussion | Beiträge) K (Aggregation) |
H.A.L. (Diskussion | Beiträge) K (syntax: Inform-Code) |
||
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | {{PSI}} | ||
= Inform 7 - Eine kleine Einführung = | = Inform 7 - Eine kleine Einführung = | ||
Ein Versuch, sich an Inform7 heranzuwagen | Ein Versuch, sich an Inform7 heranzuwagen | ||
Zeile 17: | Zeile 18: | ||
: 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). | : 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). | ||
− | + | <code>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."</code> | ||
==== Regeln ==== | ==== Regeln ==== | ||
: 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> | |
: 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: | |
− | + | 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."</code> | ||
=== Grammatik des Weltenbaus === | === Grammatik des Weltenbaus === | ||
Zeile 34: | Zeile 41: | ||
==== Räume und Dinge ==== | ==== Räume und Dinge ==== | ||
− | + | <code>The NIG is a region. | |
+ | HS3D is a room. | ||
+ | HS3D contains a beamer.</code> | ||
:;Verbindungen zwischen Räumen | :;Verbindungen zwischen Räumen | ||
Zeile 44: | 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. | |
+ | |||
+ | 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. | ||
</code> | </code> | ||
:;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. ^^". | ||
+ | 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> | ||
==== Klassen (Kinds) ==== | ==== Klassen (Kinds) ==== | ||
Zeile 78: | 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: [status].</code> | |
:;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: | |
− | + | 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.</code> | ||
==== Relationen, Beziehungen ==== | ==== Relationen, Beziehungen ==== | ||
Zeile 103: | 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. | |
+ | |||
+ | 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.</code> | ||
==== Aktionen ==== | ==== Aktionen ==== | ||
Zeile 125: | Zeile 163: | ||
:;neue Aktionen definieren: | :;neue Aktionen definieren: | ||
− | + | <code>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.</code> | ||
+ | |||
+ | ==== Veränderungen ==== | ||
+ | |||
+ | * Veränderungen von Objekten bzw. von Attributwerten (z.B. bei einer bestimmten Aktion) | ||
+ | * Viele Veränderungen enthalten das Schlüsselwort <code>change</code> oder <code>now</code> | ||
+ | * <code><b>Change</b> player to Martin Heidegger</code> | ||
+ | * <code><b>Change</b> the command prompt to ":~# ".</code> | ||
+ | * <code><b>Change</b> the right hand status line to "Time: [time of day]".</code> | ||
+ | * <code><b>Change</b> the time of day to 10:00 PM.</code> | ||
+ | * <code><b>Now</b> the status of Sim0n3 is logged in.</code> | ||
+ | * <code><b>Now</b> the color of the pullover is red.</code> | ||
==== Szenarios ==== | ==== Szenarios ==== | ||
− | |||
− | ==== | + | * ermöglicht das Zusammenfassen von Akten |
− | : | + | * ermöglicht es, die Welt mit alternativen Geschichtsverläufen auszustatten |
+ | <code>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.</code> | ||
+ | |||
+ | ==== Erweiterungen ==== | ||
+ | * Man kann zusätzliche Regeln/Gegenstandstypen/... (Extentions) hinzufügen | ||
+ | * <code>Include Locksmith by Emily Short</code> | ||
+ | * [http://www.inform-fiction.org/I7/Download%20-%20Extensions.html Liste von Extentions] | ||
== Randbedingungen: Installation, Test und Veröffentlichung == | == Randbedingungen: Installation, Test und Veröffentlichung == |
Aktuelle Version vom 4. Oktober 2016, 21:32 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
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).
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."
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.
when play begins, say "Ich begrüße Sie.".
- 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.
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."
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
The NIG is a region.
HS3D is a room.
HS3D contains a beamer.
- 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.
- Mit Türen:
- Am Beispiel des dritten Stocks im NIG:
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.
- Container
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'."
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
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].
- Wert des Attributs im Zuge einer Aktion verändern
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.
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>.
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.
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
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.
Veränderungen
- Veränderungen von Objekten bzw. von Attributwerten (z.B. bei einer bestimmten Aktion)
- Viele Veränderungen enthalten das Schlüsselwort
change
odernow
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
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.
Erweiterungen
- Man kann zusätzliche Regeln/Gegenstandstypen/... (Extentions) hinzufügen
Include Locksmith by Emily Short
- Liste von Extentions
Randbedingungen: Installation, Test und Veröffentlichung
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
- Im (unveröffentlichten) Spiel
- Liste von verfügbaren Tests:
test
Release: Guncho
- MUD-Clients
- Vergleich von verschiedenen MUD-Clients für verschiedene Betriebssysteme
- 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?