Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 13:47

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Starbreed Academy
BeitragVerfasst: Di Jan 06, 2004 14:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich bastel momentan auch schon eine kleine Weile an einem Projekt. Sofern es meine Freizeit zulässt. Wie könnte es auch anders sein handelt es sich im großen und ganzen auch um ein Spiel. Aber eigentlich handelt es sich dabei gar nicht um ein richtige Spiel. Es ist vielmehr nur ein Frontend zu einem existierenden Spiel.

Hier erst einmal ein paar Infos über das Spiel. Es handelt sich dabei um ein rundenbasiertes Strategiespiel. Man übernimmt die Leitung einer Rasse und muss versuchen die Galaxieherrschaft an sich zu reißen. Man baut Raumschiffe, fliegt durch den Raum, besiedelt andere Planeten, vernichtet andere Rassen. Nebenbei kann man noch bestimmte Technologien erforschen. Damit Handel treiben. Der Fantasie sind dabei kaum Grenzen gesetzt.
Gespielt wird das Spiel hauptsächlich per Mail in Abständen von 3-4 Tagen bzw. einer Woche. Es befinden sich zu einem Großteil nur Menschen in dem Spiel. Es gibt allerdings auch ein paar Künstliche Inteligenzen. Insgesammt sind ca. 20 Parteien an dem gesammten Spiel beteidigt. Gespielt wird auf einer Karte mit sechseckigen Feldern und einer Größe von 40 x 26.
Hier mal ein kleiner Ausschnitt.
Bild

Das soll erst einmal alles über das Spiel gewesen sein. Wer sich näher darüber informieren oder mitspielen möchte, der sollte man auf www.starbreed.de schauen.

Die Kommunikation zwischen Spieler und Zentralrechner geschieht über Textdateien. :shock: Diese sind in verschiede Bereiche unterteil. So hat man eine Phase vor der Flugphase. Die eigentliche Flugphase und eine Phase um Aktionen danach durch zuführen. So etwa wie das be- und entladen von Raumfahrzeugen.
Hier ein normal cryptisches Beispiel einer Befehlsdatei.

Die Auswertungen sind ein wenig weniger verwirrender.
Dort bekommt man Informationen über die gesamten Fahrzeuge, Planeten, Finanzen, Etc. Auswertungsdatei
Als zweite Alternative wird bei jeder Auswertung eine XML Datei mitgeschickt. In ihr stecken noch ein paar zusätliche Informationen die nicht für das Spielgeschehen wichtig sind.

So nun zu meinem eigentlichen Projekt. Ich habe vor für dieses Spiel eine Art Frontend zu Programmieren. Auf der Basis der XML Dateien und einer eingebauten Mailsend funktion. Ich möchte, dass der Spieler, also auch ich, sich voll und ganz auf das Spiel konzentrieren kann und nicht mit irgendwelchen Positionsangaben und cryptischen Texten etc. kämpfen muss. Ich habe den Traum von einem benutzerfreundlichen Frontend. ;-)

Was habe ich daran schon getan?
- Die XML Auswertungsdateien werden ca. 85% schon eingelesen. Der rest folgt noch. Ausgelesen wird die Datei mittels des DOM Objectmodels.
- Eine rudimentäre Karte wird Momentan schon gezeichnet und eine minimale Interaktion existiert bereits.
- Meinen eigenen Basecode habe ich dafür erweitert (bei meiner Fontklasse können nun auch TexturenFonts erstellt werden)
- Ein recht detailiertes Design für das Spielemenü habe ich mir in einem Grafikprogramm schon erstellt.

Momentan bin ich dabei eine kleine VCL in OpenGL nachzubilden.
Folgende Komponenten existieren schon.
- unsichtbare BasisKomponente, Panel, Label, Button, GroupButton (ähnlich SpeedButton) und ein Image

Hinzukommen sollen noch:
- Edit, CheckBox, RadioBox, ListBox

Im Zuge dieser Komponentenentwicklung arbeite ich auch an einem kleinen Unterproject mit dem ich Menüs auf Basis dieser Komponenten erstellen kann. Es soll eine Art MiniIDE werden. Damit soll es ermöglicht werden, dass man komplexe Fensterstrukturen (die ich für Starbreed benötige) ala VCL zusammenclicken und benutzen kann. Eine komplexe Fensterstruktur visuell zu erstellen bietet viel mehr Möglichkeiten und eine größere Flexibilität. Angesichts des Hauptprojekt werde ich den Menüeditor aber nur auf das Notwendigste beschränken. Wenn man damit einfach die Elemente positionieren und deren Einstellungen verändern kann soll dies vorerst genügen.

Hier auch noch zwei Bilder vom aktuellen Stand des Frontends.
Bild Bild
Das Menü befindet sich momentan noch im Teststadium und wird mit sicherheit noch einmal komplett überarbeitet werden. Die Karte befindet sich noch ganz am anfang ihrer Entwicklung. Momentan werden durch Farben ein paar Dinge dargestellt. Die hellblauen Felder wurden schon einmal besucht. Auf den Grünen befinden sich Rauffahrzeuge von mir. Das wird in naher Zukunft auch noch wesentlich verändert.

Der Zukünftige Plan.
- Vollständige Entwicklung des Menüeditors
- Implementation eines Menüs (noch ohne große Funktionalität) Nur erst einmal Darstellung von Eigenschaftswerten.
- Schrittweise implementation von Funktionalitäten (Bewegungen von Fahrzeugen, Forschung, Transfers, etc).
- Aufbesserung der Felddarstellung. Modelle für Raumfahrzeuge und einfach alles schöner. ;-)

Was vielleicht noch kommen könnte.
- Animationen zwischen den einzelnen Auswertungsschritten. Animation des Zuges.


Zuletzt geändert von Lossy eX am Fr Jun 25, 2004 09:49, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: glComponentsMenüEditor
BeitragVerfasst: Fr Jan 16, 2004 11:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
So hier mal wieder ein Update zu einem Unterprojekt. Der Komponentensammlung und dem Editor.

An der Anzahl der Komponenten hat sich noch nicht viel verändert dafür aber um so mehr am MenüEditor.
- Es ist möglich beliebig viele Texturen und Fonts zu laden und einzubauen.
- Alle Eigenschaften der Objekte werden auf einer Seite dargestellt. Sehr ähnlich wie dies in Delphi passiert.
- Die Objekte können, mit der Maus oder der Tastatur, verschoben und in der Größe verändert werden. Mit der Tastatur: Steuerung + Pfeiltasten = Verschieben und Umschalt + Pfeiltasten = Größenveränderung. Und das mit der Maus erkläre ich nicht noch mal extra. ;-)
- Die Objekte werden an einem Raster ausgerichtet welches noch mal extra eingeblendet werden kann. Das Raster besteht nicht wie bei Delphi aus Punkten sondern aus Linien. Das ist einfach wesentlich performanter.
- Viele kleinere Bugs im Umgang mit den Objekten
- Das Speichern der Objekte in einem Projekt funktioniert schon habe ich aber deaktiviert.

Was ist noch zu tun
- Das Laden eines Projektes
- Die Generierung eines Quellcodes den man in sein Projekt einbinden kann.
- Einen TexturkoordinatenEditor für den ObjektInspektor. Damit man einfach ein Rechteck aus der Textur auswählen kann und sich nicht mit den Koordinaten rumschlagen muss.
- Diverse Eigenschaften müssen noch hinzugefügt bzw. 100%tig implementiert werden.
- Die Implementation von CheckBox, RadioBox, ListBox, Combobox, Scrollbar

- Evtl auch noch: TrackBar, Progressbar, Menü, PopupMenü

Hier dann noch ein Bild
Bild

Die Sourcen werde ich zu einem späteren Zeitpunkt veröffentlichen. Aber erst muss er fertig sein.


Zuletzt geändert von Lossy eX am Fr Jun 25, 2004 09:52, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 19, 2004 15:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Nachdem es recht lange kein Update mehr gegeben hat will ich mal wieder ein wenig etwas vom Projekt berichten.

Das eigentliche Projekt steht noch ziemlich still, da ich momentan immer noch an der Komponentensammlung und dem IDE ähnlichen Editor arbeite.
An dem Editor hat sich nicht viel verändert.
- ein paar Fehler sind verschwunden
- der Name wurde in glWindowMaker geändert.
- ein Texturkoordinaten Editor wurde implementiert. Mit diesem kann man "ralativ einfach" Texturkoordinaten auswählen. Man zieht auf dem erscheinenden Bild ein Rechteck und dieser Bereich wird dann als Textur verwendet. Ziemlich einfach. Recht oben befindet sich noch ein Eingabefeld in dem man das Rect auch noch per Hand ändern kann. Der Koordinaten unterstützt momentan NUR Texturen mit Alphakanal.
- Das Speichern der Quellen funktioniert soweit schon halb. Es fehlen noch die Speicherung der Parameter und es muss noch richtig verpackt werden.

Folgendes hat sich an den Komponenten geändert
- Es wurden diverse Änderungen an der Mausinteraktion vorgenommen. Also wieder ein paar Fehler weniger.
- Zusätzlich wurden CheckBox, RadioBox, Scrollbar und eine halbe ListBox implementiert. Halb deswegen, weil die Mausinteraktion noch nicht implementiert ist.
Eine genauere Liste mit Änderungen findet ihr am Anfang der Unit.

Auf vielfachen Wunsch (einer einzelnen Person) stelle ich euch jetzt schon die Komponentensammlung zur Verfügung. Ich weise an dieser Stelle aber noch einmal darauf hin, dass es sich hierbei um eine Entwicklungsversion handelt und das Änderungen an der Schnittstelle nicht ausgeschlossen sind. Mit an Sicherheit grenzender Wahrscheinlichkeit wird sie noch erweitert aber auch Veränderungen sind möglich.

Hier gibt es die Binaries des Editors. Die Quellen gibt es dann wenn er soweit funktioniert.

Hier gibt es die Header.

Die glComponents.pas benutzt als OpenGL Header den dglOpenGL. Also Bitmaploader die glBitmap und für Fonts die glText.
An der glBitmap haben sich hauptsächlich nur unbedeutende Kleinigkeiten geändert.

An der glText hat sich hingegen einiges getan.
- Die Bitmap und Polygonklasse haben als Basisklasse nun eine FontBasedklasse.
- Eine Klasse für Texturfonts wurde hinzugefügt. ACHTUNG: Hier wird sich im nächsten Release die Eigenschaft Texture ändern. Momentan ist es so, dass die Textur intern erstellt und wieder frei gegeben wird. Dies verhindert erfolgreich, dass sich ein Font in einer größeren komplexeren Textur befindet. Deswegen wird es in Zukunft so aussehen, dass die Fonttextur außerhalb der Klasse erstellt werden muss und dann dort zugewiesen wird.

Ich hoffe mal, dass diese Änderungen innerhalb der nächsten paar Tage (Woche) hinbekomme, dann wird es ein kleineres Update geben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 19, 2004 15:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Achja. Was ich vergessen hatte. Um den genauen initialisierungscode für die Fonts und Bitmaps zu erfahren betätigt bitte den "save as *.pas" Button im glWindowMaker. Da kann man sehr gut sehen was man tun muss um die Texturen und Fonts erstellen zu können (Methode LoadTextures und LoadFonts). Der "exportierte" Code wurde nicht getestet und ich übernehme auch keine Garantie darauf aber da kann man ja auch nicht so viel falsch machen. ;-)

Für die Komponenten gilt grundsätzlich, dass man veränderte Eigenschaften (glWindowMaker) dann auch im fertigen Quellcode zuweisen muss.
Position (BoundsRect, etc), Textur und teilweise auch Font MÜSSEN immer angegeben werden. Da es sonst zu Fehlern kommen kann, da noch keine großen Sichheitsüberprüfungen statt finden.

Hier noch das Bild für alle Selbstmörderisch veranlagten die die Scrollbar benutzen möchten. ;-) Das ist ein Bild mit den Rect's und Eigenschaften die die Scrollbar zur Verfügung stellt und damit man die wenigstens halbwegs zuordnen kann.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 04, 2004 11:32 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
So mal wieder ein "kleines" Update. Das Projekt lebt noch und in der letzten Zeit hat sich ziemlich viel verändert und getan. Leider befindet sich alles in einem vollkommen Entwicklungsstadium weswegen ich weder Binaries noch irgendwelche Source freigeben kann.

An den Komponenten hat sich einiges an der Objectstruktur geändert. Das war zwingend notwendig, damit ich die Objekte besser in "Gruppen" einteilen kann.

TglControl
Die Oberklasse schlecht hin.

TglHandleControl
Abgelitten von TglControl und erweitert um ein Handle. Ähnlich dem eines Windowshandle.

TglWinControl
Abgelitten von TglhandleControl und erweitert um Childs. Damit ist diese Klasse in der Lage controls zu beherbergen.

Neu ist auch ein TglFormsManager. Dieser verwaltet alle vergeben Handels und reagiert auf Maus- und Tastaturereignisse. (muss noch implementiert werden) Die Notwendigkeit darin bestand, dass ich eindeutig identifieren können muss welches Control gerade den Focus bzw. die Maus gecaptured hat. Ein Control welches im Besitzt des Mouscaptures ist bekommt als alleinige Komponente die Mausereignisse. Beim drücken einer Maustaste wird das Capture automatisch gesetzt und wenn die Taste wieder losgelassen wird wird das Capture wieder zurückgesetzt. Der Vorteil daran ist, dass man dann auch MouseMoves eines Controls bekommt auch wenn sich die Maus am anderen Ende des Bildschirms befindet. Vom Prinzip her habe ich lediglich das nachgebildet was im Windows gemacht wird. Teilweise muss hier aber noch die Interaktion mit Maus und Tastatur implementiert werden.

Die größere Änderung fand jedoch im Editor statt. Nachdem ein Kumpel wegen dem Namen beschwert hat, habe ich mir mal wieder etwas anderes einfallen lassen. Nun heißt das gute Stück glForms und ich will hoffen, dass sich daran nicht noch einmal etwas ändert.

Der Aufbau des Programm hat sich mittlerweile ein wenig geändert. Siehe Bild (ca. 400 kb).
Bild

Für alle die meinen es sieht ein wenig wie Delphi aus. Ihr müsst euch irren. Das kann gar nicht sein. ;-)

Ich fasse mich hier mal ein wenig kurz, da es sonst den Rahmen des textlich Möglichen sprengen würde. ;-)

Oberfläche
- Das Programm besteht nur zwecks Übersicht aus mehreren Fenstern
- Die Toolbar hat nun richtige Icons bekommen
- Der TextureRectEditor ist nun sogar anständig bedienbar.
- Im Objectinspector ist es jetzt möglich Rects und Points auszuklappen und die Unterwerte direkt verändert zu können.
- Es gibt jetzt einen richtigen Quellcodeeditor (Synedit)

[b]Untergrund{/b]
Die Eigenschaften bestehen nicht mehr aus festen Eigenschaftslisten. Sie werden zur Laufzeit von den Publisched Eigenschaften eingelesen und ausgewertet. Die geschieht mittels der Delphi ToolsAPI. Genau so werden auch die Eigenschaftswerte gelesen und geschrieben.

