BaseGraph Pascal (BGP)

Zielsetzung
Entwicklung
Ausblick

die IDE(e)
das erste Programm
AstroMine - die Entwicklung eines kleinen Spiels

For English users: The BaseGraph Pascal IDE supports English and German as language, the BaseGraph forum is intended for English speakers as well, and probably parts of this page will be translated to English somewhen, however, meanwhile this information page is German only. Sorry for the inconvenience,
- Martin

to the English BGP introduction

BGP braucht Dich!

Um BaseGraph Pascal zu einer der besten Programmierumgebungen für interaktive 3D-Anwendungen ausbauen zu können, werden vor allem Betatester benötigt, die einfach mal mit BaseGraph Pascal arbeiten und versuchen Anwendungen zu schreiben.

Wenn Du also an 3D-Programmierung interessiert, und Pascal als Sprache nicht ganz abgeneigt bist, kannst du Basegraph Pascal hier herunterladen - BGP ist Freeware und in keinster Weise eingeschränkt, auch nicht bei der Weitergabe von erstellten Programmen.

Der Vorteil gegenüber herkömmlichen "GameMakern" ist neben dem unschlagbaren Preis (gratis), dass keine obskure Skriptsprache verwendet wird, sondern echtes Object Pascal und plattform- und programmiersprachenunabhängige APIs wie OpenGL, ODE und BaseGraph, sodass Delphi Programmierer einen leichten Einstieg haben, und in BGP erworbene Kenntnisse direkt in mit anderen Programmiersprachen erstellten Projekten angewandt werden können.

Erfahrungen mit BaseGraph Pascal können dann im BaseGraph Forum ausgetauscht werden, das hoffentlich auch entscheidend zur Weiterentwicklung von BGP beitragen wird.

 

Für Font Texturen, die in BaseGraph Pascal oder eigenen Anwendungen verwendet werden können, dürfte sich der Textur Font Generator als nützlich erweisen. Es wird ein Textur Font Bitmap erstellt, sowie Positionsinformationen für sämtliche Zeichen des Fonts (4 Floats = links, oben, rechts, unten). Der ASCII Code eines Characters kann als LookUp in die Positionstabelle verwendet werden, unabhängig davon, ob der Font nur einen eingeschränkten Zeichensatz zur Verfügung stellt oder nicht. Eine etwas erweiterte binäre Version wird in der nächsten Carad Version inkludiert sein - dies dürfte allerdings noch etwas dauern, und dieser Download enthält den kompletten Source..

 

Zur Differenzierung von BaseGraph, Carad und BaseGraph Pascal


BaseGraph

BaseGraph soll keine "Engine" in dem Sinn sein, wie es allgemein verstanden wird, sondern vielmehr einen grundlegenden SzeneGraphen mit Culling und Kollision implementieren (BaseGraph = Basic SceneGraph), mit dem man es leichter hat, eine konkrete Engine zu implementieren. Im Projektbereich finden sich mehrere Demonstrationen, die zeigen, was mit BaseGraph möglich ist.

BaseGraph bietet im Grundmodul (bg.xxx) eine ausgereifte, hierarchische Objekt- und Shaderverwaltung, im erweiterten Modul (bgo.xxx) daraus abgeleitete Objekte, die man immer wieder brauchen kann (etwa Vertex- und Skinanimationen), die für BaseGraph Programme aber gar nicht mehr essentiell sind (ganz ausgefallene Projekte, wie etwa die Lifesimulation auf Basis von MetaBalls (die allerdings so cool geworden sind, dass ich sie in bgo integrieren werde), können die bgo Bibliothek auch ganz verwerfen und dennoch Nutzen aus BaseGraph ziehen)

Die BaseGraph Bibliotheken sind Freeware

Carad

