Technik / Diary

Forum für das was nicht direkt Fate betrifft. Aber dennoch irgendwie hier hin gehört. z. B. reLINE
Biing!2 Download-Dateien

Moderatoren: Xajorkith, erni, Asgard

Benutzeravatar
darklord
Ritter/Amazone
Ritter/Amazone
Beiträge: 588
Registriert: Mi 18.07.2001 - 14:05
Wohnort: Tower Tangramayne, links von New Magincia
Kontaktdaten:

Beitrag von darklord »

Freude, Freude!
Das Inventory ist jetzt größtenteils vom hard-coding entfernt, ich hab jetzt an/ablegen, hinzufügen und entfernen von items zum Inventar/Equipment einer Person komplett in "offiziellen" Funktionen implementiert.
Die Programmsteuerung wird auch immer besser. Das Programm wird über "Event-Messages" gesteuert, also irgend ein Teil des Programms teilt dem Hauptobjekt mit "jetzt bitte dies oder das machen" - was schon gut war, besonders für die Menü-Buttons am Rande, die damit extrem einfach und flexibel zu machen sind. Das bedeutete allerdings auch, das das Hauptprogramm im Prinzip ALLES zu erledigen hat. Ich hab aber einen eleganten Weg gefunden, das zu beugen, jetzt können Unterroutinen die für sie bestimmten Messages direkt selbst verarbeiten und die Hauptschleife des Programms wird etwas entlastet.
Das Equipment-"Handling" ist, streng nach dem Vorbild, recht spartanisch. Außer an/ablegen, wegwerfen, deponieren, benutzen und betrachten ist nichts geplant. Unterschiedliche Pfeile zu verwenden wollt ich mir eigentlich sparen, wär aber kein großer Aufwand, das zu machen. Geplant sind eigentlich nur 3 Klassen von Munition: Pfeile (Armbrüste und Bögen), Patronen (Schußwaffen) und Kristallsplitter (Magieschleudern). Man kann da aber leicht Untergruppen mit unterschiedlichen Werten einrichten. Ich selbst meine aber, das reicht eigentlich.
Bevor es jetzt richtig weitergeht, muß ich doch mal die Liste der Skills abarbeiten und zumindest die Gesamtzahl der Skills festlegen, die es überhaupt gibt. Danach kann ich nämlich an so Sachen wie Gespräche und Kämpfe machen ( Gier! Lechz!). Die genauen Wirkungen der Skills sind erstmal nicht so wichtig, hauptsache, sie sind da.
Benutzeravatar
darklord
Ritter/Amazone
Ritter/Amazone
Beiträge: 588
Registriert: Mi 18.07.2001 - 14:05
Wohnort: Tower Tangramayne, links von New Magincia
Kontaktdaten:

Beitrag von darklord »

So sehen jetzt die neuen Screens aus:

Die Equipment-Seite mit Ausrüstung und dem Inhalt des Rucksacks
Bild

und die Info Seite eines Gegenstandes
Bild

Der rote Klecks im oberen Bild ist übrigens der neue "Active Party Member" Indikator und liegt immer auf dem Char, der gerade als aktiv angewählt ist und wessen Werte im Zweifelsfall gerade benutzt werden.
Benutzeravatar
darklord
Ritter/Amazone
Ritter/Amazone
Beiträge: 588
Registriert: Mi 18.07.2001 - 14:05
Wohnort: Tower Tangramayne, links von New Magincia
Kontaktdaten:

Beitrag von darklord »

Und zwischendurch immer mal wieder etwas Kosmetik:
Wenn man einen Gegenstand innerhalb der Party übergeben will, kann man jetzt auch die Charakter-Box oben anklicken. Der Handel wird dann nicht mehr abgebrochen und auf den anderen Char umgeschaltet. Jetzt landet der Gegenstand im Inventar des Chars in der Box und man bleibt im aktuellen Ausrüstungsmenü. So ist's viel bequemer. Allerdings kann man nicht mit den Nummerntasten übergeben, dann springt man noch ins andere Inventarmenü - was auch so bleibt. Per Tastatur hat man ja die Button-Tasten (F1 bis F12) und so hat man noch eine bequeme möglichkeit schnell einen Handel abzubrechen.

Diese Methode, die ich eingebaut habe ist recht intelligent - wird automatisch jedesmal angewendet, wenn man aufgefordert wird, einen Char der Party auszuwählen. Das ist das Praktische an zentral verwalteten Menüs.
Der Nachteil ist natürlich, das jedes Menü Rücksicht auf die verschiedenen Zustände anderer Menüs nehmen muß. Ich muß zum Beispiel in jedem Menü, das im Kampf im Einsatz kommt verhindern, daß der User den Aktiven Char selbst wählen kann usw.
Benutzeravatar
darklord
Ritter/Amazone
Ritter/Amazone
Beiträge: 588
Registriert: Mi 18.07.2001 - 14:05
Wohnort: Tower Tangramayne, links von New Magincia
Kontaktdaten:

Beitrag von darklord »

Nicht wirklich eine Neuigkeit, aber doch irgendwie interessant.
Mir ist gerade aufgefallen, um wieviel umständlicher modernere Programme werden müssen. Zum Beispiel das Kampf-System bei Second Dawn.
Früher, in prozeduraler Programmierweise ( herkömmlich C, Assembler, Basic) bestünde das Kampfsystem in der Hauptsache aus einer Programmschleife, die das Programm so lange nicht verläßt, wie noch gekämpft wird. In der Schleife würde ein Zug abgewickelt, dargestellt, angemessen lang gewartet und mit dem nächsten Kämpfer fortgefahren, bis keine Kämpfer mehr übrig sind.
Jetzt, im Objekt-Orientierter bzw. Hybrid-Programmierweise und DirectX muß anders gearbeitet werden. Ich kann zum Beispiel nicht innerhalb eine Schleife wiederholt den Bildschirm vollschreiben und wieder löschen. Da die Grafik in einer Flip-Chain liegt (d.h. ein Bildschirm wird aufgebaut, während der andere dargestellt wird, dann wird gewechselt), werden alle Grafiken erst sichtbar, wenn die Render-Loop zu Ende geht. Ich muß also eus meiner Routine raus, damit man was sehen kann. Außerhalb der Render-Loop kann ich die Routine nicht laufen lassen, da ich sonst nicht einfach beliebig Grafiken erzeugen und darstellen kann, nicht ohne horrenden Aufwand zu betreiben.
So wird meine Kampf-Routine in jeder Frame angesprungen, stellt den Kampf in seiner aktuellen Phase dar und führt immer dann einen Zug aus, wenn der entsprechende Timer ausgelöst hat.

Das hat aber auch Vorteile. Dieser Rundenbasierte Kampf ist hier nur deshalb rundenbasiert, weil, sobald ein Partymember an der Reihe ist, die Spielzeit angehalten wird und man erst dann den Combat-Timer weiterlaufen läßt, wenn der Spieler den Zug eingegeben hat. Nimmt man diese Pause-Funktion raus, hat man ein Echtzeit-Kampfsystem.
Antworten

Zurück zu „Biing!2 und Anderes“