IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Inform 7
AntwortenNeues ThemaNeue Umfrage

Inform 7

Geschrieben um 22:46 am 12.05.2006 | Zitat | Editieren | Löschen
Vince
Mitglied
Student Gumby
Beiträge: 22

Habe soeben bemerkt, dass neu Inform 7 auf dem Netz zur Verfügung steht. Jetzt mit einer grafischen Oberfläche, die das Programmieren vereinfachen soll. Hat schon jemand Erfahrungen damit gemacht?

Zu finden unter:

http://www.inform-fiction.org/I7/Inform%207.html

Gruss

Geschrieben um 01:06 am 13.05.2006 | Zitat | Editieren | Löschen
ChrisW
Mitglied
Dr Gumby
Beiträge: 275

Ist mir auch neu. Laut Roger Firths Informary ist das allerdings erstmal ne Betaversion, auch wenn sich auf der Webseite selbst dazu kein Hinweis findet.

Was Emily Short seit City of Secrets gemacht hat, wissen wir jetzt auch. :) Die Beispiele sind von ihr, und die sind teils ziemlich umfangreich. Ich hab jetzt mal den Quellcode von zweien überflogen, über weite Strecken seh ich da nicht mal im Ansatz eine Verwandtschaft mit dem alten Inform...

Aber gut, es ist spät und ich muss morgen früh raus, ich schaus mir nächste Woche mal genauer an.

Geschrieben um 08:54 am 19.05.2006 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Die aktuelle Version von Inform 7 (das seit dem ersten Auftauchen des namens im Bannertext von Emily Shorts Mystery House Possessed erwartet wird) ist eine "public beta".

Und es ist in der Tat ein vollkommen neuer Ansatz zum Schreiben von Textadventures. Der Quellcode sieht nicht mehr aus wie ein Programm, sondern ist in natürliche Sätze gegliedert (die natürlich immer einem gewissen Schema unterliegen). Jedes Objekt (Thing) und jede Klasse (Kind) werden textuell beschrieben:


A wicker cage is here. "There is a small wicker cage discarded nearby."```

Was bei diesem Ansatz sehr elegant ist: Mit dem einfachen Satz "A wicker cage is here." wird neben dem Ort des Objekts der Name des Objekts im Quelltext (nämlich "wicker cage", oder vielleicht auch nur "cage", wenn es eindeutig ist), der Name im Spiel und das Vokabular definiert. So ist man sicher, dass der Weidenkäfig auch überall so genannt werden kann.

Die Interaktion, die bisher in before-Methoden definiert wurde, wird nun in einem Regelwerk implementiert, etwa:

Instead of taking the rock, say "It's too heavy".


Dieser Code muss nicht unbdeingt beim Code, der den Felsen erzeugt, stehen. Diese Regeln können auch allgemein gefasst sein:

Instead of touching or taking a burning thing when not waering the asbestos gloves, say "Ouch!".



Vorausgesetzt natürlich, man hat definiert was "burning" bedeutet. ("Burning" als einen Zustand zu definieren ist aber leicht, und mit einer weiteren Zeile kann man sogar die Vokabel "burning" als gültig für alle brennenden Objekte deklarieren.)

Und zu guter Letzt gehört zu I7 eine grafische Umgebung, mit der man entwickelt. (IDE, oder intergrierte Entwicklungsumgebung würde man wohl sagen, aber [das hört Graham Nelson nicht so gerne](http://www.sparkynet.com/spag/backissues/SPAG44).) Diese Umgebung ist in zwei Teile geteilt: Links wird Quelltext geschrieben, rechts dann das Ergebnis oder die Probleme beim Erzeugen betrachtet. In die Entwicklung dieser Umgebung ist viel Arbeit geflossen (okay, in den Rest natürlich auch). Die technischen Fehlermeldungen von I6 wurden in zu der natürlichen Sprache besser passenden Problemschilderungen umgewandelt. Und man kann aus einer Sitzung des erzeugten Spiels heraus kleine Fehler ändern.

(Das entnehme ich der Dokumentation und der Diskussion auf rec.arts.int-fiction. Ich habe I7 noch nicht heruntergeladen und auch noch nicht damit herumgespielt.)

Technisch gesehen baut I7 auf I6 auf: Es erzeugt aus dem "Natural Language Interface" eine Inform-6-Datei, die es dann kompiliert. Und wer sich ein wenig mit Inform auskennt, wird den Sätzen im I7-Quelltext auch oft den passenden I6-Code zuordnen können.

Den großen Vorteil von I7 sehe ich in den Regelwerken. Durch einfache Sätze können Dinge ausgedrückt werden, die man sonst mühsam durch Klassendefinitionen und Erweitern der Standardbefehle implementieren müsste. Generell ist das Problem in Inform, dass jeder Befehl nur eine BefehlSub hat, also eigentlich nur eine Ausführungsphase. Die Überprüfung der Gültigkeit wird vom Parser vorgenommen, was leicht zu Fehlern führen kann. Erreichbarkeit und allgemeine Gültigkeit einer Aktion (Ist das Objekt überhaupt abschließbar, oder ein- und ausschaltbar, ist das Objekt erreichbar?) werden in der XxxSub vorgenommen, so dass eventuelle before-Rules diese Checks noch einmal implementieren müssen.

Da hilft der Ansatz von I7 weiter, denn neben "Instead of" gibt es noch weitere Regeln wie "Before", "After", "Check" und "Report". Neu ist dieser Ansatz nicht, diese Staffelung der Stufen und das leichte Erweitern mit Cogs und Gizmos kennt man bereits aus Platypus. Und TADS 2 ist mit seinem sehr stark objektorientierten Ansatz, bei dem auch Befehle Objekte sind, auch ähnlich.

Außerdem wird mit I7 versucht, aus der Ecke der inkohärenten Puzzle-Feste der Achtziger wegzukommen und Textadventures endgültig als "Interactive Erzählung" zu etablieren. Mit dem Quelltext in quasi-natürlicher Sprache sollen neue Autoren gewonnen werden. Dinge, die schwer zu programmieren sind, sollen einfach sein: der Autor muss nicht mehr mit parse_name und Flüssigkeitsklassen beschäftigen, die Implementierung muss einfach sein. (Und ist es auch. Meint zumindest [Emily Short](http://groups.google.com/group/rec.arts.int-fiction/browse_frm/thread/3d8e8402ba911ca9/6bb3e5a89b22c336#6bb3e5a89b22c336).)

Dazu gehört auch, dass ein stärkeres Augenmerk auf das Publishing gerichtet wird. Mit dem neuen [Abkommen von Babel](http://babel.ifarchive.org/) sollen alle Spiele vie Bücher katalogisiert werden. Die neuen I7-Spiele kommen als Blorb-Datei daher mit Metadaten, Klappentext und einem Umschlagbild. Und I7 bietet Funktionen, die zum Beispiel eine Karte als Beilage zum Spiel zeichnen, oder die aus den Metadaten und dem Titelbild automatisch eine Webseite erstellen.

Die Veröffentlichung des "Spielzeugs" Inform 7 hat jedenfalls in der IF-Community eine Welle des begeisterten Ausprobierens ausgelöst. Mal sehen, was dabei herauskommt. (Ich vermute ja, dass die Leute, die schon mit anderen Systemen gute Spiele geschrieben haben, auch mit I7 gute Spiele schreiben. Ob der neue Ansatz helfen kann, neue Autoren zu gewinnen, weiß ich nicht.)

Eines steht aber auch fest: Inform 7 ist in seiner jetzigen Form nur für Spiele auf Englisch geeignet. Man könnte wohl auch gemischten Code erzeugen, aber das wäre mit dem Ansatz der natürlichen Sprache wohl eher holperig. Etwas wie "if (Werkzeug provides Schneidkraft)" lasse ich noch durchegen, aber "Die Obstschale is a container in the Wohnzimmer" ist doch irgendwie verquast.

Naja, mal sehen wie sich die ersten Spiele von Autoren außerhalb des Inneren Zirkels der I7-Gemeinde anlassen.
Geschrieben um 13:46 am 20.05.2006 | Zitat | Editieren | Löschen
ChrisW
Mitglied
Dr Gumby
Beiträge: 275

Danke für die ausführliche Erklärung, Martin.

Die Entwicklungsumgebung macht einen unglaublich durchdachten Eindruck. Die Dokumentation ist sehr gut integriert, die beigefügten Codebeispiele lassen sich mit zwei Klicks ausprobieren. Auch die Funktionen fürs Betatesten sind toll: Transkripte werden automatisch mitgeschnitten, außerdem werden die Benutzereingaben auf Wunsch auch mehrerer Spieldurchläufe aufgezeichnet und in einem Baumdiagramm (inklusive der Verzweigungen usw.) angezeigt. So kann man leicht bestimmte Szenen des Spiels zum Testen ansteuern, denn mit zwei Klicks wird das Spiel neu kompiliert, gestartet und bis zum ausgewählten Punkt ausgeführt. I6 konnte das zwar auch, aber nur sehr umständlich über die Kommandozeile.

Toll ist auch die "Replay"-Taste: Angenommen, man spielt bis zu einer Szene spät im Spiel und findet dort einen Fehler. Nun kann man den Quelltext editieren, "Replay" drücken und das Spiel wird neu kompiliert und gestartet. Danach werden automatisch alle Benutzereingaben, die man bis zum Drücken des "Replay"-Buttons getätigt hat, wiederholt. Im Idealfall landet man also nach der Änderung des Codes direkt wieder an der Stelle im Spiel, an der man mit Testen aufhörte.

Die Indexing-Funktionen scheinen, laut Doku, eine echte Hilfe sein zu können, vertragen sich aber leider nicht mit der Internet Explorer 7 Beta auf meinem Rechner, sondern produzieren nur Fehlermeldungen. Mist...

Zur neuen "Natural Language" kann ich nicht viel sagen, aber dazu gibts in rec.arts.int-fiction inzwischen ja genügend Topics. Vieles scheint tatsächlich deutlich leichter zu werden, aus den Gründen, die du schon genannt hast. Technisch baut es auf Inform 6 auf. Natural Inform (ni.exe) generiert aus dem vom Autor erstellten Inform-7-Quelltext den normalen Inform-6-Quelltext, der dann mit dem altbekannten Compiler kompiliert wird.

Der liegt allerdings in Version 6.31 bei, die deutlich aktueller ist als die für Library 6/11 verfügbare. Eigentlich sollte dieser Compiler mit Library 6/12 kommen, und aus Roger Firths Kommentar dazu werd ich nicht schlau. Je nach Erfolg von Inform 7 werden wir ja sehen, ob es überhaupt noch eine 6/12 geben wird.

(Edit: 6.31 enthält schlicht alle bisherigen Bugfixes am Compiler ist kann im Archiv heruntergeladen werden...)

Die Frage ist eigentlich, was sich an der zugrundeliegenden Library in I7 verändert hat. Auf 6/11 basiert sie jedenfalls nicht, die Copyrighthinweise im Kopf der Library-Dateien sind die der 6/10er-Version, im Falle der parserm.h sogar die der 6/9er - auch wenn die Dateien mit Sicherheit nicht unverändert übernommen wurden.

Der von Natural Inform generierte Inform-6-Code ist, zumindest für mich, eine totale Codewüste. Nicht zuletzt deshalb, weil Objekte und Variablen einfach durchnummeriert werden. Da dieser Code aber nur in einer temporären Datei landet, die erstellt, an den 6.31-Compiler weitergereicht und hinterher sofort gelöscht wird, sollte es im Regelfall ja niemand zu sehen kriegen.

Ich bin gespannt, wie sich Inform 7 während der Betaphase noch weiterentwickeln wird und inwiefern es möglicherweise noch bessere Unterstützung für eine Lokalisierung geben wird. Das Blöde an dieser "Natural Language"-Sache ist ja, dass man, wenn es in einer deutschen Version halbwegs benutzbar sein soll, auch an der Syntax einiges ändern müsste. "Die Obstschale is a container in the Wohnzimmer" ist doch kein Stück intuitiver als aktueller Inform-6-Quelltext, eher im Gegenteil. Zu "Die Obstschale ist ein Behälter im Wohnzimmer" wäre es aber ein verdammt weiter Weg.

Geschrieben um 23:35 am 24.05.2006 | Zitat | Editieren | Löschen
Elmar
Mitglied
Baby Gumby
Beiträge: 7

Hört sich wirklich gut an, doch leider gibts keine Linux-Version. Weiß da einer ob da überhaupt eine geplant ist?

Außerdem stehen die Chancen für eine deutsche Version wohl ziemlich schlecht.

Geschrieben um 13:51 am 25.05.2006 | Zitat | Editieren | Löschen
Sophie
Mitglied
Bachelor Gumby
Beiträge: 61

Hi Elmar!

Elmar:

Hört sich wirklich gut an, doch leider gibts keine Linux-Version. Weiß da einer ob da überhaupt eine geplant ist?

Ich hab ja leider mein Linux gelöscht, weil ich keinen Platz mehr dafür gehabt habe, also kann ich's nicht ausprobieren, aber wenn du WINE hast, müsste es eigentlich gehen. Wo du die Linux-Version kriegst, weiß ich nicht auswendig, musst du in rec.arts.int-fiction nachlesen.

Geschrieben um 15:06 am 25.05.2006 | Zitat | Editieren | Löschen
Sophie
Mitglied
Bachelor Gumby
Beiträge: 61

Ich glaub, was ich gemeint hab ist http://www.thewhitelion.org/inform7

Zitat:

To compile it, you'll need GHC, Mozilla and Gtk2HS (links are on the

web page). To install it, you'll need an installed Windows version of

Inform 7, from which the setup program takes the documentation, the

images, and the compiler executables.

To run it, you'll need Wine.

Geschrieben um 18:06 am 25.05.2006 | Zitat | Editieren | Löschen
Elmar
Mitglied
Baby Gumby
Beiträge: 7

Super das werde ich gleich mal testen, zum Glück habe ich noch eine alte Windows installation mit der ich das dann mal ausprobieren kann.

Geschrieben um 19:43 am 26.05.2006 | Zitat | Editieren | Löschen
Elmar
Mitglied
Baby Gumby
Beiträge: 7

Es funktioniert! Ich musste dazu allerdings den Internet Explorer installieren, da die Online Dokumentation über den IE angezeigt wird. Da gibt es allerdings ein sehr gutes Script was das automatisch installiert.

Ich benutze Wine 0.9.13

Hier ein Screenshot.

Das Teil wirkt wirklich sehr Ausgereift. Ob allerdings die ja eigendlich nicht vorhande Syntax wirklich vorteilhaft ist mag ich zu bezweifeln.

Geschrieben um 01:48 am 04.06.2006 | Zitat | Editieren | Löschen
Lodda
Mitglied
Baby Gumby
Beiträge: 7

Da ich hier neu im Forum bin dachte ich mir, ich sage erst einmal freundlich "hallo":

Hallo!

Die Inform 7 Oberfläche gefällt mir als relativer Neuling sehr gut! Ich denke, gerade im Bereich der IF sollte es den Autoren möglich sein, ohne immensen Programmieraufwand eine Geschichte zu erzählen. Die "narrative" Art und Weise der Programmierung erscheint mir definitiv als ein Schritt in die richtige Richtung.

Geschrieben um 02:00 am 08.06.2006 | Zitat | Editieren | Löschen
Lodda
Mitglied
Baby Gumby
Beiträge: 7

Eine kurze Frage zur "carrying capacity" in Inform 7:

Gibt es einen Wert, der analog zur "carrying capacity" verwendbar ist und der angibt, wieviel dieser "carrying capacity" beansprucht wird? Ansonsten bekomme ich Probleme, sobald mehrer tragbare Container auftauchen, z.B. wenn ich einen Geldbeutel und eine Jacke habe und es möglich ist, die Jacke in den Geldbeutel zu stecken... vielleicht übersehe ich ja auch nur etwas.

Danke, L.

Geschrieben um 07:43 am 08.06.2006 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Mein Tipp nach der Lektüre von Kapitel 13.15 mit dem Beispiel der Waage lautet:

003399

(Irgendwie scheint es mir nicht angebracht, für Inform 7 das Code-Markup zu verwenden. Schade, dass man außer Zitaten und Code nichts einrücken kann. Oder doch?)

Geschrieben um 13:59 am 08.06.2006 | Zitat | Editieren | Löschen
Lodda
Mitglied
Baby Gumby
Beiträge: 7

Ich dachte eher an "A size is a kind of value." mit einem Vergleich der Objekt-Größen als Regel beim "put [something] in [something]", oder so etwas in der Art. Eleganter wäre natürlich, wenn es so etwas wie container-size schon gäbe. Das scheint wohl nicht der Fall zu sein - schade.

Was meinst Du mit "einrücken"? Im Spiel? Oder im Code?

Geschrieben um 14:53 am 08.06.2006 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Lodda:

Eleganter wäre natürlich, wenn es so etwas wie container-size schon gäbe. Das scheint wohl nicht der Fall zu sein - schade.

In Inform 6 jedenfalls gab's das nicht. Ich denke, standardmäßig ist nur die carrying capacity definiert. (Üblicherweise werden beim Hineintun einige wenige sperrige Objekte ausgeschlossen, beziehungsweise nur wenige kleine Objketkte zugelassen. Obwohl eine feste Regel dafür sicherlich eleganter wäre, besonders wenn es viele Behälter gibt.)

Lodda:

Was meinst Du mit "einrücken"? Im Spiel? Oder im

Code? Nein, ich meinte hier im Forum.

Inform 7 habe ich mir bislang nur im Manual angeschaut.

Geschrieben um 20:01 am 08.06.2006 | Zitat | Editieren | Löschen
Frottee
Mitglied
Student Gumby
Beiträge: 36

Versucht's mal damit:

http://www.inform-fiction.org/I7/ex195.html#e195

Fragt mich nicht, wie es genau funktioniert (ich bin noch in der Phase, in der ich das System oberflächlich verstehen will, bei manchen Beispielcodes mache ich bewusst 'dicht'), aber ich glaube, es beschreibt den Ansatz, den ihr sucht.

PS: Dieses Inform 7 bereitet mir schlaflose Nächte. Und je mehr ich mich darin vertiefe, um so genialer finde ich es... ich kann das Paper von Graham Nelson übrigens sehr empfehlen, wenn man ein bisschen in die dahinterliegenden Überlegungen einsteigen will. Nicht ganz einfach zu lesen, aber interessant:

http://www.inform-fiction.org/I7Downloads/Documents/WhitePaper.pdf

Geschrieben um 20:45 am 08.06.2006 | Zitat | Editieren | Löschen
Lodda
Mitglied
Baby Gumby
Beiträge: 7

Also bevor ich so ein "kompliziertes" System appliziere, verwende ich lieber für die Spezialfälle "instead-Anweisungen"...

Instead of putting the Coat in the Purse, say "That doesn't fit in there."

Da spare ich mir einige Zeilen, auch wenn es weniger elegant ist.

Geschrieben um 22:18 am 08.06.2006 | Zitat | Editieren | Löschen
Frottee
Mitglied
Student Gumby
Beiträge: 36

Das wäre doch ein guter Kompromiss, und gar nicht so aufwendig:

blue

Jetzt passen Dinge nur noch in Container (oder auf Supporter), die mindestens gleich groß sind. Ein bisschen Überarbeitung und man kann auch ein Limit festlegen (nur zwei 'small things' oder ein 'medium thing' in einen 'medium container', etc)...

Geschrieben um 22:21 am 08.06.2006 | Zitat | Editieren | Löschen
Frottee
Mitglied
Student Gumby
Beiträge: 36

Also, Lodda, bevor's hier Mißverständnisse gibt, die Idee war natürlich von Dir.

Ich hab nur mal ein bisschen rumprobiert und es umgesetzt - und weil ich im Moment immer so einen Aha-Effekt habe, wenn ich was in I7 zum Laufen kriege, wollte ich's unbedingt posten :-)

Wirklich spannend, wie leicht man in I7 das World Model erweitern kann. Auch wenn das jetzt keine große Sache war, in Inform 6 wär's definitiv mit mehr Aufwand verbunden...

Geschrieben um 22:56 am 08.06.2006 | Zitat | Editieren | Löschen
Lodda
Mitglied
Baby Gumby
Beiträge: 7

Wow, vielen Dank für die Ausführung, genau so habe ich mir das vorgestellt :-) Werde ich so verwenden! Ist mir übrigens bisher sehr sympathisch das Inform 7.

Geschrieben um 11:54 am 10.06.2006 | Zitat | Editieren | Löschen
Frottee
Mitglied
Student Gumby
Beiträge: 36

Die Extension "Bulk Limiter" von Eric Eve macht übrigens etwas Ähnliches. Zu finden in der neu eröffneten Extension-Sammlung von Inform 7:

http://www.inform-fiction.org/I7/Download%20-%20Extensions.html

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz