Mode X und EGA Parrallax

  • Das BIOS hat meistens 8x8, 8x14 und 8x16 Zeichensätze für dich im Angebot, aber 8x14 fehlt inzwischen manchmal. Die kann man auch im Grafikmodus zugreifen, aber in Mode X muss man sich selbst darum kümmern, sie aufs Bild zu malen. Ob man den BIOS-Zeichensatz mag, ist die andere Frage, eigenes Design bietet eigene Chancen, sich künstlerisch auszuleben, oder andere Dimensionen zu wählen ;) In DOS gibt es über DISPLAY auch die Möglichkeit, eigene Zeichensätze je nach Sprache und Umlaut-Mix zu verwalten, gerade für FreeDOS DISPLAY gibt es Zeichensätze für ziemlich viele verschiedene Codepages.

  • Ich kome nicht drum herum einen einfachen Editor zu basteln, womit ich den Zeichensatz händisch komplett überarbeite.

    Alles andere gefällt mir irgendwie nicht.

    Am liebsten wäre mir sowieso ein Schriftsatz wo die Zeichen unterschiedlich breit sind.

    sowas hatte ich schonmal gemacht, ist ca. 20 Jahre her unter QBasic.


    Ich denke ich werde das hie rauhc umsetzen, weil es einfach schicker ist.

    Wärend der Dialoge werde ich das Spiel sowieso unterbrechen, damit im Hintergrund nicht irgendwas ungewolltes passiert.

  • Proportionalschrift nennt sich das. Viel Spaß bei der Implemetierung. Ist für Deutsch sogar halbwegs übersichtlich. Habe ich vor vieeeeelen Jahren auch mal handgeklöppelt.

    root42 auf YouTube


    80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, GUSar Lite & TNDY & SnarkBarker, PC MIDI Card + SC55 + MT-32, XT CF Lite, OSSC 1.6

  • Ist für Deutsch sogar halbwegs übersichtlich.

    Warum ist das von der Sprache abhänig? Es ist doch nur der Zeichensatz?

    386SX- 20 Mhz "Erster eigener Rechner!2" NoName Komponenten

    486DX -30 "Industrie PC" auf Steckkarte

    Super Sockel 7 Gigabyte GA-5AA 3Dfx Voodoo 3500 TV

    AMD "Geode" ebenfalls Steckkarte für Backplane

    3x IBM Netvista 8364 "ThinRetroSystem" 1-2 von denen würde ich tauschen...


    "und noch so einiges mehr... "

  • "Die Geschichte der Codepages ist eine Geschichte voller Missverständnisse" ;) Es gibt total viele davon, teilweise sind gewachsene Codepages in einem Land beliebter als die eigentlich offiziellen für das Land und wer wann wo welche Sonderzeichen und Umlaute im Zeichensatz hat sorgt immer wieder für unterhaltsame Darstellungsfehler in verschiedenen DOS Programmen, zum Beispiel, wenn irgendwelche Rahmen- oder Rastergrafik-Zeichen in Codepages Akzent-reicher Sprachen keinen Platz mehr hatten. Die paar Umlaute im Deutschen sind da im Vergleich tatsächlich noch überschaubar.

  • Bin noch was am experimentieren mit den Dialogen.


    Dialoge mit NPC's startet man jetzt einfach in deren Nähe (16Pixel überschneidung!) über die Tab Taste.

    Der Rechner ladet die ID des NPC's und sucht sich die Dialoge raus die freigeschaltet sind und man kann anfangen mit dem zu brabbeln.


    Name und später Bild werden dann über dem eigentlichen Dialo klein angezeigt.

    Das ganze spielt sich im unteren 1/4 des Bildschirms ab, dadurch verdeckt der Dialog nicht zu viel vom Bild.


    Wärend eines Dialogs wird der Rest des spiels unterbrochen, damit man nicht ungewollt von anderen NPC's belästigt oder angegriffen wird... es gibt genug Spiele bei denen das passiert und es stört eigentlich nur den Spielablauf.


  • es ist immer etwas schwierig ab zu schätzen wie viele NPC's in so einem spiel jetzt Dialoge benötigen.

    einerseits möchte man die Welt natürlich möglichst lebendig gestalten und Interaktionen mit möglichst vielen "Bewohnern" ermöglichen.

    Andererseits hängt man in einem Dauerkampf mit den Ressourcen bei diesen alten Rechnern.


    Bin jetzt am überlegen wie ich die Dialoge abarbeite, alles in den Speicher laden ist natürlich danach immer schön schnell, hat aber den Nachteil das es wieder sehr viel Speicher frisst.

    Bei den Haupt Charakteren sind die Dialoge ja ziemlich groß ...10kb sind da nicht viel und ich habe noch ca. 80kb RAM zur Verfügung! ...wovon ich davon ausgehe ca. 64KB für Sound Effekte sollte ich erstmal sperren.

    Also 10kb ist die Obergrenze für alles weitere.


    Überlegung ist dann, die Dialoge bei Verwendung zu laden. Wählt man einen neuen Menüpunkt im Dialog... wird ebenfalls immer wieder die Datei neu durchsucht.

    Bei NPC mit kurzen Dialogen sollte man das laden kaum bemerken.

    Und bei NPC mit extrem aufwändigen Dialogen, ist es sowieso nicht anders möglich, weil der Speicher nicht reicht.




    Dialoge werden immer nur kurz geladen wenn man mit den NPC's interagiert, Fortschritte und Änderungen in den Dialogen müssen wiederum im "Savegame" hinterlegt werden.


    Ich denke es geht am schnellsten wenn ich für jeden NPC eine Dialog Datei anlege, da sollte das laden schneller gehen wie wenn man alles zu einer zusammen legt.

    Und wenn Fehler auftauchen bei der Entwicklung, zerlegt man sich nicht gleich das komplette System.

  • Ich finde auch, dass die Dialoge nicht geschwindigkeitskritisch sind. Ansonsten könnte man auch weniger Sprites im RAM halten. Über die Abstraktion mit getsprite ist man da flexibler und du hattest bereits EMS als Sprite- und Textur-Cache ins Spiel gebracht.

  • Dateistruktur steht erstmal.


    //Datei Struktur je ein Byte gefolgt von 40Byte Zeichen Text!

    //

    //Art /Typ | Identifizierer-Nummer | Zielblock | Freigabe/Sonder!




    //1.Zeichen


    //I = Intro allgemein


    //P = m”glicher Dialog (Numeriert nach Zufall wird ausgew„hlt!)

    //B = Fester dialog Text am Block Anfang


    //Q = Fragen (mit Nummer = Ziel Block!)

    //S = Sprungmarke wenn keine Fragen vorhanden


    //E = Programm Befehl Enable spezielle Dialoge! wird gespeichert!

    //D = Programm Befehl Disable spezielle Dialoge! wird gespeichert!




    //4.Zeichen


    //Nummer Spezielle welche freigegeben oder gesperrt werden vom Questsystem!




    //Beispiele Einfache Dialoge


    //I 1 _ _ >Into Text 1<

    //1 2 _ _ >Into Text 2<


    //B 0 _ _ Block_0_Text 1.Zeile

    //B 0 _ _ Block_0_Text 2.Zeile


    //Q 0 1 _ Block_0_Frage 1 (springt danach zu Block 1)


    //S 0 1 _ Block_0_Sprungmarke springt zu block 1



    //A 0 ? _ Eine Antwort in Block 0



    //? ? ? 1 4. Char Nummern nur mit Freigabe verfgbar! NPC_NR + Block_Nummer



    //Beispiel Funktionen (Quests/Dialoge freigeben / sperren!)


    //E 0 ? 1 E=Enable Block 1 >> wird in Savegame hinterlegt!

    //D 0 ? 1 D=Disable Block 1 >> wird in Savegame hinterlegt!

  • nächster Anlauf gleiches Problem...


    Habe jetzt einen Dialog Editor welcher einen grossteil der Arbeit abnehmen soll (muss!!!!)


    Der Aufbau ist wie folgt.

    Es gibt 64 Dialog Blöcke / jeder Dialogblock hat 16 zeilen.



    Wenn mann einen NPC anquaselt wird die Dialo Datei geladen und es wird Block 1 gesucht und abgearbeitet.


    Anfangen kann das ganze mit

    -Feste Texte (limit sind immer 40 Zeichen x 16 zeilen!)

    -Random Texte wo man mehrere Möglichkeiten vorgibt, welche aber nach zufall ausgewählt werden vom System!

    -Funktionen zum sperren und freischalten von ID-Nummern.


    ist dieser 1. teil erledigt kann es wie folgt weiter gehen.


    -ENDE des Blocks, Dialog ist beendet

    -Sprung in anderen Block fest vorgegeben>> es wird fest in einen anderen Block gewechselt ohne eine Auswahl!

    -Sprung in anderen Block als Auswahl Menü >> Menüpunkte können hier z.B. fragen oder Quest Punkte sein. >> nach Auswahl wird der Zielblock geladen


    -Menüpunkte können auch gesperrt und freigegeben werden indem man über aufgerufene Blöcke ID-Nummern sperrt oder frei gibt >> das ist eine der grundlegenden Funktionen um Questreihen über Dialoge zu steuern!



    Momentan schaut der Editor wie folgt aus.


    Hier ist der Startblock 0 ausgewählt >>

    Zeile 0 hat einen >T< Text "Hallo"


    Zeile 1 und 2 sind >M< Menü Punkte "Fragen"


    Die 1. Frage "Wo kann ich einen Händler finden" als ziel ist Block 1 gesetzt

    Die 2. Frage "Wo kann ich einen Rastplatz finden" als Ziel ist Block 2 gesetzt

    In Block 1 / 2 können jetzt die entsprechenden Dialoge fortgesetzt werden.


    Ich denke das System sollte es relativ einfach machen Konversationen mit NPC's zu erstellen.

  • Also ich würde bei Dialogen keine festen Anzahlen und Textlängen festlegen. Dialoge sind ja nicht Geschwindigkeits-kritisch, also kann eine Dialog-Engine in Ruhe die passenden Stellen auch an krummen Orten in der Dialogdatei rauskramen, das spart Platten- bzw. Speicherplatz und bietet Flexibilität. Auch wenn natürlich der Platz für Text im Bild eine natürliche feste Obergrenze hat.


    Du könntest mal in Gedanken oder auf dem Papier ausprobieren, welche der Logik-Funktionen mit welcher Flexibilität benötigt werden. Rein theoretisch könntest du sogar eine universelle Sprache wie Lua implementieren, aber bedingte und unbedingte Sprünge und maskieren/sperren von Optionen wie du es jetzt hast klingen schon mal sehr praktisch. Frohes Schaffen weiterhin :)

  • Der Text wird als 40byte Blöcke gespeichert, aber nur gefüllte Blöcke werden gespeichert.

    Hat ein NPC also nur einen Satz zu sagen so besteht die Datei aus 1x Block Byte 1xSteuer byte 1x Ziel byte 1xID byte 40xText byte =44 byte.


    Wenn 256 NPC's je 50 Zeilen Text Dialog haben benötigt man knapp 600kb auf dem Datenträger, ich denke das ist überschaubar.

    ..Denke eher das es weniger Dialog wird.

  • So langsam kannst du Miete kassieren...

    386SX- 20 Mhz "Erster eigener Rechner!2" NoName Komponenten

    486DX -30 "Industrie PC" auf Steckkarte

    Super Sockel 7 Gigabyte GA-5AA 3Dfx Voodoo 3500 TV

    AMD "Geode" ebenfalls Steckkarte für Backplane

    3x IBM Netvista 8364 "ThinRetroSystem" 1-2 von denen würde ich tauschen...


    "und noch so einiges mehr... "

  • Die ersten 2 NPC's können jetzt angequasellt werden.


    Das Programm kann im aktuellen Programmstand 256 NPC's unterscheiden und Dialoge für diese verarbeiten.


    Derzeit gibt es aber erst 2 Test Probanden.


    Luna und Kevin der 2. ...1 ist allein zuhause oder so...


    In der Dialog Datei wird zuerst der Name geladen und anschliessen der erste Dialog Block = Block0


    In diesem befindet sich ein Testtext... es sind momentan 4 Zeilen bei den beiden, die sind noch nicht so gesprächig.

    Angezeigt werden können immer 3 Zeilen auf einmal untereinander.

    Nach dem füllen jeder 3. Zeile pausiert der Dialog bis man "Leertaste" drückt.


    Nach drücken der Leertaste wird der bereich geleert und es werden die nächsten 3 Zeilen geladen ... bis nichts mehr da ist.


    Danach sollen Routinen für Fragen oder Sprünge abgearbeitet werden... comming soon.



Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!