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

Aktuelle Zeit: Di Apr 16, 2024 17:33

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: BGP - BaseGraph Pascal
BeitragVerfasst: Mo Mär 01, 2004 02:07 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Bevor ich das schöne DelphiGL Forum mit irgendwelchen Attachments zumülle, widme ich BaseGraph Pascal lieber eine eigene Seite:
die gelöschten bisherigen Posts zu BGP sind hier zu finden:
http://www.basegraph.com/bg/bgp/bgp.html

Bild

zum direkten Download geht's hier:
http://www.basegraph.com/bg/demos/bgp.zip

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Zuletzt geändert von Mars am Mi Mär 10, 2004 13:51, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 10, 2004 02:11 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Mit der neuen Version von BaseGraph Pascal kann man nun auch Executables erstellen, wobei die geringste Programmgröße bei ca. 300 Kb liegt.
Das klingt jetzt nach relativ viel, kommt aber dadurch zustande, dass im Exestub bereits relativ viel Informationen enthalten sind: neben der gesamten BaseGraph Bibliothek, OpenGL 1.5 und ODE Import steckt auch ein Teil der VCL Funktionalität drin, sowie Lempel Ziff Dekompressionsroutinen, da sämtliche Daten im Executable automatisch gepackt werden.

Wählt man den Menüpunkt Datei > ODE DLL integrieren, hat man die Möglichkeit völlig "self contained" .exe Dateien zu erstellen, die ganz ohne externe Abhängigkeiten auskommen. Zu diesem Zweck habe ich die Delphi ODE Importbibliotheken von statischem auf dynamisches Laden umgeschrieben - bei Auswahl dieser Option wird einfach die DLL gepackt, an die .exe gehängt und beim Start ins temporäre Windowsverzeichnis entpackt und von dort geladen.

Ich habe zwar (aus Gewohnheit) per Compilerschalter die Möglichkeit eingebaut, BaseGraph Pascal ohne ODE Funktionalität zu erstellein und OpenGL Funktionalität bis zur Version 1.1 zurückzuschrauben, womit sich einige -zig KB sparen lassen würden - wenn man aber bedenkt dass das beigefügte something_is_strange Demo mit sämtlichen Texturen und gelinkter ODE DLL nicht einmal ein MB benötigt (ohne irgend ein externes File zu benötigen), werde ich mir nicht die Mühe machen, entsprechend eingeschränkte Versionen online zu stellen.

Ebenfalls online ist eine Betaversion des neuen Carad, mit der sich auch Datendateien für BaseGraph Pascal erstellen lassen, sodass man sich einen Großteil der Programmierung sparen kann, bzw sehr einfach z.B. Objekte aus 3DS Max in ein BaseGraph Pascal Projekt bekommt.

An der Funktionalität der Sprache selbst hat sich nicht besonders viel getan, da ich mit dem Linker recht beschäftigt war - immerhin gibt es jetzt die Möglichkeit, zur Laufzeit in beliebige Bildschirmauflösungen zu wechseln, wie es auch im something_is_strange Demo vorgeführt wird.


Dateianhänge:
Dateikommentar: Ein Klick auf die Objekte zeigt, dass hier tatsächlich etwas seltsam ist :)
executable.jpg
executable.jpg [ 27.49 KiB | 10889-mal betrachtet ]

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 12, 2004 21:16 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Und wieder ist es Zeit für ein größeres Update - die Arbeit an einer "eigenen" IDE macht wirklich Freude, da man so mal die Möglichkeit hat, alles zu verwirklichen, was einem praktisch erscheint.

Die wichtigste Änderung ist die Einführung einer Sound-API über DirectX (respektive DirectMusic), mit der sich Wave Files und Midis sehr einfach abspielen lassen, wobei (fast) beliebig viele 3D-positionierbare Audiostreams gleichzeitig möglich sind.
Die hierfür kreierte SoundManager Klasse hat unter Delphi genau die selben Befehle, die auch in BGP zur Verfügung (halt in einer Klasse gekapselt) - bei Interesse kann ich den Source online stellen, da der Code eigentlich allgemein verwendbar ist.
Bei der Erstellung hielt ich mich an das KISS Prinzip, daher kommt die API mit sehr wenigen Befehlen aus, die da wären:
Bild

Des weiteren gibt es einen Ressourceneditor, auf den ich direkt stolz bin, ist es damit doch völlig transparent möglich, entweder auf externe Dateien, oder auf in das Executable gelinkte Daten zuzugreifen.
Wenn man bestimmte Dateien direkt in der Exe haben möchte, fügt man die Datei einfach als Ressource ein, gibt ihr einen Namen, und kann sie schon jeder Routine übergeben, die einen Dateinamen erwartet.

Bild

Anstelle von
Code:
  1. Stream := TFileStream.Create('c:\blablabla\test.txt', fmOpenRead);

fügt man einfach die Datei als Ressource hinzu, benennt diese irgendwie (der Dateiname wird automatisch vorgeschlagen, meist kann man es dabei belassen) und lädt einfach
Code:
  1. Stream := TFileStream.Create(RessourceFile('test.txt'), fmOpenRead);

und schon greift die entsprechende Routine im Executable auf Daten zu, die in Wirklichkeit in gepackter Form an der .exe Datei hängen, während zum Zeitpunkt der Bearbeitung innerhalb der IDE auf die tatsächlichen Dateien auf der Festplatte zugegriffen wird.
Natürlich kann man, wenn man RessourceFile nicht verwendet, auch auf ganz normale Dateien irgendwo auf der Festplatte zugreifen - da Ressourcedateien aber auch automatisch gepackt werden, ist diese Methode im Hinblick auf "elegantere" Distributionen zu bevorzugen (ganz zu Schweigen davon, dass auf diese Weise keine Dateien "verloren" gehen können).

Das sound1 Demo hat sowohl eine Wave als auch eine Midi Datei als Ressource angehängt, im Source kann man sich ansehen, wie das genau funktioniert.

Natürlich ist auch ein neues Demo dabei, das diese Funktionen aufzeigt - diesmal nicht nur als Source in BaseGraph Pascal (welches immer noch hier herungergeladen werden kann: http://www.basegraph.com/bg/demos/bgp.zip ), sondern auch als eigenständiges Executable, das ich einfach mal bitten möchte herunterzuladen und zu starten, damit ich weiß, ob der Zugriff auf die ODE DLL und auf die internen Ressourcen tatsächlich auch überall funktioniert.

Bild
http://www.basegraph.com/bg/bgp/Sound1.zip

Ist übrigens ganz witzig etwas herumzufliegen, und dabei auf die Soundquellen zu achten, wie sie sich an die Beobachterposition schön anpassen - klappt sogar auf meinem Laptop recht gut (fliegt mal in das Licht :wink: )

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 15, 2004 18:28 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Nachdem die bisherigen Demos zu BGP eher Funktionstests waren, habe ich mich heute nachmittag hingesetzt und versucht trotz meiner künstlerischen Inkompetenz mal etwas Eindrucksvolleres zusammenzuschnippseln:

Hier also das Orion - Demo, das ich wahrscheinlich zu einem echten Spiel ausbauen werde (so eine Art Spaceinvaders 3D), aber durch Verwendung von Detailtexturen und Environmentmaps schon jetzt nicht schlecht aussieht.

Bild
http://www.basegraph.com/bg/bgp/orion.zip

Die Demo ist zu Testzwecken auch als (diesmal sogar teilweise kommentierter) Source beim neuesten BaseGraph Pascal Download dabei, wird dort aber irgendwann wieder verschwinden, da sie fast mehr Platz braucht, als die BGP Distribution selbst.
BGP selbst enthält im Großen und Ganzen die Änderungen der letzten Betaversion, ansonsten funktioniert alles erstaunlich gut - ich konnte beim Schreiben der Demo keine groben Fehler entdecken.

Steuerung erfolgt über WSAD und den Cursortasten + PgUp, PgDown(mit Cursor kann gezoomt werden), geschossen wird mit SpaceBar, wobei der Schuss um so schneller fliegt, je länger vorher auf Space gedrückt wurde.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 24, 2004 17:10 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
In der letzten Woche kam Perry Rhodan meinem Programmiertrieb störend dazwischen :wink:
Immerhin wurde BaseGraph Pascal etwas ausgefeilt - inkludiert sind nun die Dokumentationen zu BaseGraph, ODE und OpenGL 1.1 (übersichtlicher und etwas aktueller als die in der Delphi API Dokumentation integrierte Version), außerdem wurde der Soundmanager ausgebaut, der nun neben 3D Streams (Midi und Wave) über DirectMusic auch einen nicht positionierbaren DirectShow Stream abspielen kann, mit dem es möglich ist z.B. sämtliche Media Formate als Hintergrundmusik abzuspielen.

Als überraschend schwierig hat sich erwiesen, es zu ermöglichen, das Icon der Anwendung festzulegen, da der BGP Stub mit UPX gepackt ist, sodass man die "normalen" Windows API Routinen für die Ressourcenverwaltung nicht mehr verwenden kann.
Bild
Immerhin funktioniert dies jetzt - und recht komfortabel noch dazu, als die "transparente" Farbe auch mit einem Klick ins Icon festgelegt werden kann.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 02, 2004 13:07 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Neben einigen neuen Iterationen von BaseGraph Pascal, das mir selbst inzwischen recht brauchbar erscheint, nachdem AstroMine (s.u.) in wenigen Stunden von der Hand ging, und es auch keine Probleme gab, gibt es inzwischen auch einige Tutorials:

Die IDE(e)
http://www.basegraph.com/bg/bgp/tutor/tutor01.html

Hallo Welt
http://www.basegraph.com/bg/bgp/tutor/tutor02.html

AstroMine - die Entwicklung eines kleinen Spiels
http://www.basegraph.com/bg/bgp/tutor/astrominesrc/AstroMine.html
Bild
welches in ausführbarer Form hier heruntergeladen kann
http://members.chello.at/martinscad/AstroMine.zip

und als vollständiger Source mit sämtlichen Texturen und Sounds
http://members.chello.at/martinscad/AstroMineSRC.zip


Viel Spass beim Programmieren,
Mars

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 06, 2004 14:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Da sage ich jetzt gar nicht viel dazu:
Bild

Wer viel programmiert versteht vielleicht, dass es mich ganz besonders freut dieses Feature implementiert haben zu können.
Aktivierung jederzeit mit <STRG><SPACE>, nach einem Punkt wird versucht die Klasse der Variable zu finden und deren Methoden und Eigenschaften vorzuschlagen.

Eigene Variablen werden erst dann übernommen, wenn das Programm kompiliert worden ist, weswegen es jetzt eine Option gibt, ein Programm zu kompilieren ohne es sofort auszuführen.

Eine entsprechende Version ist bereits online.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 16, 2004 10:32 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Die nächste Version von BaseGraph Pascal wird es ermöglichen, damit erstellte Programme direkt aus der IDE mit dem Delphi Kommandozeilen Kompiler (dcc32.exe) zu erstellen - damit hat man dann, trotz gleich bleibender einfacher Bedienung, auch einen "echten" Kompiler in der Hand, und bei rechenintensiven Programmen gibt es einen entsprechenden Performanceschub.
Dies wird möglich sein, sobald eine Delphi Version von 4 bis 7 installiert ist - eventuell auch mit "Delphi 9", wenn dort Win32 und .NET Kompiler wieder ein einem Paket zusammengefasst werden.
BaseGraph Pascal erkennt selbst, welche Delphiversion installiert ist und schlägt den entsprechenden Pfad vor, bei mehreren gleichzeitig installierten Versionen kann man auswählen, mit welcher man das Projekt kompilieren möchte - und kann dann auch direkt sehen, dass ältere Delphiversionen kompakteren Code generieren.

Damit dies klappt, werden eine erweiterte Delphi BaseGraph Bibliothek, das BGP Framework, ODE und (Jedi) DirectX Bibliotheken einfach als Source mitgeliefert, da ich weder Zeit noch Lust habe für jede Delphi Version ein eigenes Set von DCU Dateien zu pflegen, und außerdem der Nutzer auch Gelegenheit haben soll, das erstellte Delphi Projekt direkt mit Delphi zu verändern und dort damit herumzuspielen.

RessourceFiles werden in diesem Fall tatsächlich als "echte" Ressourcen abgelegt (mittels einer mit drcc32.exe generierten Ressourcendatei) - und dabei ist mir folgendes interessante Verhalten aufgefallen:
Solange ich Projekte aus BaseGraph Pascal selbst mit dem Kommandozeilenkompiler erstelle, klappt alles wunderbar, öffne ich sie dann aber in der Delphi IDE selbst, bringt diese einen Linker Error, sobald sehr viele und/oder sehr große Ressourcen in das Executable gelinkt werden sollen.
Lösung habe ich keine gefunden, außer dass es halt noch die Möglichkeit geben wird, RessourceFiles als externe Dateien zu laden, wenn das erstellte Projekt ansonsten in der Delphi IDE nicht erstellt werden können sollte.


Dateianhänge:
Dateikommentar: dcc32 funktioniert einwandfrei, um das Programm aber in der IDE bearbeiten zu können, muss die Option "load resources as external files" gewählt werden. Das Framework schlägt während der Kompilierung mit über 100000 Zeilen zu Buche, da es als Source mitge
DCC.jpg
DCC.jpg [ 33.11 KiB | 10463-mal betrachtet ]

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 17, 2004 16:16 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Eine Version, die jedes Projekt auch mittels Delphi kompilieren kann (können sollte, Feedback ist erwünscht), ist nun online, hier gibt es ein kleines Showcase, in dem einige mögliche Ausgabeformate präsentiert werden:
http://de.geocities.com/martinscad/index.html

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 22, 2004 21:12 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Um kurz die laufenden Fortschritte aufzuzeigen: Inzwischen kennt die neueste Inkarnation kontextsensitive Hilfe, sobald ein Begriff im Objektinspektor markiert, oder der Cursor unter einem Wort im Editorfenster steht, und auf F1 gedrückt wird. Hilfe steht für das BaseGraph Framework selbst, sowie OpenGL in der Version 1.1 (aus der MSDN, immerhin aktueller als die in Delphi integrierte Variante des "alten" Win32 SDKs) zur Verfügung.
Wenn jemand übrigens eine brauchbare Einführung in Object Pascal im CHM oder HTML Format hat oder kennt, die eventuell frei in BGP verwendet werden kann, würde mich dies sehr freuen.

Der Umstieg vom alten Windows Help Format auf das CHM Format, das inzwischen gar so neu auch nicht mehr ist, war aufwändiger, als ich glaubte, da Delphi selbst hierfür überhaupt keine Unterstützung bereit stellt, und man quasi direkt auf die HtmlHelp API zugreifen muss (die in den Windows Headern natürlich auch nicht vorhanden ist, hier gibt's das Delphi HTML Help Kit http://www.helpware.net/delphi/, das zumindest Microsofts API offenlegt, die meiner Ansicht nach ebenfalls eher eine ad hoc Lösung, als eine gut designte Schnittstelle ist).
Als inzwischen durch Nutzung einer .NET Programmierumgebungen für Windows, bzw. das dort offengelegte und sehr gut eingebundene Klassensystem von HTML Help 2.0, dessen Anbindung ein Kinderspiel ist, schon etwas dekadent geworden, war ich fast etwas entsetzt, über den (im Vergleich großen) Aufwand, den ein "normales" Win32 Programm betreiben muss, um HTML Help 1.1 (das für eben diese Plattform zur Verfügung steht) ordentlich (also mit Schlüsselwortsuche und Verknüpfung mit Steuerelementen) einzubinden.
Microsoft wird schon wissen, warum die Dokumentation dieser Schnittstelle auch in der MSDN etwas stiefmütterlich behandelt wird, und Borland, warum Delphi auch in Version 7 noch die "alten" .hlp Dateien verwendet (u.a. mit dem Nachteil dass das letzte Windows SDK, das in diesem Format vorliegt und in Delphi integriert ist, schon recht angegraut ist)
HTML Help ist natürlich sehr viel praktischer für die Erstellung von Dokumentation, da man Hilfedateien direkt aus HTML Dateien generieren kann, wie sie entweder von Tools (inzwischen verwende ich PasDoc) erstellt werden, oder man auch selbst leicht erstellt, anstatt eine Windows Help Datei aus einem obskur formatierten RTF generieren zu müssen (auch wenn es hierfür inzwischen auch brauchbare Freewaretools gibt, die einem das Erstellen und Formatieren einer solchen Datei abnehmen).

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 17 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.079s | 19 Queries | GZIP : On ]