1

 3

 

Programmbeschreibung

 

Das Programm gliedert sich in zwei Teile. Editor und Testraum.

 

Editor

 

 

EXIT: "diabasic.wdl" mit globalen Dialogeinstellungen wird noch einmal abgespeichert, danach Programmende.

 

PLAYERNAME: Ein weißes Feld. Das bedeutet hier kann etwas eingeschrieben werden. In dem Fall kann (muß aber nicht) der Namen des Helden eintgetragen werden. Klick mit der Maus darauf und schreib. Der Name wird nirgends abgespeichert und deshalb ist das Feld wieder leer wenn das Programm erneut gestartet wird. Der einzige Sinn liegt darin das bei angeschaltetem "AUTONAME" Button der Playername (und der Entityname) automatisch in die Textbox geschrieben wird.  Es also etwas Arbeit spart.

 

PLAYER TEXTCOLOR: Mit den RED, GREEN und BLUE Eingabefeldern wird die Textfarbe der Playerdialoge bestimmt.

 

ENTITY TEXTCOLOR: das gleiche wie beim Player, jeder Entity kann eine eigene Farbe gegeben werden.

 

ACTUALY ENTITY INPUT/OUTPUT: ein graues Feld. Hier stehen Zahlen zur Information, die aber nicht durch einschreiben geändert werden können. Actualy Entity bedeutet, das die gerade bearbeitete Entity gemeint ist. Der Inputwert einer jeden Entity beginnt immer mit 1, was gleichzusetzen ist mit dem 1. Dialog. Der Outputwert ist hier immer +1 vom Inputwert. Das bedeutet beim nächsten Treffen von Player und NPC, ist der Wert nicht mehr 1 sondern 2. Es wird also Dialog 2 abgespielt u.s.w.

 

ANOTHER ENTITY INPUT/ENTITYNUMBER: Hiermit ist es möglich aus linearen Dialogfolgen interaktive Dialoge zu gestalten. Unter Input wird die nächste Dialognummer eingeschrieben für diejenige Entity die ihr daneben einschreibt. Das kann die gleiche Entity sein die ihr gerade bearbeitet oder eine andere. Wollt ihr mehrere Entitys gleichzeitig ändern so ist das innerhalb des Editors nicht möglich. Aber mit Hilfe eines wirklich kurzen Scripts kann jeder beliebige Dialog einer/mehrerer/aller Entitys angezeigt werden. Im Kapitel "interaktive Dialoge" Seite 3 findet ihr mehrere Beispiele dazu.

 

TEMPO: Texttempo von 0-9, für die Geschwindigkeit der Texteffekte. Nach jeder Änderung muß der Savebutton gedrückt werden wenn anschliessend die Änderung im Testraum gecheckt werden soll !

 

EFFECT:

0 = kein Effekt, Text erscheint komplett in der Textbox

 

1 = scroll Text, klingt besser als es aussieht, A6 ist meines Wissens zur Zeit nicht in der Lage       einen TTF Text in einem Fenster scrollen zu lassen

 

2 = Schreibmaschine, Text erscheint Buchstabe für Buchstabe inklusive .wav Ton

 

3 = Text blinkt, Text erscheint und verschwindet im Wechsel.

 

4=  Text wechselt Farben wie ein Regenbogen

Nach jeder Änderung muß der Savebutton gedrückt werden wenn anschliessend die Änderung im Testraum gecheckt werden soll !

 

AUTONAME: Falls einem Dialogpart jeweils der Namen des Players oder des NPC vorangestellt werden soll                         kann dieser Button gedrückt werden. Nach Eingabe von Text in der Textbox erscheint dieser                         dann in der ersten Zeile. Auch dieser Button wird nach verlassen des Editors nicht abgespeichert                         und ist somit bei jedem Start ausgeschalten.

 

DIALOGSTARTER PLAYER ENTITY: Um einen neuen Dialog zu beginnen muß hier ausgewählt werden wer diesen beginnen soll. Ist die Auswahl getroffen und ein erster Dialogpart erstellt kann immer nur noch der jeweils andere der beiden Button angeschalten werden. Hier wird das Prinzip dieses Editors deutlich. Ein Dialog wechselt immer zwischen Player und Entity hin und her. In jedem Dialog muß neu entschieden werden wer beginnen soll. Bitte nicht vergessen! Es können auch Monologe e.t.c. geschrieben werden. Das wäre dann einfach ein einziger langer Dialogteil.

 

