Dev-Talk (PSI): Unterschied zwischen den Versionen

Aus Philo Wiki
Wechseln zu:Navigation, Suche
(anmerkungen zum heutigen parallel-programmieren...)
(Aktuelles: unlock code)
 
(157 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
  
 
== Aktuelles ==
 
== Aktuelles ==
<span style='color:#008'>'''Programm für 2.7.09''':
+
inhaltliche Änderungen und Weiterentwicklungen (die getestet werden sollen) bitte zukünftig im '''[[ChangeLog (PSI)|ChangeLog]]''' dokumentieren und diese Seite den technischen Details vorbehalten --[[Benutzer:Thai|Thai]] 20:16, 28. Jul. 2009 (UTC)
  
ich werde um '''13 Uhr''' und um '''16 Uhr''' den Code aus dem wiki übernehmen bzw. zuvor Volume2.Book1 ins wiki einarbeiten - es wäre gut, wenn ihr kurz davor einen commit macht und dann kurz wartet, bis ich fertig bin, damit wir Bearbeitungskonflikten möglichst aus dem Weg gehen (ich werde mit dem update warten, bis ihr jeweils in untenstehender Tabelle das ok gegeben habt). Überhaupt sollten wir, denke ich, möglichst oft commiten, damit sich Konflikte in Grenzen halten, oder?</span> --[[Benutzer:Thai|Thai]] 10:05, 2. Jul. 2009 (UTC)
+
* bin am code -[[Benutzer:H.A.L.|H.A.L.]] 09:16, 23. Nov. 2009 (UTC)
 
+
* fürs erste wieder freigegeben -[[Benutzer:H.A.L.|H.A.L.]] 10:37, 23. Nov. 2009 (UTC)
{| style="background-color:#efefef;border:#ddd solid 1px;font-size:9pt" align=center
 
!11.00
 
|thai
 
|topographie/conversation-update
 
|'''erledigt'''
 
|-
 
!12.55
 
|andyk
 
|commit
 
|''todo''
 
|-
 
!12.55
 
|h.a.l.
 
|commit
 
|''todo''
 
|-
 
!13.00
 
|thai
 
|topographie/conversation/diebstähle-update
 
|''todo''
 
|-
 
!15.55
 
|andyk
 
|commit andyk
 
|''todo''
 
|-
 
!15.55
 
|h.a.l.
 
|commit
 
|''todo''
 
|-
 
!16.00
 
|thai
 
|topographie/conversation/diebstähle-update
 
|''todo''
 
|}
 
  
 
== Arbeitsteilung ==
 
== Arbeitsteilung ==
<span style="color:#008">schlage vor, dass wir, um Bearbeitungskonflikten weitgehend aus dem Weg zu gehen, unsere Arbeit hier ein bisschen koordinieren - wer arbeitet gerade an welchen Abschnitten und zu welchem Zeitpunkt? --[[Benutzer:Thai|Thai]] 18:56, 1. Jun. 2009 (UTC)</span>
 
 
 
{| style="background-color:#efefef;border:#ddd solid 1px;font-size:9pt;width:100%"
 
{| style="background-color:#efefef;border:#ddd solid 1px;font-size:9pt;width:100%"
 
| style="vertical-align:top;border:#ddd solid 1px" | [[Benutzer:Thai|Thai]]<br />
 
| style="vertical-align:top;border:#ddd solid 1px" | [[Benutzer:Thai|Thai]]<br />
 
*regelmäßige Aktualisierung von '''Volume 3+4'''
 
*regelmäßige Aktualisierung von '''Volume 3+4'''
*Weiterentwicklung des Eingabe-Interfaces - ''Conversations''
 
*[[Szenariosammlung (PSI)#Arbeitsgruppe: Kreativer Ausdruck|Kreativer Ausdruck]] implementieren
 
 
| style="vertical-align:top;border:#ddd solid 1px" | [[Benutzer:H.A.L.|H.A.L.]]<br />
 
| style="vertical-align:top;border:#ddd solid 1px" | [[Benutzer:H.A.L.|H.A.L.]]<br />
*Intoxication ('''Book 2''') verfeinern, aber erst <s>wenn Book 4 / 5 stehen</s> für Version 2.x
+
*einarmiger Soldat:
*[http://irregularwebcomic.net/687.html Refactoring]: <s>würde gern mal den Code sortieren</s> - macht wohl auch erst Sinn, wenn wir alles haben
+
**Einleitung
* Eugenik - Wächter und Richter implementieren
+
**yes-no-Antworten
 
| style="vertical-align:top;border:#ddd solid 1px" | [[Benutzer:Andyk|Andyk]]<br />
 
| style="vertical-align:top;border:#ddd solid 1px" | [[Benutzer:Andyk|Andyk]]<br />
# <s>Crowd-Algorithmus entrandomisieren und ein bisschen mehr straight-forward machen</s>
+
Geplante Tätigkeiten (geordnet nach Priorität):
# <s>Experimentieren mit Parchment und der Möglichkeit, es offline in java-script umzuwandeln, damit man das Spiel schnell '''und''' ohne etwas zu installieren spielen kann</s>
+
# Bug: Menübedienung bei x person 1
# Helgas [[Szenariosammlung_(PSI)#AKTUELL:_Der_Spieler_erreicht_SUN_CITY|Vorschlag zu SunCity]] implementieren und entsprechend Feedback geben
+
# Testen ob das need-item geht
# Zu Beginn des Spiels eine Taschenuhr ins Inventar legen
+
# evt. an den Wahrscheinlichkeiten und Crowd-Zahlen herumschrauben
 
# evt. Help-Menü
 
# evt. Help-Menü
# das Poster soll nur in bestimmten Regionen angezeigt werden
+
# evt. Umwandeln von Gegenständen in Geld (nice-to-have; notfalls nur ein geschlossenes Tauschwarengeschäft vorsehen, damit die Spielerin zum Szenario gelockt wird; kann man aber auch gänzlich weglassen)
# Umwandeln von Gegenständen in Geld (nice-to-have; notfalls nur ein geschlossenes Tauschwarengeschäft vorsehen, damit die Spielerin zum Szenario gelockt wird; kann man aber auch gänzlich weglassen)
+
''Die großen nicht-nur-technischen Vorhaben finden sich [[Diskussion:Endspurt_(PSI)#Spieler_spielen|hier]].''
 
| style="vertical-align:top;border:#ddd solid 1px" | who else?<br />
 
| style="vertical-align:top;border:#ddd solid 1px" | who else?<br />
 
*...
 
*...
 
|}
 
|}
  
Vielleicht könnten wir auch [[Projektüberlegungen_(PSI)|das hier revitalisieren]], wenn jemand Lust hat.--[[Benutzer:Andyk|Andyk]] 22:04, 1. Jun. 2009 (UTC)
+
== Fehlende Implementierungen ==
:<font color="#008000">Wäre eine Idee, aber dann müßten wir es mal überarbeiten (an die tatsächliche Arbeitsteilung anpassen).</font>
+
 
::<span style="color:#008">Sollte man unbedingt machen - ich glaube, wir verlieren auch gerade wertvolle Zeit, weil die Nicht-Geeks nicht so recht wissen, wie sie sich einbringen können. Da wären klare Arbeitsaufträge und -einteilungen sinnvoll. Obige Tabelle ist dafür gedacht, dass die Programmierer sich (intern) darüber am Laufenden halten, woran sie gerade arbeiten (oder noch arbeiten wollen)...</span> --[[Benutzer:Thai|Thai]] 20:38, 2. Jun. 2009 (UTC)
+
Hab mir gerade angeschaut, welche Main-Features noch fehlen, damit man von einer halbwegs reichhaltigen Geschichte im Schloss sprechen kann. Fehler bitte korrigieren und Arbeit aufteilen: --[[Benutzer:Andyk|Andyk]] 18:33, 18. Jul. 2009 (UTC)
 +
 
 +
{| class="wikitable" align="center" border="2" cellspacing="0" cellpadding="10" style="background:#f9f9f9;"
 +
| style="background:#e0ffff;" | '''Feature'''
 +
| style="background:#e0ffff;" class="unsortable" | '''Beschreibung'''
 +
| style="background:#e0ffff;" | '''Status'''
 +
| style="background:#e0ffff;" class="unsortable" | '''Wer machts?'''
 +
|-
 +
| style="background:#99CC66;"|[[Szenariosammlung_(PSI)#Gespr.C3.A4ch_mit_Skoraste|Gespräch mit Skoraste]]
 +
| style="background:#99CC66;" |<div>
 +
    <ul>
 +
      <li>Das ist das Intro vom dritten Level (1.Hungriger Bettler und Amateurdieb, 2. Meisterdieb), nachdem man Gyges mehr oder weniger erfolgreich hinter sich gebracht hat.</li>
 +
      <li>Für v1.0 kann man das so lassen, würd ich sagen.</li>
 +
</ul>
 +
  </div>
 +
|style="background:#99CC66;"| 100%
 +
|style="background:#99CC66;"| [[Benutzer:Andyk|Andyk]]
 +
|-
 +
|style="background:#99CC66;"| [[Szenariosammlung_(PSI)#Arbeitsgruppe:_Eugenik|Szenario: Tische]]
 +
|style="background:#99CC66;"| <div>
 +
    <ul>
 +
      <li>Das ist das erste Szenario in SunCity</li>
 +
      <li>Mape hat hier [[IF:Eugenik|ein wenig von der räumlichen Architektur]] und manche Beschreibungen eingebaut.
 +
      <li>Dialoge implementiert. Das sollte soweit passen.</li>
 +
    </ul>
 +
  </div>
 +
|style="background:#99CC66;"| 100%
 +
|style="background:#99CC66;"| [[Benutzer:Andyk|Andyk]]
 +
|-
 +
| style="background:#99CC66;" |[[Szenariosammlung_(PSI)#Soldat_und_Richter|Szenario: Einarmiger Soldat]]
 +
| style="background:#99CC66;" | <div>
 +
    <ul>
 +
      <li>H.A.L. hat den Dialog so gut wie fertig beschrieben. Auch die Einbettung in ein [[IF:Eugenics2|raum-zeitliches Szenario]] ist geschehen.</li>
 +
    </ul>
 +
  </div>
 +
| style="background:#99CC66;" | 100%
 +
| style="background:#99CC66;" | H.A.L
 +
|-
 +
| [[Szenariosammlung_(PSI)#Arbeitsgruppe:_Kreativer_Ausdruck|Szenario: Kreativer Ausdruck]]
 +
| <div>
 +
    <ul>
 +
      <li>Liegt in zwei Versionen vor</li>
 +
      <li>Entscheidung für eine Version oder eine Fusionierung ist ausständig - '''UPDATE:''' hab mich erstmal an version 2 orientiert, mal sehen, was man dann aus version 1 noch übernehmen kann...</li>
 +
      <li>Die [[IF:WarMusic|Räumliche Architektur]] ist grundsätzlich vorhanden</li>
 +
      <li><font color="red">Entscheidung auf '''Version 2''' gefallen. Version 1 und 2 zu verheiraten macht so keinen Sinn, da sie zu unterschiedlich sind. Werde an den Dialogen weiterbasteln.</font> --[[Benutzer:Mape|mape]] 18:00, 28. Jul. 2009 (UTC)</li>
 +
    </ul>
 +
  </div>
 +
| 80%
 +
| Thai
 +
|-
 +
| [[Benutzer:Stb/Scenario English|Szenario: Frauen- und Eigentumsteilung]] ([[Szenariosammlung_(PSI)#Arbeitsgruppe:_Kreativer_Ausdruck|DE]])
 +
| <div>
 +
    <ul>
 +
      <li>Ein paar [[IF:ElitistCommunism|wenige Räume]] gibt es bereits</li>
 +
      <li>Vielleicht sollte man den Kommentar von Jakob aufgreifen und in den Dialog mit hineinnehmen falls das noch möglich ist, ansonsten nicht.</li>
 +
<li>was es an Dialog bisher gibt ist (noch nicht ganz fehlerfrei) implementiert.</li>
 +
    </ul>
 +
  </div>
 +
| 80%
 +
| Thai
 +
|-
 +
| [[Szenariosammlung_(PSI)#Arbeitsgruppe:_Qualit.C3.A4tsmanagement_bei_W.C3.A4chtern|Szenario: Qualitätsmanagement bei Wächtern]]
 +
| <div>
 +
    <ul>
 +
      <li>Die Textbasis ist selbst (noch) ein Fragment</li>
 +
      <li>Entweder es schreibt noch jemand weiter, oder wir finden einen Weg, das Fragment zu implementieren oder es fehlt beim Release des Spiels (zumindest bei V1.0)</li>
 +
      <li>'''UPDATE:''' Für v1.0 ist dieses Szenario gestrichen.--[[Benutzer:Andyk|Andyk]] 11:53, 24. Jul. 2009 (UTC)</li>
 +
    </ul>
 +
  </div>
 +
| '''-'''50%
 +
| ???
 +
|-
 +
| style="background:#99CC66;"| [[Szenariosammlung_(PSI)#Schlussgespr.C3.A4ch_mit_Skoraste|Schlussgespräch mit Skoraste]]
 +
| style="background:#99CC66;"|<div>
 +
    <ul>
 +
      <li>Hier kann man noch ein bisschen Aufwand treiben und die Spielausgänge etwas interaktiver als durch ein Gespräch enden lassen - zumindest möchte ich das bei Option 2 machen. <font color="maroon">'''UPDATE:''' Ein wenig interaktives ist dabei: Wenn die Spielerin Option 2 wählt, findet sie sich in der U-Bahn wieder. Nach einem Spielzug muss sie im Stadion aussteigen (Endstation). Wenn sie dann etwas tun möchte, sieht sie, wie Bushido einem kleinen Kind das Armband stehlen will. 100 Punkte. ENDE</font> --[[Benutzer:Andyk|Andyk]] 11:50, 24. Jul. 2009 (UTC)</li>
 +
    </ul>
 +
  </div>
 +
| style="background:#99CC66;"|100%
 +
| style="background:#99CC66;"|[[Benutzer:Andyk|Andyk]]
 +
|}
  
 
== Build 33 ==
 
== Build 33 ==
Zeile 133: Zeile 173:
 
::<font color="#008000">Eigenartig. --[[Benutzer:H.A.L.|H.A.L.]] 22:12, 31. Mai 2009 (UTC)</font>
 
::<font color="#008000">Eigenartig. --[[Benutzer:H.A.L.|H.A.L.]] 22:12, 31. Mai 2009 (UTC)</font>
  
== Build 46 ==
+
== ARCHIV ==
 
 
--[[Benutzer:Thai|Thai]] 21:23, 1. Jun. 2009 (UTC)
 
 
 
Wie angekündigt habe ich mich am Wochenende hingesetzt und meinen bescheidenen Versuche von [[Benutzer:Thai/Weltenbau|zuvor]], nunja, ähm, etwas erweitert. Ich denke, das Ergebnis kann uns nützlich sein. Ob es uns jemals so viel Zeit ersparen wird, wie von mir investiert wurde, ist zwar fraglich, aber dafür bin ich jetzt mit der großartigen Semantic MediaWiki-Extension einigermaßen vertraut. Am besten, ihr seht euch das ganze einmal an, die vorläufige Version findet sich '''[http://www.unet.univie.ac.at/~a0255366/wiki/index.php?title=IF:PSI hier]'''
 
 
 
Ihr könnt dort erkennen, dass ich die gesamte Topographie (und unter diesen Begriff habe ich frech auch Personen subsumiert) des bisher vorhandenen Source-Codes in Wiki-Pages übersetzt habe, wobei jeder Gegenstand (und jeder Abschnitt und das Spiel selbst) eine eigene Seite hat und der inform-code automatisch durch Vorlagen generiert wird, aus Daten - und das ist das Tollste - die über Formulare eingegeben werden können. Mit SMW kann man aus einem wiki also eine richtige Datenbank machen. Ich werde versuchen, das ganze Ding im Laufe der Woche ins philo-wiki zu importieren, einstweilen müsst ihr euch zum Ausprobieren in meinem wiki registrieren, aber das geht schnell und tut nicht weh.
 
 
 
Wozu die ganze Arbeit? Erstens kann es die Entwicklung erleichtern, weil man sich die Befehle nicht zu merken braucht, manche Zusammenhänge und alle möglichen Parameter für ein Objekt sofort ersichtlich sind, Namen von Objekten automatisch ergänzt werden, ... Außerdem aber - und wichtiger: es simplifiziert die Zusammenarbeit von Codierern und Content-Erstellern und verhindert diverse Bearbeitungskonflikte schon im Vorfeld. Die Entwickler kennzeichnen Objekte, denen noch eine Beschreibung fehlt, oder die noch geändert werden sollten, die Textarbeiter führen diese Änderungen durch, wann immer es ihnen gefällt. In regelmäßigen Abständen wird einfach das gesamte Book 0 (in dem alle topographischen Informationen zentral gespeichert sind) durch den aktualisierten code aus dem wiki ersetzt, ein mühsames copy&paste mit einzelnen neu zur Verfügung gestellten Textstücken wird damit überflüssig.
 
 
 
::<font color="#008000">Find ich toll, vor allem wissen dann die Content-Ersteller gleich, welches Objekt welche Eigenschaften haben soll, ohne sich mit der Technik herumschlagen zu müssen.</font>
 
 
 
Ausblick: vielleicht ist auch eine Erweiterung auf andere Code-Bestandteile möglich und sinnvoll? Eventuell für Actions, und ganz bestimmt für Konversationen, denn insbesondere da steckt viel kreative Textarbeit drin...
 
 
 
::<font color="#008000">Hm. Eine menübasierte Konversation funktioniert ja anders als ein Objekt, sie hat eine Baumstruktur und nicht ein fixes Set von properties. - Man müßte ein Formular für jeden Node anlegen, mit einem Haupttext (die Aussage des Gegenübers) und 1-n Antwortmöglichkeiten, von denen jede einen Text und die Verbindung zum nächsten Node hat. Bei Actions bin ich mir jetzt nicht sicher, ich denke, das geht nur im Übergang von freier Beschreibung zum Programmieren.</font>
 
 
 
::::In Bezug auf die Actions ginge es einerseits wieder darum, den Entwicklern die Arbeit zu erleichtern (weil man im Formular alle nötigen Informationen über Action-Definitionen unterbringen kann). Natürlich können die Content-Ersteller hier nicht selbst Actions erstellen, weil man dafür inform sprechen muss, aber andererseits können sie beispielsweise den Text in <code>say</code>-Phrasen ergänzen, kleine Fehler ausbessern oder Todos für die Entwickler erstellen, wenn ihnen beim Testen auffällt, dass etwas nicht klappt oder fehlt. Eine Einschränkung ist allerdings, dass es im wiki keine Tabulatoren gibt - wir müssten uns also das explizite Programmieren mit <code>begin</code> und <code>end</code> angewöhnen. Was die Konversationen anbelangt, bin ich recht zuversichtlich, das irgendwie hinzukriegen. Obwohl das Conversation Package (mit der Möglichkeit, Gesprächsknoten und jeweils Standardantworten und Themenvorschläge für sie bzw. für Personen zu definieren), das ich gerne verwende möchte, noch mal komplexer ist als bloße menübasierte Konversation.
 
 
 
Freue mich über Kommentare, ich kann das Ganze ja dann am Donnerstag ausführlicher vorführen.
 
 
 
übrigens: Diese Seite hat jetzt dank ''magic word'' oben ein "+" neben "Bearbeiten" - ganz wie eine "echte" Talk-Page. Damit kann man automatisch einen neuen Abschnitt am Ende der Seite erzeugen
 
 
 
::<font color="#008000">Das ist ja fein, das könnten wir für das ganze Wiki brauchen. Läßt sich die Funktion generell in das Seiten-Template einbauen, oder zumindest in die Vorlage? --[[Benutzer:H.A.L.|H.A.L.]] 15:25, 2. Jun. 2009 (UTC)</font>
 
 
 
::::Ob und wie sich die Funktion für das ganze Wiki einstellen lässt, weiß ich leider auch nicht - Seiten, die die Vorlage PSI einbinden haben jedenfalls ab sofort das gewisse Plus.
 
 
 
=== Beeindruckend ===
 
 
 
Ich bin erstaunt von der Schönheit dieser Konstruktion! Ich hab es mir bis jetzt nur kurz angesehen, bin aber schon voll begeistert; das ist die ideale Verbindungsbrücke zwischen Content und Code. Es freut mich außerdem doppelt, weil die [[Benutzer:Andyk/Mitschriften/Inform_7_Rahmenstruktur|Rahmenstruktur-Tabellen]] dadurch nicht gänzlich unnötig sind ^^. (Bitte meine [http://www.unet.univie.ac.at/~a0255366/wiki/index.php?title=IF:Testdoor Testtür] löschen; wollte nichts kaputt machen, indem ich die Einträge aus den Formularfeldern entferne, also hab ich sie mal drinnen gelassen). Freu mich auf die Demonstration am Donnerstag und hoffe, dass es fleißig verwendet wird. THX für die Mühe!
 
 
 
:: Achja, ich habe eine theoretische Frage: Wenn wir den Topographie-Source-Code direkt in der Entwicklungsumgebung ändern müssten, können wir den anschließend ins SMW reinspielen? Oder muss man dazu bestimmte Kennzeichnungen im Source-Code vornehmen, damit die Ontologie erkannt wird? --[[Benutzer:Andyk|Andyk]] 22:39, 1. Jun. 2009 (UTC)
 
 
 
:::<span style="color:#008">Wie wir das im Detail regeln, müssen wir uns noch ansehen. Mein Vorschlag wäre ein eigenes '''Book 0.1''' einzurichten, in dem ''ad hoc'' Änderungen an der Topographie durchgeführt werden können. Diese würde ich dann vor jedem Update ins wiki übertragen (''todos'' können dabei einfach als Kommentare angemerkt werden). Alles, was in '''Book 0''' steht, wird jeweils rücksichtslos mit dem code aus dem wiki überschrieben. Um vollkommen neue Objekte zu erstellen, wäre sinnvoll, das jeweilige wiki-Formular zu verwenden, und nur den Code der Objektseite ins Book 0 zu kopieren (egal wohin - die Ordnung wird beim nächsten Update wiederhergestellt).</span> --[[Benutzer:Thai|Thai]] 07:33, 2. Jun. 2009 (UTC)
 
::: Hey, Thai. Wie ich sehe, hast du am SVN-Repository was committed; ich vermute, die source.ni-Datei hätte sich auch verändern sollen, was sie aber nicht hat. Kannst du das nochmal gegenprüfen und neu committen. Ich warte so lange mit meinen Änderungen. --[[Benutzer:Andyk|Andyk]] 18:25, 2. Jun. 2009 (UTC)
 
:::<span style="color:#008">Danke für den Hinweis! Es scheint so, als würde die mac-Version der inform-Entwicklungsumgebung die <code>.svn</code>-Dateien in einigen Unterverzeichnissen der inform-Datei beschädigen, diese erscheinen dann als nicht versioniert und werden nicht mehr upgedatet. Ist aber nicht weiter tragisch, zweimal copy&paste (aus story.ni in die lokale inform-Datei und wieder zurück) und alles ist in Butter. Werde halt in Zukunft nichts mehr zum Skein beitragen, aber damit wird man wohl leben können ;)
 
 
 
WIRKLICH TOLL! [[Benutzer:Anna|anna]] 14:40, 2. Jun. 2009 (UTC)
 
 
 
== Build 50 ==
 
* So, ich habe schonmal angefangen zu arbeiten. Nurmal so, weil ich es grad instruktiv fand ein Output der Debug-Meldungen, wie der Algorithmus arbeitet, wenn er die Personen für die Menge erstellt:
 
 
 
<small>
 
<pre>
 
DEBUG: Add Person #1 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #2 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #3 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #4 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #5 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #6 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #7 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #8 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #9 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #10 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #11 with type EatingVictim (VTID: 1).
 
DEBUG: Add Person #1 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #2 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #3 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #4 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #5 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #6 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #7 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #8 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #9 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #10 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #11 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #12 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #13 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #14 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #15 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #16 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #17 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #18 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #19 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #1 with type IntractableVictim (VTID: 3).
 
DEBUG: Add Person #2 with type IntractableVictim (VTID: 3).
 
DEBUG: Add Person #3 with type IntractableVictim (VTID: 3).
 
DEBUG: Add Person #1 with type AggressiveVictim (VTID: 4).
 
DEBUG: Add Person #2 with type AggressiveVictim (VTID: 4).
 
DEBUG: Add Person #1 with type BusyStudent (VTID: 5).
 
DEBUG: Add Person #2 with type BusyStudent (VTID: 5).
 
DEBUG: Add Person #3 with type BusyStudent (VTID: 5).
 
DEBUG: Add Person #1 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #2 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #3 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #4 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #1 with type IntractableVictim (VTID: 3).
 
DEBUG: Add Person #1 with type AggressiveVictim (VTID: 4).
 
DEBUG: Add Person #2 with type AggressiveVictim (VTID: 4).
 
DEBUG: Add Person #1 with type BusyStudent (VTID: 5).
 
DEBUG: Add Person #2 with type BusyStudent (VTID: 5).
 
DEBUG: Add Person #1 with type Clanmember (VTID: 7).
 
DEBUG: Add Person #1 with type ShyVictim (VTID: 2).
 
DEBUG: Add Person #1 with type IntractableVictim (VTID: 3).
 
DEBUG: Add Person #1 with type BusyStudent (VTID: 5).
 
DEBUG: Add Person #2 with type BusyStudent (VTID: 5).
 
DEBUG: Add Person #1 with type AggressiveVictim (VTID: 4).
 
DEBUG: Add Person #1 with type ShyVictim (VTID: 2).
 
</pre>
 
</small>
 
 
 
Da sich die Erscheinungswahrscheinlichkeiten der einzelnen Typen auf einmalige Ereignisse beziehen (das bedeutet: Wenn ich aus einer Menge von Leuten eine Person raus nehme, wie wahrscheinlich ist es, dass diese Person vom Typ t ist?), wird so vorgegangen:
 
 
 
* 1. Bestimme die Absolute Anzahl der Mitglieder der Menge (csize)
 
* 3. Fixiere einen Opfer-Typ t und hol dir die Auftrittswahrscheinlichkeit p.
 
** 3a. Erstell dir eine binäre Zufallsvariable (JA/NEIN), wobei JA die Wahrscheinlichkeit p zugeordnet wird (daraus folgt, dass NEIN die Wahrscheinlichkeit 100 - p bekommt).
 
** 3b. Würfle mit dieser Zufallsvariable, und das ''csize'' mal. Du erhältst dadurch die absolute Anzahl der Leute von Typ t in der Menge, nennen wir sie abs_t.
 
** 3c. Subtrahiere abs_t von csize, und du erhältst einen neuen Wert von csize.
 
** 3d. Such dir in der Tabelle der Personenbeschreibungen zufällig jemanden raus, der als Typ t charakterisiert wird oder dem kein bestimmter Typ zugewiesen ist (Ausnahme: Wenn Personen von Typ "eatingVictim" gesucht werden, dann muss die Personenbeschreibung genau passen. Denn in der Personenbeschreibung wird sowas stehen wie: "Der isst gerade eine Pizza". Natürlich muss man die Personenbeschreibungen von Leuten die essen, genau dem Typ "eatingVictim" zuweisen. Man kann sich auch vorstellen, noch andere Ausnahmen einzutragen). Jetzt hast du eine Person gefunden, die du der Menge zuweist (Eintrag in die Mengentabelle).
 
** 3e. Wiederhole das abs_t mal.
 
* 4. Wiederhole Schritt 3a-e solange, bis csize 0 ist. Das bedeutet, man geht die einzelnen Typen solange durch, bis für jeden Platz in der Menge eine konkrete Personenbeschreibung zugewiesen wurde.
 
 
 
(Ich hatte bis zuletzt übrigens einen Fehler, weil ich Schritt 3e vergessen habe).
 
 
 
Werde mich jetzt mal um die Konsistenz der Versionen kümmern - befürchte Schreckliches. (Habe im Topographie-Bereich die Reihenfolge zwischen Money und VictimType verändert, hoffe das ist nicht schlimm?)
 
--[[Benutzer:Andyk|Andyk]] 22:19, 2. Jun. 2009 (UTC)
 
 
 
<pre>DEBUG: Die Option theft_of_food mit Text
 
Stehle dem Opfer das Essen. ist für
 
die Person yourself erlaubt, da
 
die Person nothing hat und
 
im Grad Survival ist.</pre>
 
 
 
:<span style='color:#008'>Einige Hinweise, wie die crowd-Erstellung vielleicht noch vereinfacht werden könnte (obwohl es vielleicht eh überflüssig ist, weil das javascript-Vorkompilieren den nötigen Geschwindigkeits-Boost bringt):
 
:*erstens: wenn ich recht verstanden habe, errechnest du die gesamte crowd, obwohl der Spieler ohnehin nur einen Teil davon sehen kann und nur mit diesem Teil weitergearbeitet wird
 
:: <font color="maroon">korrekt, das habe ich mir auch schon mal gedacht, dass es nicht unbedingt nötig wäre. War bislang nur zu faul, um es zu ändern. Kleine Erklärung dazu: Die Sache ist damals gewachsen, da ich zunächst nicht vor hatte, die Sicht der Spielerin einzuschränken und habe mir dann gesagt: Das ist halt eine richtige Simulation der Crowd und nicht nur ein Konstrukt für die Spielerin. Wenn die Performance drunter leidet, muss diese Spielerei natürlich weg.</font> --[[Benutzer:Andyk|Andyk]] 20:39, 27. Jun. 2009 (UTC)
 
:*zweitens: wenn die crowd bereits die richtige Zusammensetzung hat (die bei dir in der VictimType-Tabelle explizit gesetzt wird), dann bleibt die Zusammensetzung auch für eine zufällige Auswahl erhalten
 
:: <font color="maroon">Stimmt im Groben - mit einer kleinen, für das Spiel irrelevanten Subtilität: Die Zusammensetzung, also die appearance_probability p beantwortet die Frage: Wie wahrscheinlich ist es, wenn ich eine Person herausnehme, dass die vom VictimType t ist? Dadurch ergibt sich die absolute Zahl der Leute nicht direkt, sondern es entsteht ein kleiner Zufallseffekt (Binomialverteilung: B(c,p,x) c ist die Anzahl der noch zu befüllenden Positionen in der Crowd, die sich natürlich pro Durchlauf in Schritt 3 ändert. x ist dann die Anzahl der zu befüllenden Personen für den VictimType t - also das Ergebnis des Binomialexperiments B, wenn c und p fix sind.) Das ist natürlich ein unnötiger Performance-Fresser, das war mir schon beim programmieren bewusst, aber es hat mir Spaß gemacht zum programmieren ;). Nachdem du das aber jetzt so schön im Wiki visualisiert hast, werd ich die appearance_probability natürlich uminterpretieren und den Algorithmus entsprechend anpassen. --[[Benutzer:Andyk|Andyk]] 20:39, 27. Jun. 2009 (UTC)</font>
 
::*zur Erleichterung gibt es auf [[IF:Diebstähle]] im blauen Feld "Diebstahl-Details" jetzt eine Auflistung mit der tatsächlichen Verteilung unter den bisher angelegten Opfern - man kann also im todo darauf hinweisen, Opfer welchen Typs noch angelegt werden sollten
 
:*daraus folgt drittens: sobald die Anzahl der für den Spieler sichtbaren Opfer ermittelt wurde, kann die Opfertabelle mittels
 
::<source lang=inform enclose=div>sort the Table of ConcreteVictims in random order</source>
 
:*...durcheinandergewürfelt und dann einfach die entsprechende Menge an Opfern vom Anfang der Tabelle ausgewählt werden.
 
::<font color="maroon">Jup, das ist die straight-forward-Methode, die ich angesichts der aktuellen Lage durchführen werde. --[[Benutzer:Andyk|Andyk]] 20:39, 27. Jun. 2009 (UTC)</font>
 
:<span style='color:#008'>nützlich für dich?</span> --[[Benutzer:Thai|Thai]] 17:09, 27. Jun. 2009 (UTC)
 
Danke für die Anmerkungen - freut mich, dass sich jemand mit dem Algorithmus beschäftigt und endlich entdeckt, welche Spielereien dort zu finden sind. ^^ --[[Benutzer:Andyk|Andyk]] 20:39, 27. Jun. 2009 (UTC)
 
 
 
== Build 54 ==
 
Menübasierter Ansatz erweitert - man sollte nun entsprechend der Tabelle die Personen und die möglichen Handlungen auswählen können (Details siehe Code). (Bitte meine seltsamen Merging-Versuche kontrollieren; ich glaube die Ursache für meine Probleme ist mein überlagertes Backupsystem - [http://www.getdropbox.com/ Dropbox] -; wenn ich auf zwei Computer arbeite, erkennt Tortoise beim jeweils anderen Computer nicht, dass ich etwas geändert habe und da tauchen dann die Probleme auf.) Ich werde mal bis Donnerstag pausieren. --[[Benutzer:Andyk|Andyk]] 02:10, 3. Jun. 2009 (UTC)
 
 
 
== Build 57 ==
 
Möchte heute den Diebstahl-Algorithmus zum Ende bringen. Dazu ist noch notwendig:
 
* Dynamisch die Objekte erstellen (oder wenn ich darauf verzichte, dann etwas Anderes einfallen lassen wie einen Gegenstand "Diebesgut", bei dem man nur die Attribute ändert, oder der auf eine Tabelle mit eingesacktem Diebesgut zeigt.
 
* Die Punktezahlen erhöhen, wenn Diebstahl erfolgreich
 
* Festlegen, was passieren soll, wenn Diebstahl fehlschlägt (Punktezahl reduzieren, Spiel verloren, ...)
 
* Automatisches "Aufsteigen" im Rang - basierend auf Punktezahl und ob Gyges das "Theft by Intoxication" schon absolviert hat.
 
 
 
Das reicht. Melde mich wieder, wenn ich fertig bin ;) --[[Benutzer:Andyk|Andyk]] 20:30, 5. Jun. 2009 (UTC)
 
 
 
Da ich mir aufgrund [http://code.google.com/p/composure-if/ dieser URL] keine Sorgen bzgl. Parchment und Glulx-Kompatibilität Sorgen machen brauche, werde ich echte Objekte implementieren, die man ganz normal im Inventar anschauen kann.
 
 
 
Was ich in diesem Zuge noch entdeckt habe: Man kann - wie Anna vermutet hat - den Code tatsächlich [http://code.google.com/p/composure-if/source/browse/branches/parchment/tools/zcode2js.html bereits offline in Javascript umwandeln], um eine höhere Performance zu erreichen.--[[Benutzer:Andyk|Andyk]] 22:18, 5. Jun. 2009 (UTC)
 
 
 
Prinzipiell sollten die obigen Dinge nun funktionieren. Wenn der Diebstahl fehlschlägt, werden zur Zeit nur Punkte abgezogen; sonst hat es keine Konsequenzen. --[[Benutzer:Andyk|Andyk]] 23:48, 5. Jun. 2009 (UTC)
 
 
 
Die Performance ist auf meinem Rechner (950MHz - Single Core, 768 MB RAM) nicht ganz so flüssig wie bei "normalen" Spielen. Wie sieht das bei euch aus? (Wenn es bei euch auch nicht so gut ausschaut, werde ich auf die Dynamic Objects Extension verzichten und die Items anders generieren)
 
 
 
:<font color="#008000">Läuft bei mir auch sehr langsam. Es wäre wohl besser, auf die dynamic objects zu verzichten. So macht das keinen Spaß mehr.</font>
 
 
 
Es fehlt noch eine Anzeige der angeeigneten Gegenstände. (Ich muss zugeben, ich hab es noch nicht ausführlich getestet). Bei "EatingVictims" habe ich die Tabelle so modifiziert, dass man nur Punkte hinzu bekommt und kein Geld oder keinen Wertgegenstand, da Gyges das (nicht näher beschriebene) Nahrungsmittel sofort zu sich nimmt. Ich könnte das wieder raus nehmen, wenn die Erfolgsmeldungen entsprechend gestaltet werden.
 
 
 
Es gibt einen Bug: Nach einem erfolgreichen Diebstahl wird die Tabelle um die Person, bei der man den Diebstahl durchgeführt hat, bereinigt. Das Menü dürfte aber nicht korrekt upgdated werden, weshalb ein Zugriffsfehler auftaucht.--[[Benutzer:Andyk|Andyk]] 00:00, 6. Jun. 2009 (UTC)
 
 
 
<font color="#008000">Hab ich glaubich schon erwähnt, aber Hunger und Verhungern ist in [http://www.inform-fiction.org/I7/ex247.html#e247 Beispiel 140 im Manual] implementiert ("Hunger that eventually kills the player, and foodstuffs that can delay the inevitable by different amounts of time").</font>
 
 
 
== Angabe der Ausgänge aus den Beschreibungen entfernen? ==
 
 
 
Wollte dazu noch mal nachfragen: ist es nicht so, dass ExitLister nur die Himmelsrichtungen angibt, in die der Spieler gehen kann? Wäre es nicht durchaus trotzdem sinnvoll, in den Raumbeschreibungen Hinweise darauf zu geben, was wo ist (vermeidet den Frust, ständig in die falsche Richtung zu laufen)? Hab das Todo vorläufig wieder entfernt - wenn ich mich täusche, oder ihr anderer Meinung seid, bitte wieder hinzufügen... --[[Benutzer:Thai|Thai]] 16:41, 6. Jun. 2009 (UTC)
 
 
 
<font color="#008000">Soviel ich weiß schon. Man kann aber auf andere Weise den Raum angeben, vgl. etwa Beispiel 331. --[[Benutzer:H.A.L.|H.A.L.]] 05:53, 10. Jun. 2009 (UTC)
 
 
 
Update: Ich habe mal eine every turn rule eingefügt, die die Ausgänge und die Räume auflistet.</font>
 
 
 
== Build 58 ==
 
 
 
Hab die Tabellen für die Diebstähle, die jetzt aus dem Wiki befüllt werden, ins '''Volume 0''' gepackt. Das Original habe ich vorläufig behalten und den Import aus dem wiki auskommentiert, weil inform derzeit beim Kompilieren hängenbleibt (vermutlich weil noch zu wenige Victims definiert sind). @Andyk: Bitte [[IF:Diebstähle]] aktualisieren (vor allem die Todos) und dann noch mal eine Aufforderung an alle schreiben, neue Opfer zu basteln... --[[Benutzer:Thai|Thai]] 19:25, 6. Jun. 2009 (UTC)
 
 
 
== Build 64 ==
 
* [http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?revision=64&view=markup Code]
 
* [http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=62&r2=64 Diff to 62]
 
 
 
 
 
Bzgl. Exit Listener habe ich HALs Rule ein wenig überarbeitet. Bitte um Kommentare.
 
 
 
:<font color="#008000">Sowas hab ich mir vorgestellt. Ich habe die Regel nochmal modifiziert, jetzt leitet der Text die letzte Möglichkeit mit "or" ein. Dazu habe ich den Code so verändert, daß die Variable runter- statt raufzählt. --[[Benutzer:H.A.L.|H.A.L.]] 08:02, 12. Jun. 2009 (UTC)</font>
 
 
 
Hoffe, ich kann die Crowd Algorithmen heute abschließen.
 
 
 
Glulx bremst die Performance bei schwachen Rechnern enorm aus, habe ich festgestellt. Konsequenzen: Dynamic Object Extension entfernt. Da die Reaktionszeiten immer noch recht langsam waren, habe ich auf Z8 umgestellt; jetzt läuft das Spiel auch bei meinem Rechner wieder flüssig.
 
 
 
Die Person wird nun richtig entfernt. Was noch fehlt ist, dass - wenn der Diebstahl fehlschlägt, die Person in einen anderen Raum kommt (am besten per Zufall - 2 Räume weiter). Vielleicht mag das jemand implementieren? Das sollte in der activity rollout rule geschehen, und zwar in diesem Bereich, wo ein Punkt abgezogen wird:
 
<source lang="inform">
 
wait for any key;
 
else;
 
say ftext of planning box;
 
decrease the score by 1;
 
[Festlegung der Einfachheit halber: Man kann im Rang nicht mehr zurückrutschen]
 
if the score < -10 and grade of yourself is Survival begin;
 
end the game saying "You died on starvation.";
 
else if the score < -5 and the grade of yourelf is Single_Amateur begin;
 
end the game saying "Jetzt haben sie dich geschnappt."
 
end if;
 
wait for any key;
 
end if;
 
</source>
 
( Falls nicht, mach ich es demnächst )
 
 
 
:<font color="#008000">Ich hab einen Code eingefügt, der Gyges um zwei Räume versetzt. Dabei ist zu beachten, daß an der Stelle, an der im Ablauf der neue Code ausgeführt wird, im Spiel eine Raumbeschreibung kommt. Wir könnten noch überlegen, ob diese an einer Stelle besser paßt als an einer anderen. Oder sie ganz unterdrücken, dazu müßte man mW die ''describe room gone into'' rule ersetzen. Das würde passen, denn Gyges flieht blindlings und sieht sich zuerst nicht mal um. - Ich habe noch einen Satz eingefügt, der die Flucht beschreibt. Ich dachte mir, das muß nicht unbedingt in der Fail-Message stehen, weil es nicht vom Opfer abhängt. --[[Benutzer:H.A.L.|H.A.L.]] 08:02, 12. Jun. 2009 (UTC)</font>
 
 
 
--[[Benutzer:Andyk|Andyk]] 15:49, 11. Jun. 2009 (UTC)
 
 
 
<font color="#008000">Build 65: [http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?revision=65&view=markup Code], [http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=64&r2=65 Changelog]</font>
 
 
 
== Build 66 ==
 
Gleichmal zur Dokumentation. Wenn ein Diebstahl erfolgreich war und das Opfer einen Gegenstand und/oder eine Geldbörse bei sich hatte, wandert das Geld der Geldbörse in die Geldbörse des Spielers und der Gegenstand ins Inventar. Da es sich bei den gestohlenen Gegenständen aber nicht um echte Gegenstände handelt, kann man sie nicht näher betrachten und mit ihnen interagieren. Im Spiel sieht das zur Zeit folgendermaßen aus:
 
<pre>
 
>i
 
You are carrying:
 
  a jar of liquor
 
  a PlayerPurse
 
And here is the list of valuables you have stolen:
 
 
 
Macbook (Leuchtet hell.) is about 5EUR.
 
Overall you have valuables amounting to 5EUR.
 
 
 
>x purse
 
You have 50EUR.
 
</pre>
 
  
Der entsprechende Code dazu ist:
+
''' Kommentare zwischen Build 46-68 gibt es [[Dev-Talk Archiv (PSI)|HIER]] im Archiv '''
<source lang="inform">
 
After listing contents of yourself:
 
let wholeworth be 0EUR;
 
say "And here is the list of valuables you have stolen:[paragraph break]";
 
repeat through the Table of Own Valuables begin;
 
say "[bold type][name entry][roman type] ([description entry])
 
                    is about [italic type][worth entry][roman type].";
 
now wholeworth is wholeworth + worth entry;
 
end repeat;
 
say "Overall you have valuables amounting to [wholeworth].".
 
</source>
 
Wofür kann man diese Gegenstände brauchen? Zum Eintauschen in Geld?
 
Die Sache könnte einen doppelten Zweck verfolgen, wie man im folgenden Vorschlag sieht:
 
<source lang="inform">
 
The poster is a thing.
 
The description of the poster is "[bold type]PURCHASE OF GOODS[roman type]
 
[paragraph break]Do you have Valuables? Sell it to ***GATES DEALERSHIP***.
 
We are located at Burgring near to the Burggarten."
 
 
 
Gates Dealership is north of Burg-Ring at Burggarten.
 
The description of Gates Dealership is "??? TODO ???"
 
[Das Handelsunternehmen ist dort platziert, um die Spielerin in Richtung Master-Rätsel zu locken]
 
The Dealer is a person in Gates Dealership.
 
[TODO: Dialog einbauen, bei dem man die gestohlenen Waren eintauschen kann.
 
      Im Gespräch nennt der Dealer seinen Vornamen: William Henry Bill. ]
 
 
 
 
 
Lonesome Outlaw is a scene.
 
Lonesome Outlaw begins when the grade of the player is Single_Amateur.
 
Lonesome Outlaw ends when the grade of the player is not Single_Amateur.
 
 
 
Before printing the locale description of a room (called r)
 
when a random chance of 30 in 100 succeeds
 
and r is not in PrivateTerrain
 
during Lonesome Outlaw, now the poster is in the location.
 
</source>
 
 
 
== Build 68 ==
 
[[Datei:Ueber Tag.jpg|thumb|Map: Ring & Co.]]
 
[[Datei:Unter Tag.jpg|thumb|Map: U2-Strecke]]
 
[[Datei:In der Luft.jpg|thumb|Eugenic Street (Ein Szenario im Schlössl;noch nicht vernetzt)]]
 
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?revision=68&view=markup Build 68]
 
 
 
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=66&r2=68 Diff mit 66]
 
* Einige Änderungen vorgenommen, damit nun individuelle Crowds für spezielle Zwecke erstellt werden können.
 
* Demonstration eingefügt für den Bibliotheksbereich (<code>test plagiarize</code> bringt dich direkt zum Menü mit den Bibliotheksangestellten)
 
* Das Debugging hat mich am meisten Zeit gekostet - ich hatte eine kryptische Fehlermeldung. Nach Langem herumprobieren bin ich dann endlich draufgekommen, dass die Victim-Beschreibung zu lang war (in Tabellen - oder speziell in Menü-Tabellen? - gibt es da scheinbar ein Problem). Ich habe den letzten Satz "Their label indicates that they are the property of the Library of Vienna University." entfernt und dann lief es. Habe kurz auch versucht, den text auf indexed-text zu ändern, das hab ich aber schnell wieder aufgegeben, weil ich sonst die Menu-Extension umschreiben müsste. Was lernen wir daraus? Nichts :) In manchen Fällen muss man einfach lange Debuggen, bis man draufkommt.--[[Benutzer:Andyk|Andyk]] 22:45, 15. Jun. 2009 (UTC)
 
  
 
== Build 70 ==
 
== Build 70 ==
Zeile 486: Zeile 254:
 
* Toll wäre, wenn wir das Spiel entweder server-seitig speichern könnten und es dann per Browser spielbar ist. Oder man packt das Spiel in eine selbständig ausführbare Datei, die man nur downloaden und dann spielen braucht. Andernfalls muss man halt einfach nen herkömmlichen Z-Code/Glulx-Interpreter verwenden. --[[Benutzer:Andyk|Andyk]] 00:38, 28. Jun. 2009 (UTC)
 
* Toll wäre, wenn wir das Spiel entweder server-seitig speichern könnten und es dann per Browser spielbar ist. Oder man packt das Spiel in eine selbständig ausführbare Datei, die man nur downloaden und dann spielen braucht. Andernfalls muss man halt einfach nen herkömmlichen Z-Code/Glulx-Interpreter verwenden. --[[Benutzer:Andyk|Andyk]] 00:38, 28. Jun. 2009 (UTC)
  
== Work-Sheet für den Nightly Build ==
+
== Entwicklung der "nach Sun City"-Implementierung ==
  
 
'''Thema:''' Überlegungen bzgl. Implementierung von Helgas Vorschlag:  [[Szenariosammlung_%28PSI%29#AKTUELL:_Der_Spieler_erreicht_SUN_CITY|Sun City]]
 
'''Thema:''' Überlegungen bzgl. Implementierung von Helgas Vorschlag:  [[Szenariosammlung_%28PSI%29#AKTUELL:_Der_Spieler_erreicht_SUN_CITY|Sun City]]
  
* Wir brauchen einen Platz für die Diebesbande - wird ein Versteck am Karlsplatz sein (vielleicht einfach im Resselpark), das erst "richtig" zugänglich ist, wenn die Spielerin in der Bande aufgenommen wird. (Wenn sie das noch nicht ist werden ihr alle vorher gestohlenen Wertgegenstände abgenommen)
+
* Wir brauchen einen Platz für die Diebesbande - wird ein Versteck am Karlsplatz sein (vielleicht einfach im Resselpark), das erst "richtig" zugänglich ist, wenn die Spielerin in der Bande aufgenommen wird. (Wenn sie das noch nicht ist werden ihr alle vorher gestohlenen Wertgegenstände abgenommen) '''DONE'''
* Am Umschlagplatz der Diebesbande  gibt es mehrere Leute: Gyges, Bushido und seine AggroBerlin und den Nimmerrichhter, der einem überhaupt erst dorthin führt
+
* Am Umschlagplatz der Diebesbande  gibt es mehrere Leute: Gyges, Bushido und den Nimmerrichhter, der einem überhaupt erst dorthin führt '''DONE'''
* Dialog mit Gyges einbauen. Er muss überredet werden (in V2.0 könnte man das als ein Rätsel gestalten, fürs Erste wird ein kurzer Dialog reichen)
+
* Dialog mit Gyges einbauen. Er muss überredet werden (in V2.0 könnte man das als ein Rätsel gestalten, fürs Erste wird ein kurzer Dialog reichen) '''DONE (draft)'''
* Eine Szene "kooperativer Diebstahl" und einen exemplarischen Diebstahl erzeugen, der 100% erfolgreich ist. (Userlevel: Multi_Profi)
+
* Eine Szene "kooperativer Diebstahl" und einen exemplarischen Diebstahl erzeugen, der 100% erfolgreich ist. (Userlevel: Multi_Profi) '''DONE'''
 
* Daran ankoppeln eine Szene "Gyges wird übermütig": Gyges fordert die Beute und 3 Optionen ergeben sich:
 
* Daran ankoppeln eine Szene "Gyges wird übermütig": Gyges fordert die Beute und 3 Optionen ergeben sich:
** '''Die Beute aushändigen''' (muss die Spielerin eingeben: <code>give maul to Gyges</code> oder <code>hand out maul</code>)
+
** '''Die Beute aushändigen''' (muss die Spielerin eingeben: <code>give haul to Gyges</code> oder <code>hand out haul</code>)
** Weglaufen heißt einfach '''weggehen''': Dabei wird es eine Every-turn-Rule geben: Solange Szene x läuft und Gyges nicht in der Metro ist, wird eine Meldung "Gyges follows you..." ausgegeben. Eine Tabelle wie bei starvation bietet sich an, um verschiedene "Gyges-folgt-dir"-Meldungen aussagen zu können. Du kannst überall hin laufen, doch erst in der Metro geht der Plot weiter: Wenn die Spielerin und Gyges in der Metro sind, dann gibt es dort auch eine Crowd, wo man sich verstecken kann <code>hide</code> oder <code>hide in crowd</code>. Examine Crowd verändert sich übrigens in dieser Szene so, dass es einfach eine normale Beschreibung ist. So etwas wie "Deine Seelenruhe ist ein wenig beeinträchtigt durch die Tatsache, dass dein Gaunerkollege dich verfolgt. Einzelne Leute sind jetzt nur Hindernisse - so wie Gebüsche. Oder?". Wenn die Spielerin ihm in der Metro die Beute übergibt, ist Gyges zufrieden, verschwindet und du kommt nach "Sun City" und dort steht die Gauloises-rauchende Skoraste.
+
** Weglaufen heißt <code>run away</code>: Die Spielfigur findet es am Besten, auf die nächste U-Bahn zu warten. Bis dahin, muss man Gyges irgendwie bei Laune halten. '''DONE'''
** '''Warten''' oder irgendwas "unsinniges" im Raum machen (z.B. mit Gyges versuchen zu reden oder das Inventar untersuchen) gleich im darauf folgenden Turn geschieht dann das: Gyges schnappt sich das Zeug und verschwindet Richtung Metro. Wenn die Spielerin schnell ist, kann sie Gyges noch einholen. (Wie ich die Zielorientierung von Gyges, in die Metro einzusteigen und zum Stadion zu fahren, implementiere, überleg ich mir noch... eventuell mit der "Planner"-Extension, wenn sie praktikabel ist. Ansonsten einfach mit manuellen Commands).
+
** In der Metro geht der Plot weiter: Wenn die Spielerin und Gyges in der Metro sind, hat die Spielerin 15 Züge lang Zeit, Gyges abzuhängen. '''DONE'''
* Dabei fällt mir ein: Ich muss noch blockieren, dass die Spielerin (oder NPCs) einfach die U-Bahn-Stationen durchmarschiert, anstatt mit der Metro zu fahren.
+
** Abhängen geht, indem man sich in der Crowd versteckt. <code>hide in crowd</code> oder <code>hide</code>. Examine Crowd verändert sich übrigens in dieser Szene so, dass es einfach eine normale Beschreibung ist. So etwas wie "Deine Seelenruhe ist ein wenig beeinträchtigt durch die Tatsache, dass dein Gaunerkollege dich verfolgt. Einzelne Leute sind jetzt nur Hindernisse - so wie Gebüsche. Oder?". '''DONE'''
* Mit dem Police-Man-ist es zwar ähnlich wie mit dem Gyges, aber das lass ich für die heutige Session mal. Bin froh, wenn ich das oben beschriebene schaffe.
+
** Wenn die Spielerin ihm in der Metro die Beute übergibt, ist Gyges zufrieden, verschwindet und du kommst nach "Sun City". Dort steht die Gauloises-rauchende Skoraste. '''DONE'''
 +
** Wenn die Spielerin in den 15 Zügen nichts von den beiden macht, nimmt ihm Gyges alle seine Diebesgegentände und sein ganzes Geld ab. Spielerin findet sich in Sun City wieder. '''DONE'''
 +
** '''Warten''' oder irgendwas "unsinniges" im Raum machen (z.B. mit Gyges versuchen zu reden oder das Inventar untersuchen) gleich im darauf folgenden Turn geschieht dann das: Gyges schnappt sich das Zeug und verschwindet Richtung Metro. Wenn die Spielerin schnell ist, kann sie Gyges noch einholen. (Wie ich die Zielorientierung von Gyges, in die Metro einzusteigen und zum Stadion zu fahren, implementiere, überleg ich mir noch... eventuell mit der "Planner"-Extension, wenn sie praktikabel ist. Ansonsten einfach mit manuellen Commands).  
 +
::: <font color="maroon">Mangels technischer Arbeitskräfte werde ich eine Verfolgungsjagd, wo die Spielerin Gyges verfolgt, ganz nach hinten auf die Liste schieben.--[[Benutzer:Andyk|Andyk]] 22:02, 15. Jul. 2009 (UTC)</font>
 +
* Dabei fällt mir ein: Ich muss noch blockieren, dass die Spielerin (oder NPCs) einfach die U-Bahn-Stationen durchmarschiert, anstatt mit der Metro zu fahren. '''DONE'''
 +
* Mit dem Police-Man-ist es zwar ähnlich wie mit dem Gyges, aber das lass ich für die heutige Session mal. Bin froh, wenn ich das oben beschriebene schaffe.
 +
::: <font color="maroon">Ebenfalls ganz nach hinten auf die Liste schieben.--[[Benutzer:Andyk|Andyk]] 22:02, 15. Jul. 2009 (UTC)</font>
  
 
Irgendwann heut nacht gehts los. --[[Benutzer:Andyk|Andyk]] 17:13, 30. Jun. 2009 (UTC)
 
Irgendwann heut nacht gehts los. --[[Benutzer:Andyk|Andyk]] 17:13, 30. Jun. 2009 (UTC)
Zeile 525: Zeile 299:
 
* Erste Ansätze für Gyges-Zusammenarbeit
 
* Erste Ansätze für Gyges-Zusammenarbeit
 
* Wenn man in den Resselpark geht, während man hungrig ist oder bevor man das Theft by Intoxication-Rätsel gelöst hat, wird man ausgeraubt (verliert alle durch die crowd-aktionen gestohlenen Gegenstände und alles Geld in der PlayerPurse)
 
* Wenn man in den Resselpark geht, während man hungrig ist oder bevor man das Theft by Intoxication-Rätsel gelöst hat, wird man ausgeraubt (verliert alle durch die crowd-aktionen gestohlenen Gegenstände und alles Geld in der PlayerPurse)
 +
 +
=== Build 91: Mit Gyges ins Stadion gehen ===
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?revision=91&view=markup Build 91]
 +
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=91&r2=87 Diff to 87]
 +
 +
* Es gibt eine Cooperation-Scene, die aktiviert wird, sobald man mit Gyges gemeinsam im Stadion ist (also eigentlich in der Station Stadion). Dort kommt man hin, indem man mit Gyges redet und ihn fragt, ob sie zusammenarbeiten sollen (Den Dialog könnte man eventuell verfeinern und ein bisschen Überredungskunst und witzige Wendungen einbauen, aber dafür ist mir die Muse weggelaufen).
 +
* Was zur Zeit zum Entwickeln ganz gut ist: Durch beam kann man direkt - ohne dass noch z.B. die Starvation-Aufgabe aktiviert wird - von der Toilette z.B. zu Theft by Intoxication oder zum Resselpark hüpfen. Für ein reguläres Spiel ist das natürlich problematisch (aber ich denke es ist nicht intendiert, beam ins Endgame mitreinzunehmen, oder?)
 +
* Habe außerdem jetzt verhindert, dass die Spielerin über die U2-Gleise zu den Stationen gehen kann und stattdessen die metro nehmen muss. --[[Benutzer:Andyk|Andyk]] 11:12, 2. Jul. 2009 (UTC)
 +
* Was ich jetzt noch machen muss, sind die Sachen mit dem davonlaufen und SunCity als U2-Station. mal schauen, wie das klappt.
 +
 +
=== Build 110: Hinführung zu SunCity ===
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?revision=109&view=markup Build 110]
 +
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=110&r2=108 Diff to 108]
 +
 +
Ich habe Helgas Konzept jetzt soweit implementiert, wie es mir möglich und sinnvoll erschienen ist. Den Polizisten habe ich ganz außen vor gelassen, genauso die NPC-getriggerte Verfolgungsjagd von Gyges, der sich die Beute schnappt und durch die U-Bahn abhaut (es wäre reizvoll, aber da es für den Spielverlauf nicht wichtig ist, lass ich es mal). Sehr wohl is aber implementiert, dass die Spielerin in die U-Bahn flüchtet und sich dort in der Crowd verstecken kann.
 +
 +
Also mal ganz systematisch:
 +
# Gyges und die Spielerin gehen zum Stadion (zumindest zur Station), um dort gemeinsam etwas zu stehlen, was ihnen gelingt. Der Gegenstand wandert zunächst in die Tasche der Spielerin.
 +
# Gyges verlangt nun die ganze Beute für sich und bedroht die Spielerin mit einem Messer.
 +
# Du kannst nun (I) weglaufen (du musst auf die U-Bahn warten) <code>run away</code> und <code>enter stadion metro</code> oder (II) <code>give him the haul</code>. Bei II findet sich die Spielerin unwillkürlich, während sie grübelt, in Sun City wieder (das ist ein bisschen transreal, passt aber IMHO ganz gut). Falls jemand bessere Vorschläge hat, kann er/sie es gern implementieren :P (notfalls reicht auch ein Einwand und wenn es wirklich wichtig ist, implementier ich es natürlich)<br><br>TODO: Es muss garantiert sein, dass die U-Bahn in die andere Richtung nicht kommt oder dass dort prinzipiell alles genauso vor sich gehen kann. Zur zeit hab ich es nur für die staion metro implementiert.<br><br><br>TODO: <code>run away</code> mit <code>enter stadion metro</code> gleichsetzen, sobald die U-Bahn da ist.<br><br>
 +
##<font color="#008000"> [http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?revision=111&view=markup Build 111] - [http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=110&r2=111 diff zu 110] Karlsplatz metro ist jetzt offline, sowie die Szene Cupidity beginnt. Ich denke, das sollte alles sein.
 +
## Habe die ''instead of running away''-Regel erweitert: Sie ruft jetzt "try entering stadion metro" auf, wenn die stadion metro in der location ist. [[Benutzer:H.A.L.|H.A.L.]] 07:21, 16. Jul. 2009 (UTC)</font>
 +
# Bei I hast du nun 15 Spielzüge Zeit herauszufinden, dasss du dich in der crowd verstecken kannst. <code>hide in crowd</code>. Natürlich kannst du jederzeit <code>give the haul to Gyges</code> schreiben. Entscheidest du dich innerhalb der 15 Züge (die genaue Anzahl ist der Spielerin nicht bekannt) nicht für eine der beiden Möglichkeiten, nimmmt dir Gyges alles Diebesgut und alles Geld ab, das du hast. In jedem Fall kommst du aber nach SunCity.
 +
# In SunCity angekommen, findest du derweil nur die ab jetzt defekte U-Bahn. Das verhindert, dass du zurückgehst. Hier beginnt ein neuer Abschnitt... zurück gehts erst wieder später.
 +
 +
So, das wichtigste ist gesagt denke ich. Wie schauts eigentlich mit den Szenarien im Schloss aus? Gibt es das Schloss schon? Ich habe da ein bisschen den Überblick verloren? Das ganze ist schon ein richtig großes Projekt geworden, mit ziemlich viel Patchwork-Arbeit und ungeordnetem Code (wobei ich an der Unordnung einen Teil der Schuld auf mich nehme). --[[Benutzer:Andyk|Andyk]] 00:06, 16. Jul. 2009 (UTC)
 +
 +
P.s.: Achja, im heute geschriebenen Code kann man von Wiederverwendbaren Code nicht sprechen, da sich einige Teile einfach wiederholen. Dadurch wird die Sache bei Änderungen - z.B. bei den say-Phrasen - relativ schwer wartbar... Trotzdem ich das weiß, habe ich im Moment nicht das Bedürfnis, den Code mit To-say-Phrasen zu restrukturieren. Lass mich aber gern überraschen beim Update :P
 +
 +
== Build 106: Verbesserung der Crowd-Usability ==
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?revision=87&view=markup Build 106]
 +
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=101&r2=106 Diff to 101]
 +
 +
* Der einfachste Weg, Diebstähle zu begehen ist nun:
 +
:: <pre>x crowd</pre>
 +
:Nun wird eine Liste mit Personenbeschreibungen ausgegeben, die von 1 aufwärts nummeriert sind (also nicht mehr die Victim-IDs sondern eine Nummer für jede Person in der aktuellen Menge).
 +
:Man sucht sich eine Person aus und merkt sich die Nummer, sagen wir 10, und dann gibt man ein:
 +
:: <pre>examine 10</pre> oder <pre>x 10</pre> oder <pre>observe 10</pre>, dann kommt man direkt zum Optionsmenü.
 +
::: <font color="maroon">'''Update:''' Nun auch möglich: <code>examine person 10</code> / <code>x person 10</code> / <code>observe person 10</code>--[[Benutzer:Andyk|Andyk]] 08:53, 16. Jul. 2009 (UTC)</font>
 +
Was hierbei noch zu tun ist:
 +
* Überlegen, ob man gleich mit Examine ins Menü kommen soll, oder mit einem anderen Befehl. Wäre für Vorschläge dankbar, sonst lass ich es mangels Einfälle bei examine.
 +
* Wenn keine Optionen für die ausgewählte Person zur Verfügung stehen, soll nicht das Menü kommen, sondern eine bestimmte Meldung, sowas wie "Du kannst keinen Schimmer, was du mit dieser Person tun sollst."
 +
 +
Was ich sonst noch geändert habe:
 +
* Dinge, die die Spielerin gleich nach dem Diebstahl isst, werden nun nicht mehr im Inventar angezeigt.
 +
* Die nervigen DEBUG-Meldungen beim Stehlen wurden nun endlich entfernt.
 +
 +
Demnächst geht es mit dem SunCity-Szenario weiter. --[[Benutzer:Andyk|Andyk]] 23:26, 11. Jul. 2009 (UTC)
 +
 +
== Build 108: Nimmerrichter-Dialoge und andere Bugfixes ==
 +
* Es gibt nun eine Uhr, die die Spielerin schon zu Beginn des Spiels im Inventar hat (muss noch übersetzt / Beschreibung ergänzt werden).
 +
** <font color="#008000">gut, ich hab mich mal drauf eingestellt :-)</font>
 +
* Das Poster erscheint jetzt nur noch, wenn eine Crowd anwesend ist (und wie bisher: Wenn man im Szenario Lonesome Outlaw ist. Dieses beginnt NACH dem FastFood-Szenario (sobald man satt ist) und VOR der Anwerbung durch den Nimmerrichter. Der Zweck des Posters ist, dass die Spielerin versucht, den Ort zu finden, wo die Anwerbung stattfindet: Burg-Ring at Burggarten.
 +
* Der Nimmerrichter-Anwerbungsdialog ist technisch etwas verändert worden (nichts Gravierendes)
 +
* Man wird jetzt nicht mehr von Bushido und seinen Leuten überfallen, wenn einem der Nimmerrichter zum Resselpark mitnimmt (man wird jedoch wie gewünscht überfallen, wenn man als Hungernder oder Single_Amateur zufällig in die Gegend kommt).
 +
**<font color="#008000">Ich glaube nicht, daß es einen Unterschied macht, ob man die Bushido-Aktion an der Szene oder am ''grade of player'' festmacht ([http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=107&r2=108 Build 108]), Das Problem war, daß der Spieler und Nimmerrichter zum Resselpark bewegt werden (und damit die ''after going to''-Regeln triggern), ''bevor'' der grade of player wechselt. Ich habe das mittlerweile geändert ([http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=106&r2=107 Build 107]).</font>
 +
:: <font color="maroon">Jep, hab deine Änderung bemerkt (aufgrund des Konflikts ^^). Das Problem bei Szenarien ist (so hab ichs in Erinnerung), dass Anfang/Ende immer erst beim nächsten Turn aktiviert werden. Wollte es nicht mehr testen (da ich mich an frühere Versuche erinnert hab) und deswegen hab ich es direkt am grade festgemacht. Hat es bei dir ohne Bushido-Überfall funktioniert, nachdem du <code>now the grade of the player is Multi_Amateur</code> nach oben gereiht hast?</font> --[[Benutzer:Andyk|Andyk]] 18:07, 12. Jul. 2009 (UTC)
 +
:: <font color="#008000">Tatsächlich, jetzt wo ich es nochmal überprüfe, funktioniert es nicht mehr, dabei war ich mir ziemlich sicher, daß ich das erfolgreich getestet habe. Vielleicht ist beim beamen irgendeine Variable durcheinandergekommen. Na egal, jetzt funktioniert ja alles. --[[Benutzer:H.A.L.|H.A.L.]] 08:35, 16. Jul. 2009 (UTC)</font>
 +
* Beim Survival-Szenario (also wo man den Leuten das Essen stehlen muss) erscheinen nun in der Statusleiste (a) der Sättigungsgrad (0%,25%,50%,75% inklusive einer progress bar) und (b) die verbleibenden Minuten, bis man verhungert.
 +
 +
Bestehende Probleme:
 +
* Es gibt immer noch Probleme bei den Dialogen:
 +
** Es wird unter "him/her" nicht der aktuelle Gesprächspartner verstanden (sehe im Moment nicht, wie man das ändern könnte bzw. warum das nicht von den Conversation Extensions als default gesetzt wurde)
 +
***<font color="#008000">Ich habe auch grad vergeblich danach gesucht. Aber anscheinend geht es, wenn man die Spielerin dazu bringt, "look" einzugeben ([[http://philo.at/wiki/index.php/Datei:Set-him-pronoun.png]]. Ich glaube, das hängt damit zusammen, welche Person zuletzt genannt wurde. Ich werde mal im Semantic Wiki versuchen, da etwas zu machen.
 +
***Edit: Ich habe fürs erste die "you look around..."-Stelle aus der [[IF:NimmerrichterGreeting-node]] in die [[IF:Nimmerrichter|initial appearance]] verschoben, um die Spieler zum "look" zu animieren. Dummerweise bringt das jetzt Ärger mit Gesprächsverlauf und Suggestions mit sich[[http://philo.at/wiki/index.php/Datei:Repronouning-by-looking.png]]. Ich hatte gehofft, das "him"-pronoun ändern zu können, indem ich Nimmerrichters Namen über eine Variable erwähne[[http://philo.at/wiki/index.php/Datei:Mentioning-in-greeting-response.png]], analog zu Kap. 17.22 im Tutorial, aber das scheint in diesem Fall nicht zu greifen. :-(</font>
 +
::::<span style='color:#008'>Ich habe das gleiche Problem in der ElitistCommunism-Szene: Wenn man von WarMusic kommt, bezieht sich "him" im Gespräch mit dem "Watchman" immer noch auf den (nicht anwesenden) "Doorman". Die Aktualisierung der Pronomen erfolgt wie hier schon bemerkt wurde im Rahmen der <code>Printing a locale paragraph about</code>-Activity (durch die <code>set pronouns from items in room descriptions rule</code>) beim Ausgeben einer Raumbeschreibung, andererseits aber auch, nachdem der Gesprächspartner direkt adressiert wurde ("<code>ask watchman about ...</code>"). Allerdings weiß ich noch nicht, wie ich diese Informationen nutzen kann. Ideen?</span> --[[Benutzer:Thai|Thai]] 14:11, 27. Aug. 2009 (UTC)
 +
::::<span style='color:#008'>Scheint, als hätte ich eine Lösung gefunden: Mit <tt>'''set pronouns from the watchman'''</tt> wird "him" auf den "watchman" gesetzt...</span> --[[Benutzer:Thai|Thai]] 08:28, 7. Sep. 2009 (UTC)
 +
** Nodes haben keine Gruß/Abschiedsbotschaft, sondern nur Personen (zumindest hat es nicht geklappt, als ich den Nodes Gruß-Botschaften zugewiesen habe --> siehe z.B. [[IF:NimmerrichterIntroduction-node|diesen Node]].--[[Benutzer:Andyk|Andyk]] 15:30, 12. Jul. 2009 (UTC)
 +
***<font color="#008000">Irgendwie ist das auch naheliegend, da ein Node ja kein Gespräch repräsentiert, sondern einen Gesprächsabschnitt. Es ist wohl angedacht, daß man erst eine Person mit der personenspezifischen Grußbotschaft begrüßt und ''dann'' in den ersten Node einsteigt. Beginn und Ende eines Nodes müßten eigentlich mit node-introduction und node-termination abgedeckt sein - ich weiß jetzt auch nicht, warum die auf closed nodes beschränkt sind. - Ich glaube, die Frage läuft darauf hinaus, was als Beenden eines Gesprächs gilt - Wann wird bei einem offenen Node eine implicit farewell-response getriggert? - Ansonsten scheint mir, wenn man die farewell response vom Node abhängig machen will, kommt man nicht umhin, eine entsprechende if-else-Klausel ''in die farewell-response der Person'' zu integrieren. Aber bei den Gesprächsverläufen blicke ich jetzt selber noch nicht durch. --[[Benutzer:H.A.L.|H.A.L.]] 17:38, 12. Jul. 2009 (UTC)</font>
 +
 +
<font color="#008000">Übrigens stelle ich gerade fest, daß gewisse Diskussionen halb auf die Geek-Talk-Seite gehören und halb zum Endspurt, das ist auch ein kleiner design flaw in dem Projekt. :-) --[[Benutzer:H.A.L.|H.A.L.]] 17:45, 12. Jul. 2009 (UTC)</font>
 +
 +
== Das Gespräch mit Skoraste ==
 +
=== Build 113: Die ersten drei Zeilen ===
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?view=markup&pathrev=113 Build 113]
 +
 +
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=112&r2=113 Diff mit 112]
 +
 +
<pre>S: All hail, stranger! You must be here to have a look at the free room in our nice castle. What is your name?
 +
 +
G: Hello. My name is (name of the player).
 +
 +
S: I am Skoraste. Should I show you the room immediately?</pre>
 +
 +
* Ich habe mal begonnen, die ersten drei Zeilen des Gesprächs zu implementieren. Das klingt zwar wenig, aber dafür ist die Sache mit Namen/Geschlecht eingeben schon dabei.
 +
 +
* Außerdem: Index map wieder etwas schöner gestaltet und einige kleine Bugs gefixed
 +
 +
* Die Räume <code>garden</code> und <code>palace</code> wurden erstellt, sowie <code>SunCity</code> in <code>SunCityStation</code> umbenannt.--[[Benutzer:Andyk|Andyk]] 16:00, 19. Jul. 2009 (UTC)
 +
 +
=== Build 114: Die nächsten vier Zeilen ===
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?view=markup&pathrev=114 Build 114]
 +
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=113&r2=114 Diff mit 113]
 +
 +
<pre>G: You have a free room?
 +
 +
S: Yes, it is really much sought after, because it does not cost anything. Moreover, it does not happen very often that one of our rooms is free. If you want I will lead you immediately to our castle owner, so that he discusses everything with you what is important for your moving in!
 +
 +
G: Yes, with pleasure.
 +
 +
Skoraste leads you to the entrance of the castle. You continue walking for a couple of minutes on the gravel way straight ahead (steps crunch), until you reach the input gate of the castle. The castle is built into Greek to classical style. The marmoreal columns and halls are mighty, but cold (steps resound). You enter the vestibule. From here you can already see into the main part of the castle from which countless stairs lead up in different directions. Skoraste leads you up by one of the stairs, however, this writhes in a strange way and you soon los your orientation.</pre>
 +
 +
* Die Sache mit dem Gender wurde verbessert. Es wird zunächst RANDOM ein Geschlecht angenommen. Skoraste fragt dann, wie selbstverständlich, ob sie eine Frau/ein Mann ist. Wenn sie sich irrt, schiebt sie die Schuld auf ihre Sehkraft in die Schuhe, die sie manchmal in Stich lässt (die toggle-gender-Phrase switched dann auf das jeweils andere Geschlecht).
 +
** <font color="#008000">Schön :-) Aber nicht ganz richtig, so viel ich weiß, gibt es in Inform ''drei'' Geschlechter. Ansonsten find ichs schade, daß das mit dem ''restricted understanding'' weggefallen ist. --[[Benutzer:H.A.L.|H.A.L.]] 08:32, 22. Jul. 2009 (UTC)</font>
 +
:: <font color="maroon">Das fand ich selbst auch ein bisschen schade, obwohl es ja nicht ganz weg ist. Dafür fehlt die Phrase "zu welchem Geschlecht würdest du dich eher zugehörig fühlen?", was ich etwas schade finde. Aber Code ist da, um geändert zu werden! --[[Benutzer:Andyk|Andyk]] 13:14, 22. Jul. 2009 (UTC)</font>
 +
 +
* Irgendwie werden die Suggestions immer dort angezeigt, wo man sie nicht haben will (zu Gesprächsbeginn, obwohl auto-suggesting ausgestellt ist), aber niemals, wenn man sie braucht (z.B. wo yes/no-Entscheidung aussteht). Wo es mir gefehlt hat, hab ich es händisch mit <code>try listing suggested topics</code> hinzugefügt.
 +
 +
* Wenn man sich das Zimmer nicht ansehen will (was bei der Textvorlage nicht vorgesehen ist), dann sagt Skoraste, dass sie und der Schlosseigentümer nur GUTE Absichten haben und dass er es sich nochmal überlegen soll. Dann wird das Gespräch beendet. Da die Spielerin aber sonst nirgends hin kann (sobald man ins Schloss gehen will, spricht man unwillkürlich Skoraste an - TODO: hier wäre es besser, wenn man von Skoraste angesprochen wird - und sobald man zurück in die Wiener Innenstadt will, geht das nicht, weil die U-Bahn ausgefallen ist - soviel zum freien Willen), wird sie sicher irgendwann YES sagen und mit Skoraste ins Schloss gehen.
 +
 +
Da geht es dann das nächste Mal weiter. Schrecklich, wie lange das dauert im Vergleich zum Formulieren der Ideen, die einem vorschweben. --[[Benutzer:Andyk|Andyk]] 16:52, 20. Jul. 2009 (UTC)
 +
 +
=== Build 118: Beginn des Gesprächs mit Notalp ===
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?view=markup&pathrev=118 Build 118]
 +
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=114&r2=118 Diff mit 114]
 +
 +
* Alles, was von dem Schloss-Intro ins Englische übersetzt wurde, ist jetzt implementiert. Dies umfasst den gesamten Dialog mit Skoraste. Danach kommt Notalp zum Zug... doch wenn ich mir das recht ansehe, ist es ein Gespräch zwischen Skoraste, Notalp und der Spielerin (wobei Skoraste mehr redet als Notalp). Ich werd das demnächst in Deutsch implementieren. Wer sich dazu berufen fühlt, kann die englische Übersetzung im IF-WIKi bearbeiten.--[[Benutzer:Andyk|Andyk]] 22:35, 22. Jul. 2009 (UTC)
 +
 +
=== Build 119: Castle-Intro fertig implementiert ===
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?view=markup&pathrev=119 Build 119]
 +
 +
[http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=118&r2=119 Diff mit 118]
 +
 +
* Alles, was im Text steht, ist implementiert (und ein paar Kleinigkeiten darßber hinaus)
 +
* Mit der Magie des Schlosses bin ich unzufrieden. Jetzt - da wir den magischen Ring bei Gyges elliminiert haben - sieht es fast so aus, als ob unsere Interpretation die ist, dass die Gyges-Geschichte weniger magisch und rationaler ist als die platonischen Antworten darauf. Das würde ich so nicht unterschreiben, denn für mich sind wenn dann <i>beide</i> fingierte Situationen.
 +
* [[IF:FindMyTask-node|Der Node]] müsste noch übersetzt werden, falls jemand die Motivation hat.--[[Benutzer:Andyk|Andyk]] 13:45, 23. Jul. 2009 (UTC)
 +
 +
== Build 116 ==
 +
 +
--[[Benutzer:Thai|Thai]] 21:59, 21. Jul. 2009 (UTC)
 +
 +
*beim Update aus dem wiki war ich diesmal längere Zeit mit Fehlersuche beschäftigt, deshalb bitte auf die (Code-)Interpunktion bei den Dialogen achten: Punkte nur ganz am Schluss bei jeder Response!
 +
*wie ihr richtig bemerkt habt, machen Greeting-/Farewell-Responses für ConvNodes keinen Sinn, ich habe also das Formular angepasst
 +
*außerdem gibt es jetzt im Formular für Dinge ein Feld zur Eingabe selbst definierter Kinds - damit wäre diese Beschränkung auch aufgehoben (Achtung: Kinds müssen vor den zugehörigen Objekten definiert werden - am besten also im entsprechenden Abschnitt in Volume 1)
 +
*die ersten Schritte bei der WarMusic-Implementierung sind gemacht...
 +
 +
== Build 122 ==
 +
 +
--[[Benutzer:Thai|Thai]] 23:54, 23. Jul. 2009 (UTC)
 +
 +
Changelog:
 +
*die Rohestfassung von WarMusic (basierend auf Version 2) ist fertig
 +
*Anpassungen auf der Weltenbaustelle: Fehler bei der Todo-Anzeige behoben
 +
**todo: node-termination ist derzeit nicht korrekt implementiert (node-termination rules sind an conditions geknüpft - erstens muss die condition angegeben werden können, zweitens müssen mehrere node-terminations möglich sein)
 +
 +
== Build 131 ==
 +
 +
--[[Benutzer:Thai|Thai]] 10:06, 27. Jul. 2009 (UTC)
 +
 +
Changelog:
 +
*WarMusic verbessert: <code>listen to</code> sollte jetzt funktionieren, <code>pass</code> wurde implementiert, man kann den Konzertsaal vor Konzertbeginn verlassen (beim ersten Versuch gibt es eine Warnmeldung), die Tür ist dann allerdings verschlossen und man verpasst das Konzert
 +
*'''suggestions''': durch Setzen von <code>suggest-on-greeting</code> auf <code>false</code> sollten suggestions jetzt nur mehr für auto-suggesting closed convnodes angezeigt werden
 +
*@andyk: habe unsere Diskussion über das Triggern impliziter goodbyes aus dem Todo auf die [[Diskussion:{{PAGENAME}}|Diskussionsseite]] verschoben
 +
 +
== yes-no-response ==
 +
 +
Ich habe gerade in Eugenics2 Antworten für ja und nein eingetragen ([[IF:Official-solution-node]], [[IF:Official-leave-sol-node]] und [[IF:Official-thank-sol-node]]). Dabei habe ich gesehen, daß es zwar ein kombiniertes Formularfeld gibt für yes-no-Antworten, aber keine, mit denen man für yes eine andere Antwort eintragen kann als für no. Ich habe meine Antworten erstmal in den additional code geschrieben. Ist das so in Ordnung? --[[Benutzer:H.A.L.|H.A.L.]] 08:28, 31. Jul. 2009 (UTC)
 +
: Hm, warum wählst du nicht z.B. when <code>saying</code> aus und schreibst in das Formularfeld <code>yes</code> oder <code>no</code> rein? Und das kombinierte Formularfeld kenn ich gar nicht. Wie komm ich zu dem? --[[Benutzer:Andyk|Andyk]] 15:06, 31. Jul. 2009 (UTC) Update: Ah, ich sehe schon. Bei den default-Responses gibt es <code>yes-no</code>.
 +
::Ah , die "saying"-Option kannte wiederum ich nicht. - Yes-no ist eine der Optionen bei den Default Responses. --[[Benutzer:H.A.L.|H.A.L.]] 08:01, 1. Aug. 2009 (UTC)
 +
 +
== Build 134 ==
 +
 +
* [[ChangeLog_(PSI)#Build 134|Inhaltliche Änderungen]]
 +
* [http://phaidon.philo.at/viewvc/Probegalopp?view=rev&revision=134 Source-Code]
 +
* [http://phaidon.philo.at/viewvc/Probegalopp/PSIv0.2.inform/Source/story.ni?r1=132&r2=134 Diff zu 132]
 +
 +
Ich hab mal die ersten Ansätze zu einem verwendbaren Skein-File gemacht. Ein paar Eigenschaften von diesem Skein-File:
 +
* Nicht perfekt (der Variantenreichtum ist noch sehr begrenzt, da müsste man mehr Zeit investieren)
 +
* Nicht vollständig (Testweise hab ich Bäume für Theft-By-Intoxication und einen noch nicht aufgeräumten Baum für das SunCity-Intro)
 +
 +
== Build 140 ==
 +
 +
--[[Benutzer:Thai|Thai]] 18:52, 30. Aug. 2009 (UTC)
 +
 +
ChangeLog:
 +
* ich hab das wiki-Interface eben noch mal restrukturiert/simplifiziert - hoffe, dass das keine gröberen Ungereimtheiten im Code verursacht...
 +
 +
 +
== Build 149 ==
 +
 +
--[[Benutzer:Andyk|Andyk]] 23:12, 3. Sep. 2009 (UTC)
 +
 +
Habe unser Projekt in zwei Teile geteilt.
 +
* Teil 1 (Crowd,Theft by Intoxication,...) findet sich in [http://phaidon.philo.at/viewvc/Probegalopp/RePublic-Crowd.inform/ RePublic-Crowd.inform]
 +
* Teil 2 (SunCity & Szenarien) findet sich in [http://phaidon.philo.at/viewvc/Probegalopp/RePublic.inform/ RePublic.inform]
 +
 +
Habe den Code der beiden Versionen entsprechend angepasst - im Wiki müsste man es noch umstellen.
 +
Den erwünschten Effekt, dass wir nun Z8 verwenden können, hat es leider nicht gebracht.
 +
 +
== Build 150 ==
 +
 +
--[[Benutzer:H.A.L.|H.A.L.]] 09:48, 6. Sep. 2009 (UTC)
 +
 +
* [http://phaidon.philo.at/viewvc/Probegalopp/RePublic.inform/Source/story.ni?limit_changes=0&view=markup&pathrev=150 story.ni]
 +
* [http://phaidon.philo.at/viewvc/Probegalopp/RePublic.inform/Source/story.ni?r1=149&r2=150 diff]
 +
 +
* Ich bin den Code in seinen allgemeinen Teilen durchgegangen und habe alles, was nur für den ersten Teil wichtig ist, auskommentiert.
 +
* Hat jetzt bei mir als z8 kompiliert.
 +
* Unter anderem habe ich die recht umfangreiche Approaches-Erweiterung gestrichen, die nur für die elaborierte Topographie am Ring von Bedeutung war.
 +
** Inhaltliche Nebenbemerkung: Was die IF so umfangreich gemacht hat, war nicht zuletzt, daß wir sowohl mit einem komplexen topographischen Szenario gearbeitet haben als auch mit komplexen Dialogszenarien. Das liegt wohl daran, daß unser Projekt so heterogen geworden ist. In der Praxis findet man kaum das eine ''und'' das andere in einem Spiel.
 +
* Ich habe versucht, alle diese Änderungen zu markieren (und vor allem auch alle Zeilen, die ich stehengelassen habe, weil ich nicht sicher bin, ob wir sie brauchen). Die Kommentare habe ich mit dem Wort ORPHAN markiert. Obwohl ich nicht weiß, wieso, weil dafür gibts in Subversion ja Chatlogs.
 +
::<span style="color:#008">Ich habe "running away" und "following" ins Kapitel "warmusic" verschoben - ist vermutlich doch übersichtlicher so...</span> --[[Benutzer:Thai|Thai]] 08:17, 7. Sep. 2009 (UTC)
 +
* Wir haben einen Haufen Code für die ''beaming''-Funktion, die wir in der Endfassung vermutlich nicht brauchen werden. - Oder ist sie notwendig für den Übergang zwischen den Szenarien? Die gängige Methode für so etwas ist mit ''scenes'', vielleicht können wir die Sache damit eleganter lösen. Dann könnten wir möglicherweise auch die menus''-Extension einsparen.
 +
::<span style="color:#008">hab beaming (und das perfomance-Auswahlmenü bei "warmusic" umgeschrieben, die menus-Extensions ist jetzt draußen</span> --[[Benutzer:Thai|Thai]] 08:17, 7. Sep. 2009 (UTC)
 +
* Außerdem haben wir eine umfangreiche TimeofDay-Funktion, nur damit die Spielerin einmal darauf wartet, daß die Tische fertig werden. Das ließe sich vielleicht auch mit weniger Aufwand machen.
 +
* Ich hatte Probleme mit der Property proper-named / improper-named, mußte eigens im Code eintragen, daß diese Property einem Raum zukommt (Zeile 269, in den ad-hoc-changes). Könnte das mit dem überarbeiteten Wiki-Interface zu tun haben?
 +
::<span style="color:#008">Hab festgestellt, dass es die Zeile auch in der Approaches-extension gibt - und ich hatte mich schon gewundert, warum proper-named/improper-named für Räume in der Documentation nicht erwähnt wird... Falls wir "You can go..." nicht mehr verwenden wollen, wird das aber auch überflüssig. </span> --[[Benutzer:Thai|Thai]] 08:17, 7. Sep. 2009 (UTC)
 +
 +
== Build 153 - Z-Code Limits ==
 +
 +
Bei mir benötigt Build 153 wieder Glulx, z8 hat Probleme mit der Variable MEMORY_HEAP_SIZE:
 +
 +
<pre>
 +
Inform 7 build 5Z71 has started.
 +
I've now read your source text, which is 19903 words long.
 +
++ 0% (Lexical analysis)
 +
++ 5% (Semantic analysis)
 +
I've also read Standard Rules by Graham Nelson, which is 38883 words long.
 +
I've also read Menus by Emily Short, which is 2033 words long.
 +
I've also read Basic Screen Effects by Emily Short, which is 2195 words long.
 +
I've also read Conversation Package by Eric Eve, which is 2355 words long.
 +
I've also read Conversation Nodes by Eric Eve, which is 5673 words long.
 +
I've also read Conversation Suggestions by Eric Eve, which is 2828 words long.
 +
I've also read Conversation Responses by Eric Eve, which is 1806 words long.
 +
I've also read Conversational Defaults by Eric Eve, which is 2255 words long.
 +
I've also read Plurality by Emily Short, which is 2209 words long.
 +
I've also read Conversation Framework by Eric Eve, which is 4387 words long.
 +
I've also read Epistemology by Eric Eve, which is 1479 words long.
 +
++ 15% (Drawing inferences)
 +
++ 20% (Binding rulebooks)
 +
++ 23% (Binding rulebooks)
 +
++ 26% (Binding rulebooks)
 +
++ 29% (Binding rulebooks)
 +
++ 32% (Binding rulebooks)
 +
++ 35% (Binding rulebooks)
 +
++ 38% (Binding rulebooks)
 +
++ 41% (Generating code)
 +
++ 44% (Generating code)
 +
++ 47% (Generating code)
 +
++ 50% (Generating code)
 +
++ 53% (Generating code)
 +
++ 56% (Generating code)
 +
++ 59% (Generating code)
 +
++ 62% (Generating code)
 +
++ 65% (Generating code)
 +
++ 68% (Generating code)
 +
++ 71% (Generating code)
 +
++ 74% (Generating code)
 +
++ 77% (Generating code)
 +
++ 80% (Generating code)
 +
++ 83% (Generating code)
 +
++ 86% (Generating code)
 +
++ 89% (Generating code)
 +
++ 92% (Generating code)
 +
++ 95% (Generating code)
 +
++ 98% (Generating code)
 +
 +
  The 19903-word source text has successfully been translated into an
 +
    intermediate description which can be run through Inform 6 to complete
 +
    compilation. There were 22 rooms and 95 things.
 +
Inform 7 has finished.
 +
Inform 6.31N (29th March 2009)
 +
::###########################################################################################################################################################################################################################################################################################################################################################################################################################
 +
File "auto.inf"; Line 41200 # Error:  An array must have between 1 and 32767 entries
 +
> Array Blk_Heap -> MEMORY_HEAP_SIZE + 16;
 +
#####################################
 +
Compiled with 1 error and 1591 suppressed warnings (no output)
 +
 +
Compiler finished with code 1
 +
</pre>
 +
 +
== zu Build 162 ==
 +
 +
Habe noch einige Descriptions hinzugefügt. Werden morgen noch die restlichen Beschreibungen für SunCityTop einfügen.
 +
 +
Was noch aufgefallen ist:
 +
 +
* Die Site [[IF:Unobstrusive_corridor]] müsste unbenannt werden da es unobtrusive heißt. Hab mich jetzt aber nicht getraut sie zu löschen und neu anzulegen, da mir die Abhängigkeiten nicht klar sind.
 +
* Bei [[IF:The_baker]] ist mir nicht klar welches Gespräch noch eingefügt werden soll. Laut Szenarioplan sollte eigentlich schon alles drin sein?
 +
--[[Benutzer:Mape|mape]] 21:50, 27. Sep. 2009 (UTC)

Aktuelle Version vom 23. November 2009, 10:37 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>

Aktuelles

inhaltliche Änderungen und Weiterentwicklungen (die getestet werden sollen) bitte zukünftig im ChangeLog dokumentieren und diese Seite den technischen Details vorbehalten --Thai 20:16, 28. Jul. 2009 (UTC)

  • bin am code -H.A.L. 09:16, 23. Nov. 2009 (UTC)
  • fürs erste wieder freigegeben -H.A.L. 10:37, 23. Nov. 2009 (UTC)

Arbeitsteilung

Thai
  • regelmäßige Aktualisierung von Volume 3+4
H.A.L.
  • einarmiger Soldat:
    • Einleitung
    • yes-no-Antworten
Andyk

Geplante Tätigkeiten (geordnet nach Priorität):

  1. Bug: Menübedienung bei x person 1
  2. Testen ob das need-item geht
  3. evt. an den Wahrscheinlichkeiten und Crowd-Zahlen herumschrauben
  4. evt. Help-Menü
  5. evt. Umwandeln von Gegenständen in Geld (nice-to-have; notfalls nur ein geschlossenes Tauschwarengeschäft vorsehen, damit die Spielerin zum Szenario gelockt wird; kann man aber auch gänzlich weglassen)

Die großen nicht-nur-technischen Vorhaben finden sich hier.

who else?
  • ...

Fehlende Implementierungen

Hab mir gerade angeschaut, welche Main-Features noch fehlen, damit man von einer halbwegs reichhaltigen Geschichte im Schloss sprechen kann. Fehler bitte korrigieren und Arbeit aufteilen: --Andyk 18:33, 18. Jul. 2009 (UTC)

Feature Beschreibung Status Wer machts?
Gespräch mit Skoraste
  • Das ist das Intro vom dritten Level (1.Hungriger Bettler und Amateurdieb, 2. Meisterdieb), nachdem man Gyges mehr oder weniger erfolgreich hinter sich gebracht hat.
  • Für v1.0 kann man das so lassen, würd ich sagen.
100% Andyk
Szenario: Tische
100% Andyk
Szenario: Einarmiger Soldat
  • H.A.L. hat den Dialog so gut wie fertig beschrieben. Auch die Einbettung in ein raum-zeitliches Szenario ist geschehen.
100% H.A.L
Szenario: Kreativer Ausdruck
  • Liegt in zwei Versionen vor
  • Entscheidung für eine Version oder eine Fusionierung ist ausständig - UPDATE: hab mich erstmal an version 2 orientiert, mal sehen, was man dann aus version 1 noch übernehmen kann...
  • Die Räumliche Architektur ist grundsätzlich vorhanden
  • Entscheidung auf Version 2 gefallen. Version 1 und 2 zu verheiraten macht so keinen Sinn, da sie zu unterschiedlich sind. Werde an den Dialogen weiterbasteln. --mape 18:00, 28. Jul. 2009 (UTC)
80% Thai
Szenario: Frauen- und Eigentumsteilung (DE)
  • Ein paar wenige Räume gibt es bereits
  • Vielleicht sollte man den Kommentar von Jakob aufgreifen und in den Dialog mit hineinnehmen falls das noch möglich ist, ansonsten nicht.
  • was es an Dialog bisher gibt ist (noch nicht ganz fehlerfrei) implementiert.
80% Thai
Szenario: Qualitätsmanagement bei Wächtern
  • Die Textbasis ist selbst (noch) ein Fragment
  • Entweder es schreibt noch jemand weiter, oder wir finden einen Weg, das Fragment zu implementieren oder es fehlt beim Release des Spiels (zumindest bei V1.0)
  • UPDATE: Für v1.0 ist dieses Szenario gestrichen.--Andyk 11:53, 24. Jul. 2009 (UTC)
-50% ???
Schlussgespräch mit Skoraste
  • Hier kann man noch ein bisschen Aufwand treiben und die Spielausgänge etwas interaktiver als durch ein Gespräch enden lassen - zumindest möchte ich das bei Option 2 machen. UPDATE: Ein wenig interaktives ist dabei: Wenn die Spielerin Option 2 wählt, findet sie sich in der U-Bahn wieder. Nach einem Spielzug muss sie im Stadion aussteigen (Endstation). Wenn sie dann etwas tun möchte, sieht sie, wie Bushido einem kleinen Kind das Armband stehlen will. 100 Punkte. ENDE --Andyk 11:50, 24. Jul. 2009 (UTC)
100% Andyk

Build 33

Habe die dynamische Veränderung der Tabellengröße nun vermieden und beginne einfach mit einer großen Tabelle die ich bei jeder Mengenänderung lösche und neu auffülle. Dynamisch die Größe von Tabellen zu ändern ist in Inform mit viel Berechnungaufwand verbunden. Jetzt kommt man mit dem klassisch reservierten Speicherbereich (von Z5 ab Build 41: Z8) aus.

Als nächstes werde ich die Sicht von Gyges auf die Tabelle einschränken, je nachdem, welche Fähigkeit er hat. Die Fähigkeit hängt von der Punktezahl (also von bereits erfolgreichen Diebstahl-Aktionen,etc.) ab. (Ansatz kann man bereits durch die Table of Abilities sehen oder wenn man den Text von x crowd genauer anschaut; dort findet sich auch ein God-Mode, vielleicht kann an irgendwo ein EasterEgg einbauen, wo dieser aktiviert wird. Wennn man fleißig ist, kann man aber auch 999 Punkte schaffen ^^). Bugs bitte melden oder gleich korrigieren - jetzt weiß ich ja, dass ich mit Updates rechnen kann.

Also doch der Ring :-) - Ich hab mal eine kleine Vorlage fürs Generieren von Personen reingestellt, sind die Parameter da so richtig?Die Ring-Option als streng geheimes undokumentiertes feature, genau ^^. --Andyk 14:38, 29. Mai 2009 (UTC)

Was dann kommt, ist wahrscheinlich ein Menübasierter Ansatz, wo man basierend auf der beobachtenden Menge versucht, sich auf ein bestimmtes "Opfer" zu konzentrieren und bestimmte Tätigkeiten versuchen kann (Betteln, Rucksack aufschneiden, Ablenkungsmanöver, Drängen und Geldbörse schnappen, ...). Interessant werden noch die gestohlenen Gegenstände selbst werden, da sie zu Spielbeginn nicht erstellt sind und nur in Form von Beschreibungen in den Tabellen enthalten sind. Das heißt, ich muss sie dynamisch erstellen. Rechenaufwand wird wenig dahinter stecken, da man ja immer nur ein "Opfer" bestiehlt, bedroht, anbettelt, etc. Aber Dynamic Object benötigt GLULX und ich weiß nicht, ob Parchment das unterstützt. --Andyk 23:13, 28. Mai 2009 (UTC)

Also, ich hab mich eben an einer originelleren Erfolgsmeldung versucht, da könnte es ein Problem geben: Wenn die Rückmeldung beschreibt, was geschieht, müßte die Meldung unterschiedlich sein, je nachdem, ob ich den Rucksack aufschneide oder nach der Börse greife. Die Meldungen müßten also weniger von der Person abhängen als von der Tätigkeit - bzw. überhaupt dynamisch generiert werden. --H.A.L. 12:05, 29. Mai 2009 (UTC)
Ich habe befürchtet, dass so etwas passieren wird, da die Implementierung noch nicht fertig ist und es schwer ist konkrete Anweisungen zu geben, wenn der Diebstahl-Mechanismus noch nicht feststeht. Ich hoffe, ich kann bald eine Demonstration liefern. Die allgemeine Frage ist, ob wir mehrere Tätigkeiten zulassen, oder ob es nur eine Tätigkeit gibt "Diebstahl". Wenn es mehrere Tätigkeiten gibt, dann brauchen wir pro Tätigkeit zwei Rückmeldungen (Erfolg und Nicht-Erfolg), was leicht komplex werden kann, wenn man die Rückmeldung in Bezug auf die konkreten Personenbeschreibungen formuliert. Drei Möglichkeiten, die mir unmittelbar einfallen:
  • Vielleicht, da der Schwerpunkt der Story nicht nur im Diebstahl liegt, können wir uns mit einer Tätigkeit zufrieden geben, dafür die Rückmeldungen konkret zur Personenbeschreibung verfassen. (Dann müsste man die Formulierungen deiner Vorlage entsprechend machen).
  • Oder man führt noch ein paar "Opfer"-Typen (also nicht nur ShyVictim, AggressiveVictim, ...) ein und bindet die Rückmeldungen an den Typen UND der konkreten Tätigkeit. In diesem Fall würde man eine Tabelle mit den Spalten (VictimType, Tätigkeitstyp, Erfolgsmeldung, Misserfolgsmeldung) haben und eine Tabelle mit den konkreten Personenbeschreibungen. Hier verliert man aber ein bisschen den Fun-Faktor, weil man bei der Rückmeldung nicht mit den inhaltlichen Personenbeschreibungen spielen kann, sondern seine Formulierung auf abstrakte Opfer-Typen beziehen muss.
  • Die inhaltlich aufwändigste Methode ist, pro mögliche Tätigkeit, die man auf die konkrete Person anwenden kann, die Rückmeldungen zu formulieren. Dazu müsste man eine Personen-Identifiaktionsnummer einführen. Das bedeutet, man hat drei Tabellen:
Person_ID - Personen_Beschreibung
und dann:
Person_ID - Tätigkeitstyp - Erfolgsmeldung - Misserfolgsmeldung
und eventuell die Tabelle, unter welchen Umständen eine Tätigkeit ausgeführt werden kann:
Tätigkeitstyp - Fähigkeit (von Gyges) - benötigt_Gegenstand_im_Inventar
Je nachdem, wie viele verschiedene Tätigkeiten man für seine konkrete Person vorsehen will, muss man auch die Erfolgs- und Misserfolgsmeldungen formulieren. (Es sollte technisch übrigens möglich sein, bestimmte Tätigkeiten für alle Opfertypen zuzulassen, dann kann man die Personen-ID freilassen und muss für diese nur allgemeine Erfolgs- und Misserfolgsmeldungen schreiben.)
  • Als 4. Option könnten die Rückmeldungen überhaupt in Bezug auf den Tätigkeitstyp formuliert werden, wobei man auch hier den Fun-Faktor verlieren würde, dass sich die Rückmeldungen nicht auf die konkrete Personenbeschreibung beziehen.

Mir gefällt die dritte (also die inhaltlich aufwändigste) Alternative am Besten, auch wenn dadurch die Tabelle ziemlich groß wird (aber reiner Text ist technisch normalerweise kein Problem). Würde die Sache gerne so abändern, wenn ihr einverstanden seid? (außer es fällt jemanden noch etwas ein, wie man es noch flexibler haben könnte...). Die Situation ist im Moment etwas blöd, da ja einige von uns schon die Aufgabe haben, bestimmte Beschreibungen für die Diebstähle zu formulieren. Werde mich bemühen, meinen Vorschlag baldigst zu implementieren um zu sehen, was für mich möglich bzw. zu zeitaufwändig ist. --Andyk 14:38, 29. Mai 2009 (UTC)

Build 43

Die Sicht von Gyges auf die Tabelle ist nun eingeschränkt und der examine crowd-Befehl von Debug-Meldungen befreit und verschönert. Ein paar Bugs zwischen den beiden Builds sind auch behoben (eher ein Work-Around bei der Endlosschleife, wenn es zu wenig Beschreibungen gibt; für einen soliden Code muss am Auswahlverfahren und der Zuordnung der Personenbeschreibung zu den Opfertypen noch etwas geändert werden.) Die Tabellen sind nun entsprechend Option 3 gestaltet. Ich werde eventuell noch eine Seite machen, wo man die Beschreibungen direkt eintragen kann, wenn ich 100% sicher bin, dass die dynamische Erstellung der Gegenstände wie gewünscht funktioniert. (Es wäre schön ca. 50 - 70 Personenbeschreibungen zu haben. Pro Person mindestens eine Tätigkeit und dann pro Tätigkeit 2 Rückmeldungen.) Ich habe auch begonnen, den Menübasierten Ansatz zu implementieren. Hilfreich war mir dabei auch der Extension-Code Menus von Emily-Short.

In nächster Folge werde ich die Menüeinträge dynamisch erstellen, sobald die beobachtenden Individuen der Menge feststehen. Genauso wird das für die Tätigkeits-Einträge gehen. Es ist wieder ein God-Mode vorgesehen (wobei die Freischaltung noch nicht klar ist), wo man explizit die Erfolgs-Wahrscheinlichkeit sieht, die eine bestimmte Tätigkeit (z.B. Rücksack aufschneiden) für eine bestimmte Person hat.

Wenn das funktioniert, geht es an das Herzaubern der Objekte, damit sie bei Erfolgreichem Diebstahl / Betteln ins Inventar von Gyges gelangen. Wenn das nicht geht, wird das Standard-Inventar dran glauben müssen, was ich nicht hoffe.

Bug-Report, Vorschläge, Änderungen erwünscht. --Andyk 18:32, 30. Mai 2009 (UTC)

Den VictimType finde ich jetzt ein wenig konfus, da er einerseits für die Erfolgswahrscheinlichkeit da ist und andererseits als Beschreibung konkreter Personen.

Mit dem VictimType bin ich momentan auch noch überhaupt nicht zufrieden. Er wird ja zur Zeit einfach zufällig an die konkreten Personen verteilt, was ein bisschen damit crashed, dass die Bewältigung eines schwierigen Gegeners mit wertvollen Items belohnt wird, wie du sagst. Die Definition eines schwierigen Gegners: Mit wenig Fähigkeiten (oder zusätzlichen Gegenständen) ist es höchst unwahrscheinlich, dass der Diebstahl oder eine andere Tätigkeit fehlschlägt. ---Andyk 18:29, 31. Mai 2009 (UTC)
Ahja... Ich dachte, das ist dafür da, daß Beschreibungen zufällig mit Schwierigkeitsgraden kombiniert werden, um der Abwechslung willen. Einer Person einen Schwierigkeitsgrad fix zuteilen wäre eine Alternative. Der Erfolg könnte definiert werden durch Schwierigkeitsgrad des Opfers (VictimType) + Fähigkeitsgrad von Gyges + Erfolgswahrscheinlichkeit einer Handlung (bzw. könnten verschiedene Handlungen bei verschiedenen Opfern unterschiedlich schwer sein) + Zufallsfaktor. Also (victim_difficulty + experience + action_difficulty + random_number)/4 oder (action_difficulty_for_victim + experience + random_number)/3.
Zum zufälligen Kombinieren gibt es ein Beispiel im Inform-Manual, No. 165 "Uptown Girls". Dort wird jeweils eine einzelne Person generiert, indem zufällige Werte für drei Properties (Haarfarbe, Größe, Frisur) generiert werden. Allerdings ist jeder Kombination von Werten ein Tabelleneintrag zugeordnet, also müssen im Prinzip alle Leute im Voraus beschrieben werden. (Das ist nicht anders, als wenn man 27 distinkte Personen definiert, von denen jede mit einer Wahrscheinlichkeit von 1:26 auftritt.)

Meine Vorstellung war eigentlich: Auf der einen Seite ist eine Liste mit Personenbeschreibungen, denen Gegenstände, Erfolgs/Mißerfolgsmeldungen und z.T. mögliche Handlungen fix zugeschrieben werden (ob die Handtasche aus pinkem Plastik oder aus braunem Leder ist, hängt davon ab, ob es eine ältere Dame oder ein hipper Student in ausgefallenen Klamotten ist; verschiedene Leute reagieren unterschiedlich auf Diebstahlsversuche, und die Handtasche kann ich nur aufschneiden, wenn die Person eine trägt), auf der anderen Seite die Erfolgswahrscheinlichkeit - ich habe an attentiveness gedacht - als numerische Variable, die bei der crowd-generation zufällig zugewiesen wird.

Momentan habe ich die Tabellen so angelegt, dass die Erfolgswahrscheinlichkeit hauptsächlich von der Tätigkeit abhängt. Sie wird aber moduliert von dem Einfluss, den der "Opfer"-Typ ausübt (in der VictimType-Table die Spalte impact).---Andyk 18:29, 31. Mai 2009 (UTC)

Momentan gibt es irgendwie einen Victim_Type "eating" und eine Beschreibung einer Pizza, und die sind syntaktisch völlig voneinander unabhängig. Obwohl es andererseits natürlich Sinn macht, daß die wertvollen Dinge (Macbook) an die schweren VictimTypes gebunden sind. Das Dumme ist wohl, daß hier der Aufstieg von billigen zu teuren Items mit dem Zufallsprinzip nicht recht vereinbar ist.

Dafür müsste man zur Personenbeschreibung den VictimType fix angeben. Wenn man für eine Personenbeschreibung findet, dass sie für mehrere Victim-Types passt, lässt man Victim-Type frei (also --) und er wird zufällig gewählt. ---Andyk 18:29, 31. Mai 2009 (UTC)
Dazu könnte man eine range angeben, also eine min_difficulty und eine max_difficulty, für den eigentlichen diebstahl wird eine Zufallszahl zwischen den beiden Werten erwürfelt.

Was die Brieftasche angeht, so kann man ihr Aussehen an die Person_ID und den Inhalt an die Erfolgswahrscheinlichkeit koppeln. An den Anfang einen Essensdiebstahl zu setzen, ist nicht unbedingt nötig (Gyges weiß ja auch, wenn er hungrig ist, daß man für Geld Essen kaufen kann).

Beim Essensdiebstahl war mir wichtig, dass eine Person, die wirklichen Hunger leidet, ihre Wahrnehmung nicht auf Wertgegenstände oder das Aussehen von Personen richtet, sondern schaut, wo es was zu essen gibt. Da geht es gar nicht so sehr ums Stehlen, sondern eher ums Betteln. ---Andyk 18:29, 31. Mai 2009 (UTC)
Gut, so kann man das natürlich auch sehen.

Was die Beutestücke angeht, so kann man nie wissen, welches Großmütterchen zum Clan gehört oder mit einem Macbook in der Tasche herumläuft. Das kann man als Schönheitsfehler betrachten oder als chaotisches Element. Ansonsten bräuchte man eine Tabelle aus verschiedenen Preisstufen kombiniert mit verschiedenen Kategorien von Wertgegenständen, wobei ersteres von der Erfolgswahrscheinlichkeit abhängt und zweiteres von der Charakterisierung des Opfers (die eine hat Notebooks verschiedener Preislagen, der andere vielleicht Familienschmuck). Das hieße, daß wir die Personenbeschreibungen in Kategorien einteilen müßten.

Durch Victim-Type sind die Personen ja prinzipiell in Kategorien eingeteilt, oder meinst du das anders? ---Andyk 18:29, 31. Mai 2009 (UTC)
Im wesentlichen meinte ich, daß - statt der Table of Spoil Articles - der Article_Name mit der Beschreibung verknüpft wird und der Money_Value mit dem VictimType. (Welche Sachen jemand mit sich herumträgt, gehört zur Charakterisierung einer Person - ein MacBook paßt nicht zu allen -, der Wert dagegen eher zur Schwierigkeit.) Dann müßten wir aber die Beschreibungen in Gruppen fassen, wenn wir nicht so viele Beutestücke wie Leute erfinden wollen. Einige haben ein Notebook, andere ein Juwel, andere eine Münze,... Wenn wir den VictimType fest mit der Beschreibung verbinden, ist das aber auch hinfällig.

Ich würde ja ein einfaches und gleichmäßiges Schema vorziehen, Sonderfeatures - Aktionen, für die man bestimmte Gegenstände braucht oder Kooperation - könnte man in einzelne Personen zusätzlich implementieren.

Bei Kooperation stimme ich dir zu, das ist schwer automatisierbar und so viele Diebstahl-Akte wollen wir nun auch wieder nicht produzieren (Es tut mir leid, der vorliegende Code ist eh schon viel zu viel auf Diebstahl konzentriert - wir haben ja noch viele andere Dinge, die zu implementieren sind. )---Andyk 18:29, 31. Mai 2009 (UTC)

Ich tendiere ja auch dazu, den zeitungslesenden Gast als einen Sonderfall von Victim zu sehen, dessen Erfolgswahrscheinlichkeit zunächst fast null ist (ausnahmsweise nicht zufällig zugewiesen, sondern hardcoded), der aber ein Zusatzfeature eingebaut hat (die Property drunk/sober und das Arrangement mit den Getränken), mit der man die attentiveness und damit die Erfolgswahrscheinlichkeit manipulieren kann. Der Gast wäre sozusagen seine eigene Unterklasse von VictimType.

Übrigens ist in #37 (Z. 324) ein Fehler wieder aufgetaucht, den ich in #36 korrigiert hatte (habe ich in #44 wieder ausgebessert). --H.A.L. 16:57, 31. Mai 2009 (UTC)

Hm, ganz funktioniert das mit dem Mergen anscheinend noch nicht, oder ich hab es einfach übersehen. ---Andyk 18:29, 31. Mai 2009 (UTC)
Eigenartig. --H.A.L. 22:12, 31. Mai 2009 (UTC)

ARCHIV

Kommentare zwischen Build 46-68 gibt es HIER im Archiv

Build 70

Build 70

Diff mit 68

Changelog:

  • eine To-Say-Funktion, die die konkreten Zahlenwerte wieder auf Einschätzungsebene zurückführt. So wird die Tatsache, dass es sich um exakte Berechnung handelt, versteckt.
  • Wiki-Einträge integriert (damit wir ausschließlich mit Wiki-Einträgen arbeiten können, brauchen wir noch mehr Szenarien)
  • Die Index-Landkarte hat schrecklich ausgeschaut - habe ein paar Korrekturen mit dem Schlüsselwort Index map vorgenommen (siehe Source-Code ganz unten) Habe mich auch ein bisschen mit dem EPS export gespielt, aber das ist ziemlich unhandlich (schade - die Algorithmen für die Darstellung wären ja eigentlich brauchbar).
  • Habe noch den Raum links vom Haupteingang der Uni erstellt. @Thai: Kann keine Türen mehr im Wiki erstellen (wollte eine geschlossene Glas-Tür - siehe Code).
Türen gehen jetzt - das Formular war beim Import wohl irgendwie verlorgen gegangen... --Thai 15:01, 18. Jun. 2009 (UTC)

Artikel in Bezeichnungen von Dingen

Eine Möglichkeit wäre gut, festzulegen, ob die Bezeichnung eines Dings einen Artikel erfordert oder nicht (also Eigenname oder nicht, z.B. Skoraste vs. the carpenter). Beim Eugenik-Szenario ist mir aufgefallen, daß einige dinge ohne Artikel definiert sind, damit werden sie von Inform wie Eigennamen behandelt. Ich habe es einmal mit Seiten verschieben probiert, aber abgesehen davon, daß man dafür mW Admin-Rechte braucht, ist das wohl ein bißchen eine konfuse Lösung. --H.A.L. 17:38, 18. Jun. 2009 (UTC)

Ich hab's mir noch nicht bis in alle Details überlegt. Grundsätzlich gibt's folgende Einflussfaktoren:
  • ob in der Definition (hier im wiki also: im Seitennamen) ein Artikel verwendet wird (falls ja, schließt inform automatisch, dass es sich nicht um einen Eigennamen handelt)
  • das kann explizit auch über die Eigenschaft improper-named (vs. proper-named) gesetzt werden (hab ich im Formular für Personen ergänzt)
  • außerdem gibt es noch die Möglichkeit, einen eigenen unbestimmten Artikel über die Eigenschaft indefinite article zu setzen (hab ich neu implementiert)
  • Konstruktionen wie "A woman called the cleaner is in the toilet" sind im wiki derzeit nicht möglich, der gleiche Effekt lässt sich aber über einen indefinite article "the" erzielen
Ich weiß nicht, ob die Variante, alle Nicht-Eigennamen über improper-named explizit auszuzeichnen, irgendwelche Nachteile birgt, oder ob es besser ist, jeweils den Artikel im Seitennamen anzugeben - jedenfalls sollte das ganze vielleicht für alle Personen/Dinge konsistent geregelt werden. Wenn wir uns auf eine Vorgehensweise einigen können, würde ich die bisher angelegten Objekte dann mal verschieben. Habt ihr eine Ahnung, wo es möglicherweise zu unliebsamen Auswirkungen kommen könnte? --Thai 14:08, 25. Jun. 2009 (UTC)

Ich seh jetzt auch keine Nachteile, ich denke, die proper/improper-Unterscheidung bietet die Flexibilität, die wir brauchen. Vielleicht wäre es überlegenswert, die Default-Werte vom Kind abhängig zu machen, z.B. ist ein normales Thing eher improper-named, im Gegensatz zu einer Person. Interessant wirds bei Räumen. "The carpenter shop" ist eindeutig improper-named, "Rathausplatz" und "McDonalds" sind da ambivalenter. --H.A.L. 07:45, 26. Jun. 2009 (UTC)

Build 73

--Thai 14:28, 25. Jun. 2009 (UTC)

Changelog:

  • Für Testzwecke habe ich "Beaming" implementiert, was erlauben soll, schnell zu den einzelnen Szenarios zu springen.
  • Implementierung des ersten Teils des Frauengemeinschaft-Szenarios (unter rudimentärer Nutzung des Conversation Packages).

Build 79 - Approaches, Readable-Memory-Fehler

Ich habe die Erweiterung "Approaches" von Emily Short hinzugefügt (im Erweiterungen-Ordner, in der Story File). "Approaches provides a GO TO... action which allows the player to move to a named room, as long as the path lies through rooms he has already visited" (manual). Solche Erweiterungen machen das Navigieren in so großen Topographien wie der unseren gleich viel einfacher.

Leider produziert die Story-File bei mir ständig "Out of readable Memory"-Fehler. Mit der neuen Extension funktioniert das Spiel als z8 nicht einmal mit memory economy. Vgl. 2.14 des Tutorials (und changelog). Hier die Fehlermeldung der Vollständigkeit halber:

Translating the Source - Out of Readable Memory

The application ran your source text through the Inform 7 compiler, asusual, and it found no problems translating the source. This processresults in what's called a story file, which is a program for asmall virtual computer. Unfortunately, the story file for this source textbroke a fundamental limit in this virtual computer: the maximum spaceavailable for "readable memory", which really means the spaceavailable in which to store tables, rulebooks, things, rooms and dictionarywords.

Inform can produce story files for several different virtual computers, andthe one used by the current project can be selected using the Settingspanel. If you are currently using the version 5 Z-machine, youcould try trading up to version 8, but this may not help - both versionshave the same limit, more or less. If you switch the project to the Glulxformat (you can make this change at the Settings panel), then limits likethis will probably not bother you again. Although Z-machine story filesused to be much more widely playable than Glulx ones, these days Glulxinterpreters are widely available, so it's probably not worth making bigsacrifices to stay within the Z-machine memory size.

But if you do want to economise and stay on Z, there is advice on this inChapter 2 of the documentation.

Sorry for the inconvenience.

Build 81

--Thai 20:06, 26. Jun. 2009 (UTC)

Changelog:

  • die erste Rohfassung für die Erstellung von Konversationen über das wiki steht - es fehlt insbesondere noch eine ausführliche Dokumentation.
  • @HAL: "Does the player mean doing something with something" funktioniert nur im Zusammenhang mit Verben, reine Aliase gehen nur mit "Understand".
  • das Caching im wiki wurde vorübergehend abgeschaltet - die Performance-Einbußen dürften kaum bemerkt werden, dafür werden jetzt die Zahlen bei den Diebstahl-Szenarios richtig aktualisiert.

Build 82: Crowd-Optimizing

Build 82

Diff to 81

  • Es werden nur noch Einträge für die sichtbare Anzahl der Crowd erstellt
  • Appearance-Probability wurde entsprechend der Interpretation von Thai angepasst
  • Sortieren in random-order macht Probleme (in manchen Fällen tauchen Plötzlich Fehlermeldungen auf, konnte aber nicht feststellen, woran es liegt; vllt. gibt es da einen Bug bei Inform) - habe daher die Alte Methode (einzelne Zeile zufällig raussuchen, bis ein Victim vom passenden Typ erscheint) beibehalten
  • ob die Performance jetzt besser ist? Try it. Update: Soeben verifiziert. Antwort: Nein. Die Hoffnung liegt in der Offline-Konversion direkt von Z8 zu Java-Script. --Andyk 23:31, 27. Jun. 2009 (UTC)
  • JavaScript ist einfach zu langsam (zumindest auf meinem Rechner). Habe es mit dem Python-Script offline umgewandelt, doch das bringt auch nix. Siehe hier
  • Etwas anderes Web-basiertes gibt es hier, das läuft nur über HTML, jedoch: Sobald Menüs auftauchen, ist es nicht mehr brauchbar, zumindest fand ich keine Möglichkeit, ein Menü zu durchlaufen.
  • WEitere interessante Infos dazu vielleicht hier.
  • Scheinbar gibt es sogar Z-Code-Interpreter für das IPhone.
  • Toll wäre, wenn wir das Spiel entweder server-seitig speichern könnten und es dann per Browser spielbar ist. Oder man packt das Spiel in eine selbständig ausführbare Datei, die man nur downloaden und dann spielen braucht. Andernfalls muss man halt einfach nen herkömmlichen Z-Code/Glulx-Interpreter verwenden. --Andyk 00:38, 28. Jun. 2009 (UTC)

Entwicklung der "nach Sun City"-Implementierung

Thema: Überlegungen bzgl. Implementierung von Helgas Vorschlag: Sun City

  • Wir brauchen einen Platz für die Diebesbande - wird ein Versteck am Karlsplatz sein (vielleicht einfach im Resselpark), das erst "richtig" zugänglich ist, wenn die Spielerin in der Bande aufgenommen wird. (Wenn sie das noch nicht ist werden ihr alle vorher gestohlenen Wertgegenstände abgenommen) DONE
  • Am Umschlagplatz der Diebesbande gibt es mehrere Leute: Gyges, Bushido und den Nimmerrichhter, der einem überhaupt erst dorthin führt DONE
  • Dialog mit Gyges einbauen. Er muss überredet werden (in V2.0 könnte man das als ein Rätsel gestalten, fürs Erste wird ein kurzer Dialog reichen) DONE (draft)
  • Eine Szene "kooperativer Diebstahl" und einen exemplarischen Diebstahl erzeugen, der 100% erfolgreich ist. (Userlevel: Multi_Profi) DONE
  • Daran ankoppeln eine Szene "Gyges wird übermütig": Gyges fordert die Beute und 3 Optionen ergeben sich:
    • Die Beute aushändigen (muss die Spielerin eingeben: give haul to Gyges oder hand out haul)
    • Weglaufen heißt run away: Die Spielfigur findet es am Besten, auf die nächste U-Bahn zu warten. Bis dahin, muss man Gyges irgendwie bei Laune halten. DONE
    • In der Metro geht der Plot weiter: Wenn die Spielerin und Gyges in der Metro sind, hat die Spielerin 15 Züge lang Zeit, Gyges abzuhängen. DONE
    • Abhängen geht, indem man sich in der Crowd versteckt. hide in crowd oder hide. Examine Crowd verändert sich übrigens in dieser Szene so, dass es einfach eine normale Beschreibung ist. So etwas wie "Deine Seelenruhe ist ein wenig beeinträchtigt durch die Tatsache, dass dein Gaunerkollege dich verfolgt. Einzelne Leute sind jetzt nur Hindernisse - so wie Gebüsche. Oder?". DONE
    • Wenn die Spielerin ihm in der Metro die Beute übergibt, ist Gyges zufrieden, verschwindet und du kommst nach "Sun City". Dort steht die Gauloises-rauchende Skoraste. DONE
    • Wenn die Spielerin in den 15 Zügen nichts von den beiden macht, nimmt ihm Gyges alle seine Diebesgegentände und sein ganzes Geld ab. Spielerin findet sich in Sun City wieder. DONE
    • Warten oder irgendwas "unsinniges" im Raum machen (z.B. mit Gyges versuchen zu reden oder das Inventar untersuchen) gleich im darauf folgenden Turn geschieht dann das: Gyges schnappt sich das Zeug und verschwindet Richtung Metro. Wenn die Spielerin schnell ist, kann sie Gyges noch einholen. (Wie ich die Zielorientierung von Gyges, in die Metro einzusteigen und zum Stadion zu fahren, implementiere, überleg ich mir noch... eventuell mit der "Planner"-Extension, wenn sie praktikabel ist. Ansonsten einfach mit manuellen Commands).
Mangels technischer Arbeitskräfte werde ich eine Verfolgungsjagd, wo die Spielerin Gyges verfolgt, ganz nach hinten auf die Liste schieben.--Andyk 22:02, 15. Jul. 2009 (UTC)
  • Dabei fällt mir ein: Ich muss noch blockieren, dass die Spielerin (oder NPCs) einfach die U-Bahn-Stationen durchmarschiert, anstatt mit der Metro zu fahren. DONE
  • Mit dem Police-Man-ist es zwar ähnlich wie mit dem Gyges, aber das lass ich für die heutige Session mal. Bin froh, wenn ich das oben beschriebene schaffe.
Ebenfalls ganz nach hinten auf die Liste schieben.--Andyk 22:02, 15. Jul. 2009 (UTC)

Irgendwann heut nacht gehts los. --Andyk 17:13, 30. Jun. 2009 (UTC)

Build 86: Beginn Resselpark

Build 86

Diff to 85

  • Habe mich ein bisschen mit den Conversation-Extensions beschäftigt - tolle Sache.
  • Es gibt jetzt den Resselpark mit Gyges.
  • Wenn man das Theft by Intoxication geschafft hat, erscheint Nimmerrichter und verwickelt die Spielerin in ein Gespräch. Das Ziel ist, sie zu überreden, bei der Diebesbande mitzumachen. (Die genauen Dialoge gehören noch festgelegt; ich glaube Anna wollte das machen?) Wenn das gelingt, kommen sie zum Resselpark.

Viel mehr hab ich bis jetzt noch nicht geschafft. --Andyk 00:04, 1. Jul. 2009 (UTC)

Anmerkung zur Parchment-Methode: Da ja anscheinend die JavaScript-Variante zu langsam geht, wobei ich das bei mir eigentlich nicht feststellen konnte. Wie wäre es mit dieser Flash-Variante Flaxo bzw ein Java-Applet für den Broswer (wobei ich ja Java nicht mag ;-) ) ZPlet. Es gibt noch andere Java-Variante hab den letzten Build damit ausprobiert und es hat eigentlich damit funktioniert mit meiner Meinung nach mit ausreichend Geschwindigkeit. Ich denke das es notwendig ist eine Web-Browser Variante anzubieten und am schlimmsten Fall darauf hinzuweisen es langsam sein könnte.--mape 12:52, 1. Jul. 2009 (UTC)
Interessant, dass parchment bei dir nicht langsam ist - welchen Browser verwendest du (Firefox und Safari sind nicht überzeugend, könnte mir vorstellen, dass Googles chrome in diesem Fall vielleicht einen Vorsprung hat)? Ich hab die Flash/Java-Geschichten (Flaxo, ZPlet und ZMPP) auch durchprobiert, im Prinzip funktionieren alle drei, mit akzeptabler Geschwindigkeit, aber kleinen Schönheitsfehlern (vor allem Menüs verursachen Problemchen). So elegant und einfach wie parchment kommt keines daher, wenn wir das also noch irgendwie hinkriegen, wäre das sicher vorzuziehen. --Thai 20:26, 1. Jul. 2009 (UTC)
Also nicht langsam ist jetzt übertrieben, aber auf jeden Fall annehmbar. Verwende hier Iceweasel (Debian-Firefox), da könnte es schon sein, dass ein paar andere Patches drin sind. Kann auch sein dass ich da nicht so anspruchsvoll bin, geht auf meinem VC20 auch nicht viel schneller ;-) --mape 08:42, 2. Jul. 2009 (UTC)

Build 87: Zwischenschritt

Build 87

Diff to 86

  • Erste Ansätze für Gyges-Zusammenarbeit
  • Wenn man in den Resselpark geht, während man hungrig ist oder bevor man das Theft by Intoxication-Rätsel gelöst hat, wird man ausgeraubt (verliert alle durch die crowd-aktionen gestohlenen Gegenstände und alles Geld in der PlayerPurse)

Build 91: Mit Gyges ins Stadion gehen

Build 91

Diff to 87

  • Es gibt eine Cooperation-Scene, die aktiviert wird, sobald man mit Gyges gemeinsam im Stadion ist (also eigentlich in der Station Stadion). Dort kommt man hin, indem man mit Gyges redet und ihn fragt, ob sie zusammenarbeiten sollen (Den Dialog könnte man eventuell verfeinern und ein bisschen Überredungskunst und witzige Wendungen einbauen, aber dafür ist mir die Muse weggelaufen).
  • Was zur Zeit zum Entwickeln ganz gut ist: Durch beam kann man direkt - ohne dass noch z.B. die Starvation-Aufgabe aktiviert wird - von der Toilette z.B. zu Theft by Intoxication oder zum Resselpark hüpfen. Für ein reguläres Spiel ist das natürlich problematisch (aber ich denke es ist nicht intendiert, beam ins Endgame mitreinzunehmen, oder?)
  • Habe außerdem jetzt verhindert, dass die Spielerin über die U2-Gleise zu den Stationen gehen kann und stattdessen die metro nehmen muss. --Andyk 11:12, 2. Jul. 2009 (UTC)
  • Was ich jetzt noch machen muss, sind die Sachen mit dem davonlaufen und SunCity als U2-Station. mal schauen, wie das klappt.

Build 110: Hinführung zu SunCity

Build 110

Diff to 108

Ich habe Helgas Konzept jetzt soweit implementiert, wie es mir möglich und sinnvoll erschienen ist. Den Polizisten habe ich ganz außen vor gelassen, genauso die NPC-getriggerte Verfolgungsjagd von Gyges, der sich die Beute schnappt und durch die U-Bahn abhaut (es wäre reizvoll, aber da es für den Spielverlauf nicht wichtig ist, lass ich es mal). Sehr wohl is aber implementiert, dass die Spielerin in die U-Bahn flüchtet und sich dort in der Crowd verstecken kann.

Also mal ganz systematisch:

  1. Gyges und die Spielerin gehen zum Stadion (zumindest zur Station), um dort gemeinsam etwas zu stehlen, was ihnen gelingt. Der Gegenstand wandert zunächst in die Tasche der Spielerin.
  2. Gyges verlangt nun die ganze Beute für sich und bedroht die Spielerin mit einem Messer.
  3. Du kannst nun (I) weglaufen (du musst auf die U-Bahn warten) run away und enter stadion metro oder (II) give him the haul. Bei II findet sich die Spielerin unwillkürlich, während sie grübelt, in Sun City wieder (das ist ein bisschen transreal, passt aber IMHO ganz gut). Falls jemand bessere Vorschläge hat, kann er/sie es gern implementieren :P (notfalls reicht auch ein Einwand und wenn es wirklich wichtig ist, implementier ich es natürlich)

    TODO: Es muss garantiert sein, dass die U-Bahn in die andere Richtung nicht kommt oder dass dort prinzipiell alles genauso vor sich gehen kann. Zur zeit hab ich es nur für die staion metro implementiert.


    TODO: run away mit enter stadion metro gleichsetzen, sobald die U-Bahn da ist.

    1. Build 111 - diff zu 110 Karlsplatz metro ist jetzt offline, sowie die Szene Cupidity beginnt. Ich denke, das sollte alles sein.
    2. Habe die instead of running away-Regel erweitert: Sie ruft jetzt "try entering stadion metro" auf, wenn die stadion metro in der location ist. H.A.L. 07:21, 16. Jul. 2009 (UTC)
  4. Bei I hast du nun 15 Spielzüge Zeit herauszufinden, dasss du dich in der crowd verstecken kannst. hide in crowd. Natürlich kannst du jederzeit give the haul to Gyges schreiben. Entscheidest du dich innerhalb der 15 Züge (die genaue Anzahl ist der Spielerin nicht bekannt) nicht für eine der beiden Möglichkeiten, nimmmt dir Gyges alles Diebesgut und alles Geld ab, das du hast. In jedem Fall kommst du aber nach SunCity.
  5. In SunCity angekommen, findest du derweil nur die ab jetzt defekte U-Bahn. Das verhindert, dass du zurückgehst. Hier beginnt ein neuer Abschnitt... zurück gehts erst wieder später.

So, das wichtigste ist gesagt denke ich. Wie schauts eigentlich mit den Szenarien im Schloss aus? Gibt es das Schloss schon? Ich habe da ein bisschen den Überblick verloren? Das ganze ist schon ein richtig großes Projekt geworden, mit ziemlich viel Patchwork-Arbeit und ungeordnetem Code (wobei ich an der Unordnung einen Teil der Schuld auf mich nehme). --Andyk 00:06, 16. Jul. 2009 (UTC)

P.s.: Achja, im heute geschriebenen Code kann man von Wiederverwendbaren Code nicht sprechen, da sich einige Teile einfach wiederholen. Dadurch wird die Sache bei Änderungen - z.B. bei den say-Phrasen - relativ schwer wartbar... Trotzdem ich das weiß, habe ich im Moment nicht das Bedürfnis, den Code mit To-say-Phrasen zu restrukturieren. Lass mich aber gern überraschen beim Update :P

Build 106: Verbesserung der Crowd-Usability

Build 106

Diff to 101

  • Der einfachste Weg, Diebstähle zu begehen ist nun:
x crowd
Nun wird eine Liste mit Personenbeschreibungen ausgegeben, die von 1 aufwärts nummeriert sind (also nicht mehr die Victim-IDs sondern eine Nummer für jede Person in der aktuellen Menge).
Man sucht sich eine Person aus und merkt sich die Nummer, sagen wir 10, und dann gibt man ein:
examine 10
oder
x 10
oder
observe 10
, dann kommt man direkt zum Optionsmenü.
Update: Nun auch möglich: examine person 10 / x person 10 / observe person 10--Andyk 08:53, 16. Jul. 2009 (UTC)

Was hierbei noch zu tun ist:

  • Überlegen, ob man gleich mit Examine ins Menü kommen soll, oder mit einem anderen Befehl. Wäre für Vorschläge dankbar, sonst lass ich es mangels Einfälle bei examine.
  • Wenn keine Optionen für die ausgewählte Person zur Verfügung stehen, soll nicht das Menü kommen, sondern eine bestimmte Meldung, sowas wie "Du kannst keinen Schimmer, was du mit dieser Person tun sollst."

Was ich sonst noch geändert habe:

  • Dinge, die die Spielerin gleich nach dem Diebstahl isst, werden nun nicht mehr im Inventar angezeigt.
  • Die nervigen DEBUG-Meldungen beim Stehlen wurden nun endlich entfernt.

Demnächst geht es mit dem SunCity-Szenario weiter. --Andyk 23:26, 11. Jul. 2009 (UTC)

Build 108: Nimmerrichter-Dialoge und andere Bugfixes

  • Es gibt nun eine Uhr, die die Spielerin schon zu Beginn des Spiels im Inventar hat (muss noch übersetzt / Beschreibung ergänzt werden).
    • gut, ich hab mich mal drauf eingestellt :-)
  • Das Poster erscheint jetzt nur noch, wenn eine Crowd anwesend ist (und wie bisher: Wenn man im Szenario Lonesome Outlaw ist. Dieses beginnt NACH dem FastFood-Szenario (sobald man satt ist) und VOR der Anwerbung durch den Nimmerrichter. Der Zweck des Posters ist, dass die Spielerin versucht, den Ort zu finden, wo die Anwerbung stattfindet: Burg-Ring at Burggarten.
  • Der Nimmerrichter-Anwerbungsdialog ist technisch etwas verändert worden (nichts Gravierendes)
  • Man wird jetzt nicht mehr von Bushido und seinen Leuten überfallen, wenn einem der Nimmerrichter zum Resselpark mitnimmt (man wird jedoch wie gewünscht überfallen, wenn man als Hungernder oder Single_Amateur zufällig in die Gegend kommt).
    • Ich glaube nicht, daß es einen Unterschied macht, ob man die Bushido-Aktion an der Szene oder am grade of player festmacht (Build 108), Das Problem war, daß der Spieler und Nimmerrichter zum Resselpark bewegt werden (und damit die after going to-Regeln triggern), bevor der grade of player wechselt. Ich habe das mittlerweile geändert (Build 107).
Jep, hab deine Änderung bemerkt (aufgrund des Konflikts ^^). Das Problem bei Szenarien ist (so hab ichs in Erinnerung), dass Anfang/Ende immer erst beim nächsten Turn aktiviert werden. Wollte es nicht mehr testen (da ich mich an frühere Versuche erinnert hab) und deswegen hab ich es direkt am grade festgemacht. Hat es bei dir ohne Bushido-Überfall funktioniert, nachdem du now the grade of the player is Multi_Amateur nach oben gereiht hast? --Andyk 18:07, 12. Jul. 2009 (UTC)
Tatsächlich, jetzt wo ich es nochmal überprüfe, funktioniert es nicht mehr, dabei war ich mir ziemlich sicher, daß ich das erfolgreich getestet habe. Vielleicht ist beim beamen irgendeine Variable durcheinandergekommen. Na egal, jetzt funktioniert ja alles. --H.A.L. 08:35, 16. Jul. 2009 (UTC)
  • Beim Survival-Szenario (also wo man den Leuten das Essen stehlen muss) erscheinen nun in der Statusleiste (a) der Sättigungsgrad (0%,25%,50%,75% inklusive einer progress bar) und (b) die verbleibenden Minuten, bis man verhungert.

Bestehende Probleme:

  • Es gibt immer noch Probleme bei den Dialogen:
    • Es wird unter "him/her" nicht der aktuelle Gesprächspartner verstanden (sehe im Moment nicht, wie man das ändern könnte bzw. warum das nicht von den Conversation Extensions als default gesetzt wurde)
      • Ich habe auch grad vergeblich danach gesucht. Aber anscheinend geht es, wenn man die Spielerin dazu bringt, "look" einzugeben ([[1]]. Ich glaube, das hängt damit zusammen, welche Person zuletzt genannt wurde. Ich werde mal im Semantic Wiki versuchen, da etwas zu machen.
      • Edit: Ich habe fürs erste die "you look around..."-Stelle aus der IF:NimmerrichterGreeting-node in die initial appearance verschoben, um die Spieler zum "look" zu animieren. Dummerweise bringt das jetzt Ärger mit Gesprächsverlauf und Suggestions mit sich[[2]]. Ich hatte gehofft, das "him"-pronoun ändern zu können, indem ich Nimmerrichters Namen über eine Variable erwähne[[3]], analog zu Kap. 17.22 im Tutorial, aber das scheint in diesem Fall nicht zu greifen. :-(
Ich habe das gleiche Problem in der ElitistCommunism-Szene: Wenn man von WarMusic kommt, bezieht sich "him" im Gespräch mit dem "Watchman" immer noch auf den (nicht anwesenden) "Doorman". Die Aktualisierung der Pronomen erfolgt wie hier schon bemerkt wurde im Rahmen der Printing a locale paragraph about-Activity (durch die set pronouns from items in room descriptions rule) beim Ausgeben einer Raumbeschreibung, andererseits aber auch, nachdem der Gesprächspartner direkt adressiert wurde ("ask watchman about ..."). Allerdings weiß ich noch nicht, wie ich diese Informationen nutzen kann. Ideen? --Thai 14:11, 27. Aug. 2009 (UTC)
Scheint, als hätte ich eine Lösung gefunden: Mit set pronouns from the watchman wird "him" auf den "watchman" gesetzt... --Thai 08:28, 7. Sep. 2009 (UTC)
    • Nodes haben keine Gruß/Abschiedsbotschaft, sondern nur Personen (zumindest hat es nicht geklappt, als ich den Nodes Gruß-Botschaften zugewiesen habe --> siehe z.B. diesen Node.--Andyk 15:30, 12. Jul. 2009 (UTC)
      • Irgendwie ist das auch naheliegend, da ein Node ja kein Gespräch repräsentiert, sondern einen Gesprächsabschnitt. Es ist wohl angedacht, daß man erst eine Person mit der personenspezifischen Grußbotschaft begrüßt und dann in den ersten Node einsteigt. Beginn und Ende eines Nodes müßten eigentlich mit node-introduction und node-termination abgedeckt sein - ich weiß jetzt auch nicht, warum die auf closed nodes beschränkt sind. - Ich glaube, die Frage läuft darauf hinaus, was als Beenden eines Gesprächs gilt - Wann wird bei einem offenen Node eine implicit farewell-response getriggert? - Ansonsten scheint mir, wenn man die farewell response vom Node abhängig machen will, kommt man nicht umhin, eine entsprechende if-else-Klausel in die farewell-response der Person zu integrieren. Aber bei den Gesprächsverläufen blicke ich jetzt selber noch nicht durch. --H.A.L. 17:38, 12. Jul. 2009 (UTC)

Übrigens stelle ich gerade fest, daß gewisse Diskussionen halb auf die Geek-Talk-Seite gehören und halb zum Endspurt, das ist auch ein kleiner design flaw in dem Projekt. :-) --H.A.L. 17:45, 12. Jul. 2009 (UTC)

Das Gespräch mit Skoraste

Build 113: Die ersten drei Zeilen

Build 113


Diff mit 112

S: All hail, stranger! You must be here to have a look at the free room in our nice castle. What is your name?

G: Hello. My name is (name of the player).

S: I am Skoraste. Should I show you the room immediately?
  • Ich habe mal begonnen, die ersten drei Zeilen des Gesprächs zu implementieren. Das klingt zwar wenig, aber dafür ist die Sache mit Namen/Geschlecht eingeben schon dabei.
  • Außerdem: Index map wieder etwas schöner gestaltet und einige kleine Bugs gefixed
  • Die Räume garden und palace wurden erstellt, sowie SunCity in SunCityStation umbenannt.--Andyk 16:00, 19. Jul. 2009 (UTC)

Build 114: Die nächsten vier Zeilen

Build 114

Diff mit 113

G: You have a free room?

S: Yes, it is really much sought after, because it does not cost anything. Moreover, it does not happen very often that one of our rooms is free. If you want I will lead you immediately to our castle owner, so that he discusses everything with you what is important for your moving in!

G: Yes, with pleasure.

Skoraste leads you to the entrance of the castle. You continue walking for a couple of minutes on the gravel way straight ahead (steps crunch), until you reach the input gate of the castle. The castle is built into Greek to classical style. The marmoreal columns and halls are mighty, but cold (steps resound). You enter the vestibule. From here you can already see into the main part of the castle from which countless stairs lead up in different directions. Skoraste leads you up by one of the stairs, however, this writhes in a strange way and you soon los your orientation.
  • Die Sache mit dem Gender wurde verbessert. Es wird zunächst RANDOM ein Geschlecht angenommen. Skoraste fragt dann, wie selbstverständlich, ob sie eine Frau/ein Mann ist. Wenn sie sich irrt, schiebt sie die Schuld auf ihre Sehkraft in die Schuhe, die sie manchmal in Stich lässt (die toggle-gender-Phrase switched dann auf das jeweils andere Geschlecht).
    • Schön :-) Aber nicht ganz richtig, so viel ich weiß, gibt es in Inform drei Geschlechter. Ansonsten find ichs schade, daß das mit dem restricted understanding weggefallen ist. --H.A.L. 08:32, 22. Jul. 2009 (UTC)
Das fand ich selbst auch ein bisschen schade, obwohl es ja nicht ganz weg ist. Dafür fehlt die Phrase "zu welchem Geschlecht würdest du dich eher zugehörig fühlen?", was ich etwas schade finde. Aber Code ist da, um geändert zu werden! --Andyk 13:14, 22. Jul. 2009 (UTC)
  • Irgendwie werden die Suggestions immer dort angezeigt, wo man sie nicht haben will (zu Gesprächsbeginn, obwohl auto-suggesting ausgestellt ist), aber niemals, wenn man sie braucht (z.B. wo yes/no-Entscheidung aussteht). Wo es mir gefehlt hat, hab ich es händisch mit try listing suggested topics hinzugefügt.
  • Wenn man sich das Zimmer nicht ansehen will (was bei der Textvorlage nicht vorgesehen ist), dann sagt Skoraste, dass sie und der Schlosseigentümer nur GUTE Absichten haben und dass er es sich nochmal überlegen soll. Dann wird das Gespräch beendet. Da die Spielerin aber sonst nirgends hin kann (sobald man ins Schloss gehen will, spricht man unwillkürlich Skoraste an - TODO: hier wäre es besser, wenn man von Skoraste angesprochen wird - und sobald man zurück in die Wiener Innenstadt will, geht das nicht, weil die U-Bahn ausgefallen ist - soviel zum freien Willen), wird sie sicher irgendwann YES sagen und mit Skoraste ins Schloss gehen.

Da geht es dann das nächste Mal weiter. Schrecklich, wie lange das dauert im Vergleich zum Formulieren der Ideen, die einem vorschweben. --Andyk 16:52, 20. Jul. 2009 (UTC)

Build 118: Beginn des Gesprächs mit Notalp

Build 118

Diff mit 114

  • Alles, was von dem Schloss-Intro ins Englische übersetzt wurde, ist jetzt implementiert. Dies umfasst den gesamten Dialog mit Skoraste. Danach kommt Notalp zum Zug... doch wenn ich mir das recht ansehe, ist es ein Gespräch zwischen Skoraste, Notalp und der Spielerin (wobei Skoraste mehr redet als Notalp). Ich werd das demnächst in Deutsch implementieren. Wer sich dazu berufen fühlt, kann die englische Übersetzung im IF-WIKi bearbeiten.--Andyk 22:35, 22. Jul. 2009 (UTC)

Build 119: Castle-Intro fertig implementiert

Build 119

Diff mit 118

  • Alles, was im Text steht, ist implementiert (und ein paar Kleinigkeiten darßber hinaus)
  • Mit der Magie des Schlosses bin ich unzufrieden. Jetzt - da wir den magischen Ring bei Gyges elliminiert haben - sieht es fast so aus, als ob unsere Interpretation die ist, dass die Gyges-Geschichte weniger magisch und rationaler ist als die platonischen Antworten darauf. Das würde ich so nicht unterschreiben, denn für mich sind wenn dann beide fingierte Situationen.
  • Der Node müsste noch übersetzt werden, falls jemand die Motivation hat.--Andyk 13:45, 23. Jul. 2009 (UTC)

Build 116

--Thai 21:59, 21. Jul. 2009 (UTC)

  • beim Update aus dem wiki war ich diesmal längere Zeit mit Fehlersuche beschäftigt, deshalb bitte auf die (Code-)Interpunktion bei den Dialogen achten: Punkte nur ganz am Schluss bei jeder Response!
  • wie ihr richtig bemerkt habt, machen Greeting-/Farewell-Responses für ConvNodes keinen Sinn, ich habe also das Formular angepasst
  • außerdem gibt es jetzt im Formular für Dinge ein Feld zur Eingabe selbst definierter Kinds - damit wäre diese Beschränkung auch aufgehoben (Achtung: Kinds müssen vor den zugehörigen Objekten definiert werden - am besten also im entsprechenden Abschnitt in Volume 1)
  • die ersten Schritte bei der WarMusic-Implementierung sind gemacht...

Build 122

--Thai 23:54, 23. Jul. 2009 (UTC)

Changelog:

  • die Rohestfassung von WarMusic (basierend auf Version 2) ist fertig
  • Anpassungen auf der Weltenbaustelle: Fehler bei der Todo-Anzeige behoben
    • todo: node-termination ist derzeit nicht korrekt implementiert (node-termination rules sind an conditions geknüpft - erstens muss die condition angegeben werden können, zweitens müssen mehrere node-terminations möglich sein)

Build 131

--Thai 10:06, 27. Jul. 2009 (UTC)

Changelog:

  • WarMusic verbessert: listen to sollte jetzt funktionieren, pass wurde implementiert, man kann den Konzertsaal vor Konzertbeginn verlassen (beim ersten Versuch gibt es eine Warnmeldung), die Tür ist dann allerdings verschlossen und man verpasst das Konzert
  • suggestions: durch Setzen von suggest-on-greeting auf false sollten suggestions jetzt nur mehr für auto-suggesting closed convnodes angezeigt werden
  • @andyk: habe unsere Diskussion über das Triggern impliziter goodbyes aus dem Todo auf die Diskussionsseite verschoben

yes-no-response

Ich habe gerade in Eugenics2 Antworten für ja und nein eingetragen (IF:Official-solution-node, IF:Official-leave-sol-node und IF:Official-thank-sol-node). Dabei habe ich gesehen, daß es zwar ein kombiniertes Formularfeld gibt für yes-no-Antworten, aber keine, mit denen man für yes eine andere Antwort eintragen kann als für no. Ich habe meine Antworten erstmal in den additional code geschrieben. Ist das so in Ordnung? --H.A.L. 08:28, 31. Jul. 2009 (UTC)

Hm, warum wählst du nicht z.B. when saying aus und schreibst in das Formularfeld yes oder no rein? Und das kombinierte Formularfeld kenn ich gar nicht. Wie komm ich zu dem? --Andyk 15:06, 31. Jul. 2009 (UTC) Update: Ah, ich sehe schon. Bei den default-Responses gibt es yes-no.
Ah , die "saying"-Option kannte wiederum ich nicht. - Yes-no ist eine der Optionen bei den Default Responses. --H.A.L. 08:01, 1. Aug. 2009 (UTC)

Build 134

Ich hab mal die ersten Ansätze zu einem verwendbaren Skein-File gemacht. Ein paar Eigenschaften von diesem Skein-File:

  • Nicht perfekt (der Variantenreichtum ist noch sehr begrenzt, da müsste man mehr Zeit investieren)
  • Nicht vollständig (Testweise hab ich Bäume für Theft-By-Intoxication und einen noch nicht aufgeräumten Baum für das SunCity-Intro)

Build 140

--Thai 18:52, 30. Aug. 2009 (UTC)

ChangeLog:

  • ich hab das wiki-Interface eben noch mal restrukturiert/simplifiziert - hoffe, dass das keine gröberen Ungereimtheiten im Code verursacht...


Build 149

--Andyk 23:12, 3. Sep. 2009 (UTC)

Habe unser Projekt in zwei Teile geteilt.

Habe den Code der beiden Versionen entsprechend angepasst - im Wiki müsste man es noch umstellen. Den erwünschten Effekt, dass wir nun Z8 verwenden können, hat es leider nicht gebracht.

Build 150

--H.A.L. 09:48, 6. Sep. 2009 (UTC)

  • Ich bin den Code in seinen allgemeinen Teilen durchgegangen und habe alles, was nur für den ersten Teil wichtig ist, auskommentiert.
  • Hat jetzt bei mir als z8 kompiliert.
  • Unter anderem habe ich die recht umfangreiche Approaches-Erweiterung gestrichen, die nur für die elaborierte Topographie am Ring von Bedeutung war.
    • Inhaltliche Nebenbemerkung: Was die IF so umfangreich gemacht hat, war nicht zuletzt, daß wir sowohl mit einem komplexen topographischen Szenario gearbeitet haben als auch mit komplexen Dialogszenarien. Das liegt wohl daran, daß unser Projekt so heterogen geworden ist. In der Praxis findet man kaum das eine und das andere in einem Spiel.
  • Ich habe versucht, alle diese Änderungen zu markieren (und vor allem auch alle Zeilen, die ich stehengelassen habe, weil ich nicht sicher bin, ob wir sie brauchen). Die Kommentare habe ich mit dem Wort ORPHAN markiert. Obwohl ich nicht weiß, wieso, weil dafür gibts in Subversion ja Chatlogs.
Ich habe "running away" und "following" ins Kapitel "warmusic" verschoben - ist vermutlich doch übersichtlicher so... --Thai 08:17, 7. Sep. 2009 (UTC)
  • Wir haben einen Haufen Code für die beaming-Funktion, die wir in der Endfassung vermutlich nicht brauchen werden. - Oder ist sie notwendig für den Übergang zwischen den Szenarien? Die gängige Methode für so etwas ist mit scenes, vielleicht können wir die Sache damit eleganter lösen. Dann könnten wir möglicherweise auch die menus-Extension einsparen.
hab beaming (und das perfomance-Auswahlmenü bei "warmusic" umgeschrieben, die menus-Extensions ist jetzt draußen --Thai 08:17, 7. Sep. 2009 (UTC)
  • Außerdem haben wir eine umfangreiche TimeofDay-Funktion, nur damit die Spielerin einmal darauf wartet, daß die Tische fertig werden. Das ließe sich vielleicht auch mit weniger Aufwand machen.
  • Ich hatte Probleme mit der Property proper-named / improper-named, mußte eigens im Code eintragen, daß diese Property einem Raum zukommt (Zeile 269, in den ad-hoc-changes). Könnte das mit dem überarbeiteten Wiki-Interface zu tun haben?
Hab festgestellt, dass es die Zeile auch in der Approaches-extension gibt - und ich hatte mich schon gewundert, warum proper-named/improper-named für Räume in der Documentation nicht erwähnt wird... Falls wir "You can go..." nicht mehr verwenden wollen, wird das aber auch überflüssig. --Thai 08:17, 7. Sep. 2009 (UTC)

Build 153 - Z-Code Limits

Bei mir benötigt Build 153 wieder Glulx, z8 hat Probleme mit der Variable MEMORY_HEAP_SIZE:

Inform 7 build 5Z71 has started.
I've now read your source text, which is 19903 words long.
++ 0% (Lexical analysis)
++ 5% (Semantic analysis)
I've also read Standard Rules by Graham Nelson, which is 38883 words long.
I've also read Menus by Emily Short, which is 2033 words long.
I've also read Basic Screen Effects by Emily Short, which is 2195 words long.
I've also read Conversation Package by Eric Eve, which is 2355 words long.
I've also read Conversation Nodes by Eric Eve, which is 5673 words long.
I've also read Conversation Suggestions by Eric Eve, which is 2828 words long.
I've also read Conversation Responses by Eric Eve, which is 1806 words long.
I've also read Conversational Defaults by Eric Eve, which is 2255 words long.
I've also read Plurality by Emily Short, which is 2209 words long.
I've also read Conversation Framework by Eric Eve, which is 4387 words long.
I've also read Epistemology by Eric Eve, which is 1479 words long.
++ 15% (Drawing inferences)
++ 20% (Binding rulebooks)
++ 23% (Binding rulebooks)
++ 26% (Binding rulebooks)
++ 29% (Binding rulebooks)
++ 32% (Binding rulebooks)
++ 35% (Binding rulebooks)
++ 38% (Binding rulebooks)
++ 41% (Generating code)
++ 44% (Generating code)
++ 47% (Generating code)
++ 50% (Generating code)
++ 53% (Generating code)
++ 56% (Generating code)
++ 59% (Generating code)
++ 62% (Generating code)
++ 65% (Generating code)
++ 68% (Generating code)
++ 71% (Generating code)
++ 74% (Generating code)
++ 77% (Generating code)
++ 80% (Generating code)
++ 83% (Generating code)
++ 86% (Generating code)
++ 89% (Generating code)
++ 92% (Generating code)
++ 95% (Generating code)
++ 98% (Generating code)

  The 19903-word source text has successfully been translated into an
    intermediate description which can be run through Inform 6 to complete
    compilation. There were 22 rooms and 95 things.
Inform 7 has finished.
Inform 6.31N (29th March 2009)
::###########################################################################################################################################################################################################################################################################################################################################################################################################################
File "auto.inf"; Line 41200	# Error:  An array must have between 1 and 32767 entries
> Array Blk_Heap -> MEMORY_HEAP_SIZE + 16;
#####################################
Compiled with 1 error and 1591 suppressed warnings (no output)

Compiler finished with code 1

zu Build 162

Habe noch einige Descriptions hinzugefügt. Werden morgen noch die restlichen Beschreibungen für SunCityTop einfügen.

Was noch aufgefallen ist:

  • Die Site IF:Unobstrusive_corridor müsste unbenannt werden da es unobtrusive heißt. Hab mich jetzt aber nicht getraut sie zu löschen und neu anzulegen, da mir die Abhängigkeiten nicht klar sind.
  • Bei IF:The_baker ist mir nicht klar welches Gespräch noch eingefügt werden soll. Laut Szenarioplan sollte eigentlich schon alles drin sein?

--mape 21:50, 27. Sep. 2009 (UTC)