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: erni, Xajorkith, Asgard, erni, Xajorkith, 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 »

:))
Da kann man mal sehen!
Struktogramme zeichnen kann sehr hilfreich sein!
:))

Nachdem ich bisher etwas ratlos war, wie ich weiter vorgehen sollte, hab' ich einfach mal die zentralen Objekte im MapView-Programm struktographiert - und siehe da, mir fielen gleich zwei Dinge auf:
zum Einen, wo ich noch etwas überflüssiges streichen kann bzw. welche Elemente bisher falsch placiert waren und in anderen Code-Teilen besser aufgehoben sind...
zum Anderen, wie und wo ich die weitere Arbeit ansetzen kann und muß.

Ich werde wohl doch keine 2 Programme schreiben, 1 als Map-Editor, das andere als Spiel. Ich baue wohl eher MapView auch als Game.exe aus und entscheide anschließend, ob weitere externe Tools zum Erstellen der Szenarien her müssen.
Im Prinzip schwebt mir ja so eine Art Definitions-Sprache vor. So was ist immer viel transparenter als Editor-Tools.

Nachdem das Sound- und Musikthema ja auch vom Tisch ist, kann man sagen, daß es recht gut voran geht.
Diplomacy is the art of telling some-one to go to hell and he is happy to be on his way.
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 »

Ich mach hier mal 'n kleines Update, weil in der HP noch mächtig der Wurm drin ist (und ich außerdem wenig Zeit dafür habe, man muß Prioritäten setzen!)

:winken:
Es geht heiter weiter!
Obwohl das grafische Subsystem wohl noch eine vollständige Überholung erfahren wird, arbeite ich erstmal weiter am Bereich Game Content. An der Grafik gäbe es ohnehin nur Optimierungen und Verbesserungen, das hat Zeit!

Die Struktur für den Game Content steht soweit fest. Die Kontrolle (oder Verantwortung, falls was schief läuft ;) ) hat ein globales Game Objekt. Dieses wird jedes Frame 1mal angesprungen und entscheidet, was in diesem Frame alle erledigt wird - je nach Timing.
Das Game-Objekt verwaltet alle dauerhaften Daten (Party, Weltkarte usw.) direkt und lädt bei Bedarf alle dynamischen (=wechselnde) Daten wie NPCs oder Gegner.
Das Spiel wird in Szenarien aufgeteilt, d.h. es wird separate Karten geben, die untereinander durch Reisepunkte vernetzt sind bzw. in die Weltkarte placiert sind.
Jawohl, die Weltkarte! Ganz nach dem Vorbild von Fallout gibt es eine (mehr oder weniger) flache Gesamtkarte für die Überlandreise. Ich bin da noch unschlüssig, ob sich der Aufwand lohnt, diese Karte auch 3-dimensional zu gestalten, oder ob es flach besser aussieht.
Detailgebiete in der Karte werden durch Icons bzw. Objekte dargestellt und können so betreten werden, was das jeweilige Scenario lädt und startet.
In einem Scenario werden NPCs, Gegner, Gegenstände und Assets verwaltet.
Gegenstände kann man aufsammeln, NPCs anquatschen, Assets benutzen und Gegner - naja, das übliche halt. Ich habe mich entschieden, zwischen NPCs und Gegnern zu Unterscheiden, weil es viele Dinge erleichtert, zum Beispiel die Zielsuche im Kampf. Es gibt viele Dinge, die sich entweder auf NPCs oder auf Gegner auswirken, da habe ich dann eine optimale Eingrenzung des Suchgebiets allein durch die Speicherung erreicht.
Das zweite große Gebiet ist die Verwaltung von Inventar, bei NPCs, Gegnern und PCs. Aber da habe ich mir was nettes überlegt. Okay, ich habe schlau abgeguckt bei Morrowind. Das Inventar zerfällt in einige Prototypen, die von Datenstrukturen ergänzt werden, um den individuellen Gegenstand zu bilden. So kann ich mit geringem Aufwand, nämlich nur die 10 bis 20 Prototypen zu coden, tausende von verschiedenen Gegenständen realisieren.
Die Verwaltungsfunktionen des Game Objektes sind bereits in der Mache und die Basis für die Objektedatenbank existiert auch schon.

Bis bald
:respekt:
Diplomacy is the art of telling some-one to go to hell and he is happy to be on his way.
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 »