Carad ist ein Content Creation Programm für BaseGraph, mit dem großen Vorteil, dass jedes in Carad generierte Projekt vollständig als direkt kompilierbarer Source vorliegt (in C++, C oder Delphi).
Obwohl jedes in Carad erstellte Programm sofort lauffähig ist, ist Carad nicht dazu gedacht (wie etwa ein GameMaker) fertige Applikationen zu erstellen - vielmehr wird dem Programmierer eine Szene mit Objekten zur Verfügung gestellt, mit der er/sie dann in der Sprache der Wahl machen kann, was gewünscht wird - ohne sich dabei irgendwo einschränken zu müssen.
Da BaseGraph auch als vollständiger Source vorliegt, ist es auch kein Problem spezielle neue Objekte auszuprogrammieren und zu integrieren.

Carad ist Shareware, darf für nicht-kommerzielle Produkte aber ohne Bezahlung von Lizenzgebühren verwendet werden


BaseGraph Pascal (BGP)

BGP erfüllt zweierlei Funktionen. Einerseits ist es eine eigene Programmiersprache mit ausgereifter IDE, mit der entweder in Carad erstellte Szenen anprogrammiert werden können, aber auch völlig eigenständige, auf OpenGL und BaseGraph basierende Programme möglich sind.
BaseGraph Pascal ist aber auch als Sprache direkt in Carad integriert, sodass es auch aus Carad heraus möglich ist, entsprechende Programme zu schreiben. Der Funktionsumfang der beiden Versionen ist der Selbe (beide basieren auch auf exakt dem selben Code).
BaseGraph Pascal soll (im Gegensatz zu BaseGraph selbst, das rein für 3D-Grafiken zuständig ist) auch Sound und Netzwerkcode erhalten, sowie die Open Source Physik Engine ODE integrieren, sodass es hier sehr einfach möglich sein wird, kleine Spiele und Programme zu erstellen.
Der große Vorteil von BGP ist, dass die erlernte Sprache fast 100%ig Delphi kompatibel ist, sodass man auch außerhalb von BGP etwas davon hat, die Syntax (und sogar die Klassen) zu erlernen.

Die Idee, die dahintersteht, ist die, dass man ohne großen Aufwand herzeigbare kleine Spiele, und Programme schreiben kann (durchaus auch ernsthafte), ohne dass man dafür aber alleine für die Initialisierung mehrere hundert oder gar tausend Zeilen Code braucht - so ähnlich, wie früher die Programmierung von kleinen Sachen in GW-Basic oder Turbo Pascal.

BaseGraph Pascal wird wiederum Freeware sein

Wer Interesse hat, zur Entwicklung einer "neuen" Programmiersprache beizutragen, möge sich in das frisch eingerichtete BaseGraph Forum eintragen, das auch eine Diskussionsplattform für BGP zur Verfügung stellt.

 

 

Die Entwicklung von BaseGraph Pascal

 

 

1.3.2004

Ich versuche Innerfuse Pascal als Sprache in Carad zu integrieren - die Anpassung dieses extrem nützlichen Paketes an OpenGL und BaseGraph war es dann auch, die meine Freizeit in den letzten Tagen ziemlich vollständig beansprucht hat, sodass ein Projekt, ein Octree Builder mit PVS Informationen (BaseLevel Baker) ein wenig auf Eis gelegt wurde, bei Gelegenheit aber in eine Oberfläche gepackt und veröffentlicht wird, da er an sich fertig gestellt ist..

Hier ist nun die erste Frucht dieser Bemühungen - die BGP IDE, eine integrierte Entwicklungsumgebung einer Delphi kompatiblen Sprache (die Programme können mit wenigen Änderungen tatsächlich in Delphi kompiliert werden), die eigens auf OpenGL und BaseGraph ausgelegt ist.
Die meisten BaseGraph Klassen sind bereits integriert, OpenGL Funktionalität gibt es inklusive der Version 1.5 und zusätzlich GLslang und ARB_vertex_program/ ARB_fragment_program.

Die wichtigsten Unterschiede zu Delphi sind:
* Objektinstanzen werden hauptsächlich aus Carad übernommen
* Keine Zeiger (entsprechende OpenGL Routinen erhalten offene Arrayparameter, dynamische Strukturen können über Indizes aufgebaut werden)
* keine Units (Bibliotheken können über Include Dateien realisiert werden)
* kaum Initialisierungscode notwendig, da die meisten Objektinstanzen von "außen" zugeführt werden