Die Objecte werden jetzt mittels [url=http://www.remobjects.com/page.asp?id={9A30A672-62C8-4131-BA89-EEBBE7E302E6}]PascalScript[/url] aus dem Quellcode erstellt und deren Eigenschaften gesetzt. Dies verleiht dem Programm mehr Flexibilität. Sobald Werte im ObjectInspector verändert werden, werden die Eigenschaften auf das Object übertragen und der Quellcode angepasst. Genau so wie wenn ein Control erstellt oder gelöscht wird. Geparst wird der Code mittels regulärer Ausdrücke (RegExp Studio). Für diesen Zweck müssen sich spezielle Kommentare in dem Quellcode befinden, damit glForms genau weiß wo es die einzelnen Aktionen durchzuführen hat. Diese Vorgehensweise setzt dann natürlich ein gewissen Maß an leserlichem Quellcode vorraus. "Ich schreibe alles in eine Zeile, weil ich so toll bin" Programmierer werden damit keinen Spaß haben! Diese Programm arbeitet bewusst nur auf Zeilenbasis, da alles andere einfach zu viel Arbeit wäre und ein leserlicher Code soll ja bekanntlich auch Vorteile haben. ;-)

Resultierend aus dem Pascalscript muss leider bei jedem Wechsel zwischen Quelle und OpenGL alles (Texturen, Fonts, Controls) zerstört und neu aufgebaut werden. Dies kann bei vielen Texturen schon ein wenig zu einem Problem werden. Allerdings sehe ich keine andere Möglichkeit so etwas sinnvoll zu gestalten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 25, 2004 10:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich habe alle toten oder veralteten Downloads aus den oberen Posts gelöscht.

Wie bereits in den Meinungen zu den Projekten von mir angekündigt habe ich eine Version fertig gemacht.
In diesem Paket enthalten:
- Die kompilierte Anwendung
- 2 Sampledateien mit denen man ein bisschen rumspielen kann
- Dazugehörige Bilder und ein Font
- Die Quellen der Bibliotheken (glBitmap, glText, glComponents, dglOpenGL)
- Die Bibliotheksquellen für PascalScript
und
- Die Quellen der kompletten Anwendung

Was hat sich seitdem getan?
Leider nicht wirklich viel. Hauptsächlich nur Kleinigkeiten.
- Das "Live ausführen" der Quellen funktioniert nun anständig und setzt die Objekte nach Beendigung wieder auf deren Quellcodewerte zurück.
- Mausinteraktion wurde bei allen Elementen hinzugefügt. Bei Allen? Nein. Bei fast allen. Die ListBox fehlt noch. Diese ist aber auch noch nicht 100%ig implementiert. Und die Schaltfläche zum Hinzufügen einer ListBox ist noch ohne Funktion.

Was ist noch zu tun?
- ListBox
- IDE Stabilität
- Da ich mit dem PascalScript gar nicht zu frieden bin (zu viele Beschränkungen etc.), wird es wohl früher oder später komplett rausfliegen. Und ich muss mir dafür etwas anderes einfallen lassen. Evtl. wäre es sogar sinnvoll die Quellen mittels dem Kompiler von Delphi übersetzen zu lassen und die daraus resultierenden Binaries in der IDE auszuführen. Dabei handelt es sich derzeit aber nur um Hirngespinnste.
- Funktionalitäten wie das Kopieren und einfügen von Objekten und das daraus resultirenden Ändern der Objekthirarchie.
- Multiselect von Objekten

Ein Wort der Warnung ist angebracht. (nein Männer sind keine Schweine!!)
Es handelt sich dabei um eine Entwicklungsversion. Sie kann an einigen (vielleicht sogar mehreren) Stellen instabil sein und es kann zu abstürzen kommen! Diese Version ist für die Community gedacht. Sie ist nicht zur öffentlichen Publizierung gedacht! Änderungen an den Quellen, von meiner Seite, sind äußerst wahrscheinlich. Das Verändern der Quellen von euch ist nicht erwünscht! Zu privaten Testzwecken ist es jedoch gestattet. Die Weitergabe von euch veränderten Quellen ist nicht gestattet. Nur als unveräderte Version ist dies gestatet. Solltet ihr Änderungen in Gebrauch haben teil sie mir mit und ich werde sie in das bestehende Konzept einpflegen. So kommen sie gesammten Community zu Gute. Danke.

Verbesserungsvorschläge, Fehler oder Beweiräucherung bitte in diesem Threadablegen.

So das war von meiner Seite erst einmal alles.

Download glFormsSetup.exe 1MB


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 25, 2004 10:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Natürlich könnt ihr die Bibliotheken und die Komponenten in euren Projekten verwenden. Sofern es der Funktionsumfang zulässt versteht sich.
Von mir noch durchzuführende Änderungen werden sich hauptsächlich auf internas bzw. neue Funktionalitäten auswirken.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 27, 2004 17:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Mars hatte mich freundlicherweise darauf hingeweisen, dass ich bei den Quellen etwas vergessen hatte.
Einerseits eine Komponente mit der arbeite. Download AdvancedPanel.zip
Und zum anderen meine HashKlassen
Vielen Dank Mars.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 31 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.047s | 17 Queries | GZIP : On ]