Headings: !!Einführung !!Struktur !!Klassenhierarchie !!Arbeitspakete !!Warum !!Wie !!Dateien !!Links !!Bottomline
- Zunächst wollten wir mal Taron als Karte verwirklichen, richtig?
- ein Online-Rollenspiel ähnlich NeverwinterNights wäre schön, das basiert übrigens auf der SDL [0]
Ergebnisse
Die alten SdlTests sind jetzt auf einer eignenen Seite- hier ist immer nur der aktuellste Link [1].
Das Programm basiert auf Objekten, die im Spiel modifiziert werden können, und auf einem Serverprozess verwaltet werden. Mehrere Spieler und auch Monster können diese Modifikationen bewirken, und müssen die Modifikationen an den Server melden sowie sich diese über ein Ticketsystem vom Server bestätigen lassen. Um lokal flüssig zu laufen, müssen Entscheidungen zunächst lokal getroffen werden, anschliessend werden sie zentral bestätigt oder verworfen.
Es gibt bereits einige Klassen die für die Programmierung auf höherer Implementationsebene interessant sind:
- Ta Display List. Diese Klasse dient zur Darstellung von statischen Objekten z.B. des User-Interfaces. Die dazugehörige Instanz liegt in der Ta Game Klasse. Display List Objekte werden auch von der Animationsklasse (s.u.) verwendet.
- Ta Animation. Die Animationsklasse dient der Darstellung von bewegten Objekten oder Objekten mit bewegten Bitmaps (Daumenkino-Effekt). Durch Berechnen einer Animation und Hinzufügen wird sie in der Gameklasse bei Aufruf von Update Display aus der Ta Game Instanz heraus dargestellt. Die Ta Animation Klasse besitzt Methoden zur Berechnung von Bewegungspfaden. Diese Pfade sind entweder geradlinig oder über Bezierkurven zu erstellen. Bei Erstellung einer Animation wird eine Liste der Update-Rectangles angelegt, und eine Liste der Redraw-Rectangles die für das Update des Display-Buffers respektive das Neuzeichnen des Hintergrundes unter einer zu löschenden Animation nötig sind.
- Ta Game. Stellt die übergeordnete Instanz des Spiels dar. Durch zyklischen Aufruf des Eventhandlers und der Darstellungsroutinen wird der Spielablauf abgehandelt.
Hilfsklassen (evtl. noch als Singleton zu implementieren)
- Ta SDL. Klasse für die Schnittstelle zur SDL Bibliothek. Das Laden der Grafiken geschieht zur Zeit über diese Schnittstelle.
- Ta Xml. Klasse für die Schnittstelle zum Filehandling per Xml. Die Laderoutinen sind soweit ausgeführt das sie Daten direkt in die Datenstrukturen das Spiels laden.
- Ta Font. Klasse die einen Zeichensatz erhält. Enthält die Eigenschaften der Quellbitmap, die Zahl der Zeilen und Spalten, und die Modifikationen für jedes einzelne Zeichen in einem 256'er Array von Ta Char. Die Position der Teil-Bitmaps wird jeweils berechnet.
Geplante Klassen
- '"Ta Object'".Basisklasse für sämtliche Objekte mit Speicherfähigkeit. Diese wird als Prototyp für alle imProgramm vorhandenen Objekte verwendet. Eventuell implementieren als smart pointer? Ausserdem sollte eine Kopierfunktion implementiert werden. Alle Objekte gehören irgendwem, wenn nicht werden sie zerstört.
dies soll nur eine Auswahl darstellen die mir spontan einfällt. Wenn sich jemand für eine Aufgabe berufen fühlt- Freiwillige vor! :-)
- ohne Programmieren
- UserInterface (Grafik+ Buttongrafik. Fließtext tut's schon, Hierarchie auch)
- Pflanzen (Kartendarstellung)
- Gebäude (Aussendarstellung)
- Hintergrundbausteine (Detaildarstellung)
- ZauberAnimation (Detaildarstellung)
- MonsterAnimation (Detaildarstellung)
- Gegenstände (Detaildarstellung, erstmal aus altem Projekt)
- mit Programmieren
- ?UserInterfaceElemente (?ScrollBox, ?EditLine, ?EditBox, ?ListSelector, ?ItemSelector (mit Grafik))
- EditorBasis
- SpeedTests, Optimierung, Bugfixes
(Siehe auch MitMachenAnTaronLineMap )
Um Spaß am Programmieren zu haben.
Das macht natürlich am meisten Spaß wenn man einen vernünftigen Editor dafür hat. Editoren brauchen einen Datensatz den er erzeugt und ein Format dafür. Und er braucht eine Darstellungsbibliothek um die Ergebnisse zu begutachten, und das sollte auch ein Renderer sein mit dem man sich das Nachher ansehen kann (Wysiwyg). Hier geht's weiter: TarOnlineMapEditoren
Grundlegend wird wohl erstmal eine Basisklasse nötig sein, die Elemente auf ein Koordinatensystem bezieht. Ein Paar Gedanken dazu sind hier: TarOnlineDaten
Zusätzlich zu den Daten die durch Editoren Modifiziert werden gibt es auch temporäre Datensätze.
- Vault ('Tresor'), beinhaltet alle Standardlisten die über die Kampagne hinaus gelten. Also die Karten von Taron die bis dahin definiert sind, die Gegenstände die's gibt, die Monster die's gibt, die Objekte und Grafiken die für Maps verwendet werden können und die Zauber.
- Activity ('Aktivitäten') beinhaltet alle ablaufenden Aktionen. In diese Liste werden die User- und Meister- Befehle und Aktionen durch KI und Zauber aufgenommen.
- Move (Monster,x,y,Map,Time)
- Get (Thing,Monster,Time)
- Put (Thing,Monster,Time)
- Talk (Monster,Monster,Time)
- Attack (Monster,Monster,Time)
- Enchant (Monster,Spell,Monster,Time)
- Enchant (Monster,Spell,x,y,Map,Time)
- Enchant (Monster,Spell,Thing,Time)
- Create (Monster,Thing,Time) erzeugt Gegenstände magisch
- Create (Monster,Monster,Time) erzeugt Monster magisch
- Use (Monster,Thing,Time) Gegenstände benutzen, Waffen tragen
Wie die Aktionen ausgeführt werden hängt letztendlich von den Attributen der Teilnehmer ab. Diese Aktionen können über Netzwerk versendet werden und laufen auf jeder Engine lokal ab, müssen aber vom Server bestätigt werden...
die Datenstruktur wird in XmlFiles abgelegt. Dies ist bereits implementiert. Schreiben fehlt aber noch.
Datenstruktur der UltimateFantasyFiles sollten als Anregung dienen. Ultimate Fantasy konnte aber in dieser Version noch keine Zauber ausführen.
Zauber-Animationen liessen sich gut in SMIL definieren (auf [2] ganz unten), zunächst wird aber auf Bitmap-Sequenzen aus einzelnen Bitmaps mit festen Zeitintervallen zurückgegriffen.
- SDL [3], Tutorial [4]
- SDL für Risc-Os http://www.riscos.info/sdl/
- Atlas C++ (Netzwerk-Spielserver in [5]) [6], außerdem hat Worldforge gpl-Grafiken in isometrischer Darstellung im cvs.(Worldforge Media)[7]
- Deutsches Isometrie-Projekt[8]
- Bezier-Kurven [9]
- Partikelsystem-Tutorial [10]
- 3D-Design Blender 3d [11]
- Demo Tuorial [12]
- Wolken generieren [13]
- Bewegungsmodelle [14][15]
AndreasBarth RolandPohl UwesSeite