Am Langwierigsten war die etwas öde Portierung von OpenGL in einen Wrapper, der mit Innerfuse Pascal Sprachelementen auskommen kann - interessant hingegen die Entwicklung einer IDE mittels SynEdit (mit Debugmöglichkeiten mittels Einzelschritt und Konsole) sowie der Verwaltung von kompletten Projekten mit beliebig vielen "Bibliotheken".

 

2.3.2004


Ein Soundsystem via DirectX ist fest eingeplant, eventuell integriere ich ODE (muss mal schauen, ob man das auch zu einem statischen Objekt linken kann, da mir eine DLL nicht so gefällt, die einfache Herstellung einer direkten Verbindung zwischen zwei Rechnern über TCP/IP könnte sich eventuell auch nützlich erweisen - mal sehen wohin es sich entwickelt (bin auch für Vorschläge gerne offen).

Die Neuerung ist ein Funktionen/Klasseninspektor, der zumindest bis auf Weiteres für die "Onlinehilfe" zuständig ist - dies sollte es sehr vereinfachen BGP zu programmieren (zumindest ich finde es ziemlich nützlich ), da sämtliche öffentlichen Funktionen, Konstanten und Deklarationen mit wenigen Mausklicks erreichbar sind.
Der Inspektor erstellt sich seinen Inhalt übrigens automatisch, sodass weitere in die Sprache integrierte Funktionen und Klassen ohne Aufwand hier aufgelistet werden - dazu waren nur zwei kleine Änderungen am Innerfuse Source notwendig - was mir viel Arbeit erspart, da das Schreiben von Dokus nicht zu meinen Lieblingsbeschäftigungen gehört.

 

2.3.2004

Nach einem Tipp von Kok selbst, ist es mir gelungen, das in BGP zu integrieren, was einer IDE in meinen Augen erst den letzten Schliff gibt: ein Watchfenster!
In dieses können einfach Variablennamen geschrieben werden (oder auch im Editor markiert und hineingezogen) - und sobald das Programm an einer Stelle angehalten wurde, an der die Variable bekannt ist, wird der Inhalt dargestellt.

 

 

6.3.2004

Wie geplant, habe ich die ganze ODE (!) als Physikengine in BGP eingebaut... war relativ schwierig, da Delphi ODE ziemlich für GLScene ausgelegt ist, und ich keine Lust hatte jede Menge neue Namen für bereits vorhandene Datentypen zu inkludieren.

Schlussendlich habe ich eine eigene Importbibliothek geschrieben, und die ODE Funktionen wieder in Klassen gekapselt, die leichter verwaltbar sind - dies ist ja nicht weiter schwierig ist, ODE Objekte sind an sich ja Klassen, die mittels einer C-API veröffentlicht werden, ähnlich OpenGL (der Vorteil dieser Vorgehensweise ist enorm: nur so kann man sicher gehen, dass eine Bibliothek wirklich Betriebssystem- und Programmiersprachenübergreifend genutzt werden kann).
Wenn's jemand haben will, kann ich die Wrapper veröffentlichen - sie sind allerdings ähnlich spezifisch für die Delphi (Entwicklungs)Version von BaseGraph ausgelegt, wie die "originalen" Delphi ODE Importbibliotheken für GLScene.

Na ja, jedenfalls ist es geschafft - und das Ganze funktioniert direkt gut, und ist auch in der Komplexität gut überschaubar, zumal es für ODE ja auch eine ausführliche Dokumentation gibt.
Beim neuen Download ist dann auch eine demenstprechende Demo dabei:

BGP stellt bereits die Variablen "World" und "Space" zur Verfügung, die für die Einbindung der Physikengine notwendig sind. Zur Zeit haben alle Objekte das selbe Verhalten beim Aufeinandertreffen (hoher Reibungswiderstand und "Abprallen"), in einem der nächsten Releases wird es dann aber möglich sein, für jeden Körper Reibungskoeffzienten und eine Auswahl von verschiedenen Verhaltensweisen beim Zusammenprall mit anderen Objekten zu vergeben.

Das Demo ist auch vom technischen Aspekt her interessant - da immer weitere Objekte hinzugefügt werden, sieht man, dass die Leistung von ODE nicht so sehr von der Anzahl der Objekte, sondern von der Anzahl der Kontakte abhängt. Wenn es sehr viele Kontakte gibt (so etwa ab 50 Würfel auf einem Haufen), wird das Ganze instabil und "explodiert", worauf wieder für eine Weile Ruhe ist, bis die Anzahl der Kontakte die "kritische Masse" wiederum überschreitet.
Die Leistung von ODE ist übrigens überraschend gut, und sollte locker für Spielephysik ausreichen, da man dort ohnehin darauf achten wird, nicht zu komplexe Szenen zusammenzustellen.

Die Motivation BaseGraph Pascal zu schreiben, war auch, ein Werkzeug zu haben, mit dem auf einfache Weise ohne irgendwelche externen Hilfsmittel (also auch ohne Carad, auch wenn es die Möglichkeit geben wird in Carad erstellte Ressourcen in ein Programm zu linken und zu verwenden) eigenständige Programme zu schreiben, habe ich ebenfalls sämtliche in Carad verfügbaren Primitive in BaseGraph als Klassen exportiert (und wer Carad kennt, weiß, dass dies ziemlich viele sind...), sodass es auch möglich ist (wie im ODE Demo) einfacheren Content einer Anwendung direkt und dynamisch im BaseGraph Code zu erzeugen.

Da sämtliche Klassen im Inspektor aufgelistet sind, sollte deren Verwendung keine exorbitanten Probleme aufwerden...
Eine wichtige Änderung habe ich jetzt noch glatt vergessen: es ist nun NICHT mehr notwendig, BaseGraph oder ODE Klasseninstanzen wieder freizugeben, da BGP diese nun auf Wunsch automatisch zurücksetzen kann (Projekt > Projektdaten entfernen). Andere Sachen (etwa die Erstellung einer GLU-Sphere im Skript) werde ich mir nicht die Mühe machen, mit zu tracken - wenn jemand also etwa unbedingt meint, direkt glTexture2D verwenden zu müssen (anstelle der komfortableren TTexture2D Klasse), sollte das entsprechende Texturhandle schon wieder freigegeben werden...

 

8.3.2004

Das verregnete Wochenende hat sich recht positiv auf BaseGraph Pascal ausgewirkt, sodass Anwendung und Oberfläche um einiges leistungsstärker geworden sind.

Die wichtigste Änderung ist die Unterstützung von ereignisgesteuerten Anwendungen - auch wenn es immer noch möglich ist, das ganze Programm aus einer Schleife zu steuern, ist dauerndes Pollen irgendwelcher States nicht gerade das Paradigma der modernen Programmierung, und so kann man nun für die meisten Ereignisse dementsprechende Routinen zur Verfügung stellen, was im Endeffekt ja auch schneller ist.
Ereignisbehandlungsroutinen gibt es zur Zeit für das Hauptformular und die Applikation selbst, wenn es Sinn macht (etwa für Sound und Netzwerk) ist es auch kein Problem weitere Ereignisse hinzuzufügen.

Die Umsetzung sieht folgendermaßen aus, dass Routinen mit bestimmten Namen, so sie im Programm vorhanden sind, vor der Ausführung desselben "abgeholt" und den Ereignissen des "echten" Delphiprogrammes zugeordnet werden. (OnFormClick wäre etwa der Name für das OnClick Ereignis des OpenGL Fensters).
Damit man sich Name und Parameter nicht merken muss, kann das ensprechende Gerüst solcher Ereignisse auch über das Kontextmenü des Editorfensters eingefügt werden.

Die zweite Änderung ist eine Umorganisation des Inspektors, der um einiges "intelligenter" geworden ist, und Klassenhierarchien korrekt darstellt, sowie bei den Klassenmethoden auch "geerbte" Routinen darstellt (grau markiert), damit man nicht die Elternklassen auch noch durchsehen muss, um zu erfahren, ob eine bestimmte Methode unterstützt wird oder nicht.

Natürlich gibt es auch ein neues Demo (ODECallback), das die neuen Fähigkeiten beispielhaft aufzeigt: das Programm ist erstmalig echt interaktiv (mit WSAD und Cursorsteuerung) und man kann die Objekte mit Mausklicks "anschubsen", was recht witzig ist.
Für knapp 100 Zeilen Code an sich ein recht ansehnliches Ergebnis...


ODE ist wirklich mächtig. Das Heightfield wird ODE als TriMesh übergeben - und die Performance ist ausgezeichnet.
Über das TriMesh Objekt können beliebige Objekte der Physik zugeordnet werden, auch wenn sie nicht konvex und/oder geschlossen sind.
Wer sich schon mal mit der Programmierung einer Physikengine beschäftigt hat, weiß, dass dies eine ziemlich nicht-triviale Aufgabe ist...
Obwohl der "neue" Inspektor viel mehr Informationen enthält, ist er doch übersichtlicher geworden. Einträge, die zu lange sind, um vollständig dargestellt werden zu können, öffnen ein dementsprechendes Hintfenster, wenn man sie aktiviert

Die Ereignisbehandlungsroutinen werden am Besten über das Kontextmenü angelegt, dann kann man sich auch nicht bei den Parametern vertun. Soweit möglich, bleibt BGP echt Delphi kompatibel, sodass man den Code oft 1 zu 1 übernehmen kann.

 

10.3.2004

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.


Ein Klick auf die Objekte zeigt, dass hier tatsächlich etwas seltsam ist :)

 

 