DIALOGPART DELETE: Wie am Anfang schon kurz erwähnt habe ich es nicht geschafft einen einigermaßen ordentlichen Texteditor mit Hilfe der "inkey" Funktion zu erstellen. Die Programmierung in einer anderen Umgebung wäre da natürlich besser gewesen, aber leider kann ich nur 3DGS wdl  :( .  Um überhaupt einen Teil des Textes ändern zu können gibt es diesen Button. Damit wird ein kompletter Dialogpart gelöscht!!! Danach erscheint sofort wieder der Eingabecursor und der Part muß neu geschrieben werden. Ein herausnehmen von Dialogparts und ganzer Dialoge ist nachträglich nicht möglich. Das ist leider die einzige Art in diesem Programm Text zu editieren. Aber es ist zusätzlich möglich mit Hilfe eines anderen Texteditors die"entXXX.dat" Dateien zu editieren!

 

DIALOG SAVE: Bevor zum nächsten Dialog oder Entity gewechselt werden kann muß der Dialog gesichert werden. Hiermit wird eine entXXX.dat Datei erzeugt.

 

CHANGED DIALOG SAVE: Dialoge die durch löschen (DIALOGPART DELETE) verändert wurden müssen hier abgespeichert werden. Ein nochmaliges speichern mit DIALOG SAVE kann dann entfallen.

 

TESTROOM PREVIEW: Hier geht es zum Testraum, dem zweiten Teil des NPC Editors

 

DIALOG: hier steht die aktuelle Dialognummer, mit den Pfeilbuttons daneben wird ein neuer angewählt oder vorhandene durchgeblättert.

 

DIALOGPART: hier steht der aktuelle Dialogpart des aktuellen Dialoges. Hier kann nur zwischen vorhandenen Dialogparts geblättert werden. Ein neuer Part wird durch das anklicken von Player- oder Entitybutton (DIALOGSTARTER PLAYER ENTITY) eröffnet!

 

ENTITYSKILL: Jede Entity hat 48 vorgegebene Skills zur Verfügung. Einer davon wird für die Dialogprogrammierung benötigt! Der Inhalt dieses Skills ist gleichbedeutend mit der Entitynummer und der entXXX.dat Zahl! Meiner Meinung nach hat beim Aufbau einer Spielverwaltung (Inventory,Kampf,Dialoge u.a.) die individuelle Nummer einer jeden Entity im Game eine herausragende Stellung. Deshalb enthält in meinem Projekt der SKILL 01 diese Zahl. Der Player hat bei mir z.B. die "0" und dann weiter jede Entity 1..2..100...300 u.s.w. Da viele User jedoch andere Systeme haben und bei ihnen viele Skills schon belegt sind kann hier eine Auswahl getroffen werden. Die Inhalte für die ersten 20 Skills können jeder Entity im WED zugewiesen werden. Wird ein höherer genommen muß die Zuweisung über ein Script erfolgen.

 

ENTITY: die aktuelle Entitynummer, diese Nummer beginnt immer mit 1 und wird dann beim nächsten NPC um 1 erhöht. Es ist nicht möglich z.B. Dialoge für NPC 002 zu erstellen und den nächste NPC 256 zu benennen! Es gibt auch Probleme mit dem Editor wenn ihe 50 Dialogdateien erstellt habt und ihr dann diejenigen im Windowsexplorer löscht, die ihr aus irgendwelchen Gründen doch nicht benötigt. Lasst die Dateien einfach solange bestehen bis das Projekt beendet ist. Der Editor bringt Fehler wenn es Lücken in der Reihenfolge der Dialogdateien gibt.

 

+ 10 - sind eine Reihe Dialogdateien erstellt, wird es mühsam mit den Pfeilbuttons um jeweils + oder -1 zur nächsten Entity zu wechseln. Wird dieser Button angeschalten wechseln die darunterliegenden Pfeilbuttons um + oder - 10 Entitys.  Achtung! Es gibt ein kleines Problem wenn + 10 - Button an ist, nach oben geschalten wird (also 10 Entitydateien weiter) und diese nicht vorhanden ist. Zur Abhilfe +10- Button ausschalten, dann mit Pfeiltaste nach unten eine Entity zurück und abschliessen mit Pfeiltaste nach oben Entitys einzeln hochschalten.

 

ENTITYNAME: Eingabe eines Entitynamens. Der Name wird mit der entXXX.dat Datei abgespeichert. Der Grund dafür ist das dadurch ein schnelleres Erkennen bei öffnen der Datei möglich ist.

 

B   W  Black and White. wechselt Farbe der Textbox zwischen schwarz und weiß zur besseren Erkennung des Textes.

 

LINES: legt die Anzahl der Textzeilen innerhalb der Textbox fest,  die Textboxöffnung verschiebt sich bei jedem Klick um eine Zeile hoch oder runter. Die Zeilenhöhe ist immer gleich der gewählten TrueTypeFont Schrifthöhe. Achtung!!! Diese Anzahl kann ausschliesslich vor dem ersten eingegebenen Text geändert werden. Danach nie wieder in einem Projekt. Deshalb ist es ratsam mit Hilfe von ein paar wenigen Dialogfiles erst mal im Game zu testen wie die Größe der Textbox beschaffen sein muß! Werden die "diabasic.wdl" und die "entXXX.dat" Dateien gelöscht oder ausgeschnitten, startet der NPC Editor komplett neu. Dann kann die Textzeilenzahl wieder neu bestimmt werden.

 

SIZE H/V: legt die Breite der Textbox fest. Hier kann immer gewechselt werden. Nach einer Änderung wird die nächste Texteingabe an den neuen linken Rand gesetzt. Wird Text eingeschrieben gibt es bei erreichen des rechten Textboxrandes keinen Zeilenumbruch. Er dient lediglich als Markierung. Die Zahlen im Feld geben die Größe der Textbox in Pixeln an. Diese Größe merkt man sich um dann mit einem Grafikprogramm eine passende Texthintergrundbitmap zu erstellen. Diesem Paket liegt eine "textback.pcx" bei, mit den maximal Maßen der Textbox. Die von euch erstellten Bitmaps müssen den Namen "textback.pcx" haben!

 

TEXTBOX: Hier wird der Text eingeschrieben. Bevor das möglich ist muß sie beim ersten Start mit Hilfe der Pfeilbuttons links daneben erst mal geöffnet werden. (Daran denken das die LINES anzahl nach dem ersten einschreiben festgelegt ist.) Desweiteren muß erst ein Entityname eingeschrieben. Dann noch wer den ersten Dialog beginnen soll. Jetzt kann eingeschrieben werden. Ein Mausklick in die Textbox bringt den Eingabecursor zum Vorschein. Die erste Zeile wird eingeschrieben. ENTER drücken. Mauscursor erscheint wieder. Klick erneut in die Textbox für die nächste Zeile u.s.w. Ist der Text länger als die Textbox hoch ist, beginnt der Text wieder oben am Anfang. Solange die Entertaste nicht gedrückt ist und ihr beim eingeben einer Textzeile seid kann noch editiert werden. Danach gibt es nur noch das löschen und neu schreiben des ganzen Dialogparts oder editieren außerhalb des NPC Editors.

Mit den Pfeilbuttons rechts neben der Textbox kann dieser gescrollt werden falls er länger als die Textbox ist. Auch hier gibt es noch ein Problem, das zu beheben ist. Sobald nicht alle Linien der Textbox beschrieben werden und nach dem speichern DIALOG SAVE mit der UpPfeiltaste bis zum Ende des Dialogparts gescrollt wird, kommt der Ablauf dieses Dialogparts etwas durcheinander. Abhilfe schafft hier, wenn möglich, kurz einen anderen Dialogpart anzuwählen, dann zurück in den der gescrollt werden sollte. Nun funktioniert die UpPfeiltaste.

ACHTUNG SEHR WICHTIG!!! In den anderen Eingabefeldern wird die Gültigkeit der Eingaben überprüft. Nicht aber hier bei der Textbox. Der Aufwand dafür erschien mir doch zu hoch. Folgende Zeichen dürfen nicht für den Text verwendet werden.  (  )  [   ]   {   }   |

 

Testraum

 

 

Im Testraum werden Lage und Eigenschaft des Texthintergrundes festgelegt. Außerdem erfolgt hier noch die Einstellung der drei Scanwerte für den Player. Über eine Auswahlliste können maximal 10 NPC's gleichzeitig im Raum plaziert werden um ihre Dialoge zu testen. Wird dieser Raum nicht besucht und keinerlei Einstellungen getroffen stehen in der "diabasic.wdl" nur die Startwerte für den Texthintergrund! Sobald der Raum betreten wird werden alle vorhandenen entXXX.dat Dateien geladen um ihre Nummer und den Entitynamen zu speichern. Bei einer großen Anzahl von Dateien kann das etwas dauern.

 

BACK: Hier geht es zurück zum Editor.

 

CHOICE: das Auswahlfenster für maximal 10 Entitys. Sind Dateien vorhanden stehen ihre Nummer und Entityname in der Liste. Mit den Pfeiltasten kann diese gescrollt werden. Zur Auswahl eines NPC einfach mit der Maus darauf klicken. Er wird daraufhin farbig markiert. Ein weiterer Klick wählt ihn wieder ab. Auf diese Weise könnt ihr die passenden Entitygruppen zusammenstellen.

Sobald ihr mit einem Klick auf CHOICE die Liste verschwinden lasst, werden die gewählten NPC Dummys in einem Kreis um den Player gestellt.

Hinweis: Verlasst ihr den Testraum in den Editor und kehrt zu ihm zurück müßt ihr die CHOICE Liste einmal öffnen und schliessen, damit die noch ausgewählten Dummys neu erstellt werden.

Wird das Programm verlassen und ihr betretet das nächste mal den Testraum muß die Auswahl komplett neu erfolgen.

 

MAX. 10 in diesem Fenster wird angezeigt wieviele NPC Dummys noch ausgewählt werden können bis maximal 10 erreicht sind.

 

SCANED ENTITY: nähert sich der Playerdummy einem NPC auf Scanweite, erscheint Nummer und Name des gescannten Dummys in diesem Fenster.

 

SCAN: hier wird der Scanbereich des Players eingestellt. hor.scan und vert.scan sind Winkel. 360° scannt um den Player als Kugel herum. hor.scan = 180° würde z.B. nur vor dem Player scannen. Der Scanradius ist in Quants angegeben und ist gleich der Entfernung zwischen Player und Entity. Die Werte können in Echtzeit geändert werden. Damit ist ein genaues Arbeiten möglich.

Hinweis: Habt ihr bereits Scanfunktionen eingebaut und weichen die Scanwerte von denen hier ab um z.B. Entitys über größere Entfernungen zu finden müßt ihr selber Wege finden das anzupassen.

 

TEXTPOS.: die Position der Texthintergrundbitmap + des Textes selber kann mit den vier Richtungspfeilen unter move textbox festgelegt werden. Ein Klick in den mittleren Button zentriert das ganze wieder in der Bildmitte. Außerdem kann ausschlieslich der Text mit den textoffset Buttons zum Textboxhintergrund justiert werden.

Hinweis: Editor und Testraum sind absichtlich nur mit einer Bildauflösung von 1024 x 768 zu handhaben. Der Grund liegt darin das der Text bei jeder Bildschirmauflösung gleich groß bleibt. Somit ist gewährleistet das die Textbox und der Text von kleinen bis großen Auflösungen erstellbar ist.

ACHTUNG! Die Anpassung der Textposition an andere Auflösungen muß später manuell erfolgen, indem in der "diabasic.wdl" DIABOXPOS_X und DIABOXPOS_Y geändert werden! Also wundert euch nicht wenn der Text in euerem Game einfach nicht zu sehen ist. Vielleicht liegt er ja nur außerhalb des Bildschirms! Die Werte von DIABOXOFF_X und DIABOXOFF_Y hingegen bleiben bei jeder Auflösung gleich.

 

STARTTYP: mit STARTTYP kann festgelegt werden mit welcher Taste/Maustaste/Joystickbutton die Dialoge gestartet werden. Ist STARTTYP = 0 ausgewählt beginnt der Dialog automatisch sobald der Player in den Scanbereich des NPC kommt egal wer den Dialog beginnt.

 

Ist der Button auto. if Entity start zusätzlich gedrückt, beginnt der NPC automatisch mit dem Gespräch wenn er den Dialog beginnt. Bei STARTTYP = 0 ist das natürlich überflüssig.

 

FLAGS: die Einstellungen für das Texthintergrundbitmap (nicht für den Text!)

 

TIPP: Wurde ein kleiner Wert bei Effecttempo gewählt kann es bei längerem Text und gewähltem Typwriter oder Scrolleffekt sehr lange dauern bis der Dialog fertig angezeigt wird. Du kannst den Dialog dann mit der "B" Taste unterbrechen.

 

3