Die Tücken des Entwicklerlebens...
Ich habe gerade einen fundamentalen Fehler bzw. eine Lücke in meinem SceneDriver gefunden, der die 3D-Grafikelemente verarbeitet, der dazu führte, daß ich einmal hinzugefügte Objekte nicht mehr identifizieren kann und ggf. aus der Liste entfernen, wenn sie verschwinden sollen, andererseits hat er die ID-Nummern nicht hinterfragt und war darauf angewiesen, daß das übergeordnete System (in diesem Falle GameObject->MOBs->GCO->Model.Draw() korrekte, ernstgemeinte und einmalige ID-Nummern angibt, was er nicht tat.
Was allerdings erstaunlich gut funktioniert hat, ist die Einschränkung, bereits vergebene ID-Nummern nicht mit neuen Listeneinträgen zu verdoppeln, anstatt 100 Mal die selbe ID-Nummer einzutragen, wurde nur ein Objekt in die Liste eingefügt. Wenigstens etwas :)
Jetzt muß ich den SceneDriver nochmal bearbeiten und ihm die Aufgabe auferlegen, sich um gültige IDs zu kümmern.
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 »

Gesagt, getan. Hier ein Screenshot mit dem Ergebnis. Die schwarzen Statuen sind die standard Models für mich und in diesem speziellen Shot ist das Trickreiche:
Die Statuen sind Content-Objekte, die ich jetzt auch mit anderen Code verknüpfen kann, quasi Minimalformen von NPCs oder Creaturen.
Dateianhänge
MapView mit Content Manager und 100 Content-Objekten (die Statuen)
MapView mit Content Manager und 100 Content-Objekten (die Statuen)
MapView_ContentManager.jpg (162.28 KiB) 749 mal betrachtet
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 »

Willkommen in der DirectInput-Hölle :D

Zur Entspannung dacht ich mir die Tage, bring doch mal das Interfacemodul in Form. Schön ein bißchen Kosmetik für den Teil, der Tastatur und Maus abfragt und alles in die entsprechenden Subs vom Game-Modul packen.
denkste!
Seit drei Tagen kämpf ich jetzt mit DirectInput, bzw. damit, wie M$ den Müll handhaben will. Äußerst umständlich und Speicherverschwenderisch, muß ich sagen, aber ich hab keine Lust, mich damit tiefgreifend zu befassen, also dengel ich es soweit zurecht, bis es funzt, mehr nicht. Das ganze läßt sich leider auch gar nicht modularisieren, also müssen die meisten Funktionen noch im Framework-Code abgehandelt werden.
Das paßt mir zwar nicht, aber es hilft alles nichts.
Wenn ich die Wahl hätte, würde ich auf den Input-Mapper pfeifen. Dann kann man hinterher die Kontrollen zwar nicht mehr so chique selbst definieren, dafür aber läßt sich ein direkterer Programmcode für Tastatur und Maus leichter aufteilen und in die passenden Unterprogramme koppeln.
Steht ihr mal vor sowas, macht es auf jeden Fall selbst!
Diplomacy is the art of telling some-one to go to hell and he is happy to be on his way.
Benutzeravatar
erni
Moderator
Moderator
Beiträge: 2958
Registriert: Di 09.10.2001 - 19:06

Beitrag von erni »

Mal abwarten von wem wir zuerst eine Version erhalten werden, von dir oder von Olaf ;)
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 »

:D was krieg ich, wenn ich gewinne? Eine Bonusversion? Einen permanenten NPC in allen Fate 2 Versionen? lol
Ich tu, was ich kann, Leute!
Benutzeravatar
erni
Moderator
Moderator
Beiträge: 2958
Registriert: Di 09.10.2001 - 19:06

Beitrag von erni »

darklord hat geschrieben::D was krieg ich, wenn ich gewinne? Eine Bonusversion? Einen permanenten NPC in allen Fate 2 Versionen? lol
Ich tu, was ich kann, Leute!
Bonusversion??? Deine ??? :engel:
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, es ist vollbracht, das Grundsystem für das Interface steht. Tastatur und Maus werden zuverlässig abgefragt, die Hotkeys kann man selbst definieren.
Das Programm reagiert auf Mausklicks auf die Character-Slots und auf die Menü-Buttons. Die Menüs muß ich zwar noch programmieren, aber das dürfte eine reine Fleißaufgabe werden. Lediglich die Bewegung der Party macht mir noch Kopfzerbrechen. Man kann sich derzeit rotieren und es sind Funktionen für Vorwärts/Rückwärts angelegt.
Das allein ist nicht weiter problematisch, aber die Kollisionsabfrage mit der Umgebung ist noch strittig.
Benutzeravatar
mathias
Magier(in)
Magier(in)
Beiträge: 1238
Registriert: Fr 23.01.2004 - 15:02
Wohnort: Strausberg

Beitrag von mathias »

Du fängst die Neugier in mir zu wecken, mach mal weiter so. :top:

mathias
Merke: Was du nicht willst, was man dir tu, das füg auch keinem anderen zu.
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 »

Man läuft jetzt in die Richtung, in die man schaut, aber nur horizontal, nicht auf- und abwärts. Das wäre zwar kein Akt gewesen, aber man soll sich ja nur auf der Oberfläche bewegen.
Viel besser ist, der Stufenanstieg funktioniert jetzt und bringt auch die erwünschten Ergebnisse. Die Skills sind zwar nicht in der normalen Stufenerhöhung enthalten, sollen sie ja aber auch gar nicht. Da steigt nichts durch Level, nur durch Tickets bzw. Learning-by-Doing.
Ich kümmer mich jetzt erstmal um alle Charakterwerte und den zugehörigen Info-Screens.
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 »

Wieder ein kleiner Schritt vorwärts. Es gibt jetzt ein Message-System, mit dem ich automatisch in der Lauf-Ansicht Nachrichten auf den Screen schicken kann. Nix dolles, nur Mitteilungen und so, was gerade passiert ist. Das erleichtert das debuggen der internen Funktionen, wenn man nicht immer im Einzelschritt durchs Programm hecheln muß.
Die Nachrichten, die ich da rein setze kann ich auch genauso gut noch in eine Log-Datei schreiben.
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 »

Man sollte nicht meinen, das so ein bißchen Text im Programm so Problematisch werden kann. Naja, nach einem erfrischenden Kleinkrieg mit Strings in M$ Visual C++ benimmt sich der Kompiler wieder halbwegs normal. Man merke, erwarte niemals, daß sich ein Programm von M$ benimmt, wie es normal wäre, aber was soll's.

Zum psoitiven Teil: seit ich den Amoklauf durch diverse Speicherklassen beendet habe, verschwinden immer mehr Behelfsbaustellen aus dem Programmtext. Die Bildchen für den Party-Balken in der Adventure-Sicht und das große Portrait im Character Info Schirm werden jetzt als Variablen behandelt und beim Erschaffen des Chars festgelegt.
Daraus folgt natürlich, daß die Bilder dafür auch langsam hermüssen. Für die 33 Klassen, 19 Rassen und 2 Geschlechtern brauch ich 682 Character Images und ebensoviele Portraits - und das sind nur die Standardbilder! Es werden wahrscheinlich weit weniger, da ich ja weibliche Banshees, Feen und Nymphen ausklammern kann und auch andere Kombos wohl ausfallen.

Des weiteren funktioniert jetzt das Charakter-Object schon ziemlich weitgehend. Es sind alle Daten vorhanden, Charaktere werden von einer Subroutine zuverlässig erzeugt und befördert, der "normale" Refresh, der also die Hit-, Magic und soweiter-Points auffüllt läuft schon. Zusätzlich sind jetzt die Datenstrukturen für alle(!!!) Itemtypen fertig, ich muß die Tabelle nur noch mit Items füllen. Dafür nehm ich mir erstmal die Liste von Xajorkiths HP vor und schreib mir da mal ein paar Items raus ;)
Ich habs außerdem geschafft, alle Item-Typen, also Waffen, Rüstungen, Kleider, Gegenstände, Tränke usw. in eine Datenstruktur zu quetschen, was die Arbeit natürlich erleichtert.
Jetzt muß ich nur noch die Teile Programmieren, die das Inventar auch benutzen bzw. verwalten und ich bin viereinhalb Schritte weiter :D
Diplomacy is the art of telling some-one to go to hell and he is happy to be on his way.
Benutzeravatar
erni
Moderator
Moderator
Beiträge: 2958
Registriert: Di 09.10.2001 - 19:06

Beitrag von erni »

Weiter so, hört sich immer besser an :top:
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 »

Not so very good news...
Ich stolperte soeben (das heißt vielmehr vor kurzem) über recht eigenartige Phänomene beim Transportieren des Programms auf andere Rechner.
Zunächst mal hat die Beleuchtung aufgegeben und die gesamte Szene der Finsternis überlassen, da hab ich wohl ne kleine Schwäche des DirectX-SDKs entdeckt, wo man sehr genau aufpassen muß, welchen Renderer DirectX später verwendet, aber da forsch ich gerade intensiv nach.
Viel bedenklicher ist, Programmteile, die auf diesem Rechner zuverlässig funktionieren erzeugen auf anderen unerklärliche Fehler. Am deutlichsten wird dies bei der Menü-Struktur. Diese lade ich zu Beginn aus kleinen Dateien, die den Text des Menüpunktes und den dazugehörigen Befehl an den Parser enthalten. Die identischen Files, die auf dem Test-Rechner einwandfreie Ergebnisse bringen, ergeben auf einem anderen Rechner mitunter nur Schrott. Ich weiß momentan nicht, ob ich im Code gemurkst hab, speziell da mußte ich viel basteln, weil der M$ Compiler Scheiße liefert, oder ob das Problem tiefer und allgemeiner liegt und ich einfach von falschen voraussetzungen ausgegangen bin (ein 40 Byte String enthält wohl nicht auf jedem System auch 39 Zeichen und eine abschließende 0).
Ich teste und bastele also im trüben derzeit.
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 »

darklord hat geschrieben:Zunächst mal hat die Beleuchtung aufgegeben und die gesamte Szene der Finsternis überlassen, da hab ich wohl ne kleine Schwäche des DirectX-SDKs entdeckt, wo man sehr genau aufpassen muß, welchen Renderer DirectX später verwendet, aber da forsch ich gerade intensiv nach.
:)) :)) :)) :))
Das kommt davon, wenn man nur gelegentlich am Programm arbeitet, sonst wär' mir das früher aufgefallen. Der Fehler liegt wahrscheinlich tatsächlich am Renderer, allerdings etwas anders. Es gibt unter DirectX mehrere Modi, in der die Hardware angesprochen wird, bei High-End Karten gehört dazu auch der sogenannte "Pure Hardware VP" - dieser Modus unterstütz KEIN lesen vom Device, also kann ich nicht einfach auslesen, zB. wie das aktuelle Licht aussieht. Dieses habe ich allerdings gemacht, da das Licht immer an der aktuellen Position des Betrachters gesetzt wird und ich mir sparen wollte, immer Farbe und Intensität zu setzen, also hab ich das aktuerlle Licht ausgelesen, die Position aktualisiert und zurückgeschrieben. Unter Pure VP bekomm ich aber keine Lichtdaten und schreibe dementsprechend Nullen zurück. Sehr peinlich und ich bin nur durch Zufall drüber gestolpert, weil diese Aktion zusammen mit der Spielsteuerung passiert und ich da was geändert habe. - beiß mich und nenn mich deppert :D
Diplomacy is the art of telling some-one to go to hell and he is happy to be on his way.
Benutzeravatar
erni
Moderator
Moderator
Beiträge: 2958
Registriert: Di 09.10.2001 - 19:06

Beitrag von erni »

Warum deppert ? Du hast die Ursache des Problems doch gefunden ;)
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 »

soooo,
ich habs immer noch nicht drangegeben und mach fleißig weiter. Derzeit ist das Inventory dran und sobald das Programm sicher und elegant Gegenstände im Rucksack bzw. der Ausrüstung der Charaktere behandelt, gehts einen Schritt weiter, nämlich Gegenstände aus der Umgebung erhalten, sprich finden und aufsammeln.
Das kann aber noch ein bißchen dauern, denn immerhin gehört das verwalten von Gewicht und Tragkraft auch dazu. Streng genommen müßte an dieser Stelle auch schon der Großteil der Fertigkeiten definiert sein, aber so wie ich die Routinen aufgebaut habe, sollten sie jederzeit ohne viel Aufwand verändert oder erweitert werden können.
Was auch noch erwähnenswert weil knifflig war/ist:
Das Programm muß im Stat-Screen, wenn das Inventar aufgelistet wird, feststellen, ob in das Fenster geclickt wurde und wenn ja, wohin. Somit brauch ich keine umständliche Menüführung über die 12 Seiten-Buttons basteln, wenn man mit dem Inventar hantiert. Das eröffnet auch vielfältige Möglichkeiten in anderen Menüs, über die ich mir den Kopf noch zerbrechen wollte.
Es läuft sich alles recht gut an und ich bin guter Dinge, bald mal wieder sichtbare Ergebnisse präsentieren zu können, dauert eh schon alles viel länger, als veranschlagt.
Benutzeravatar
erni
Moderator
Moderator
Beiträge: 2958
Registriert: Di 09.10.2001 - 19:06

Beitrag von erni »

Wann kann man mit einer "Demo" rechnen ? :)
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 »

Ach, ich hab mich da schon soo oft verhauen, da sag ich lieber nichts. Ich *hoffe*, nicht mehr allzu lang - obwohl der Datenbestand, also Grafiken und Objekte noch mehr als überschaubar sind.

Items & Co. bekommen daher erstmal kein Bild/3d Objekt. 3D Objekte von Personen, Kreature et c. bau ich ein, wenn ich welche hab, bis dahin teilen sich mehrere Klassen ein Objekt halt.
Antworten

Zurück zu „Biing!2 und Anderes“