12.3.2004

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:

 

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.


Anstelle von


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

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).

 

 

15.3.2004

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.


hier geht es zum Download

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.

 

 

Ausblick

 

BaseGraph Pascal hat sich in recht kurzer Zeit sehr weit entwickelt, was vor allem damit zusammenhängt, dass sämtliche "Ingredienzien" bereits vorhanden waren, und nur noch zu einem größeren Ganzen kombiniert werden mussten. BaseGraph Pascal hätte in dieser Form nicht zustande kommen können ohne folgende Hilfsmittel, die (außer Delphi) allesamt der Öffentlichkeit als Open Source zur Verfügung stehen, wofür ich mich bei den jeweiligen Herstellern bedanken möchte:

  • Borland Delphi, der intuitiven Programmiersprache und IDE. BaseGraph Pascal wird in Delphi 5 Standard und Delphi 7 Professional entwickelt
  • Carlo Koks Innerfuse Pascal Skript, einem genialen Werkzeug um Delphiprogramme dynamisch und flexibel zu gestalten
  • Den SynEdit Komponenten, die es ermöglichen mit wenig Aufwand eine tolle IDE zusammenzustellen
  • Der "Open Dynamics Engine" (ODE), eine leistungsstarke und flexible Physik Engine
  • OpenGL, die Herstellerunabhängige Grafikschnittstelle
  • BaseGraph, ein flexibler SceneGraph, der möglichst viel Funktionalität mit möglichst wenigen Einschränkungen zu kombinieren versucht (beim Hersteller von BaseGraph möchte ich mich nicht bedanken, da dies an Persönlichkeitsspaltung grenzen würde :^) )

Die Arbeit mit BaseGraph Pascal geht leicht und intuitiv von der Hand - für mich. Um BaseGraph Pascal laufend zu verbessern, neue Features zu implementieren, Fehler zu bereinigen, kurz eine der besten Programmierumgebungen für kleine bis mittelkomplexe 3D Szenarien oder Spiele zu schaffen, benötige ich jedoch vor allem Feedback.
Ich bitte also an dieser Stelle noch einmal darum, BaseGraph Pascal einfach mal herunterzuladen, auszuprobieren und die gemachten Erfahrungen ins BaseGraph Pascal Forum zu posten: