Castle Game Engine – kostenlose Open-Source-Cross-Platform-3D/2D-Game-Engine auf Pascal-Basis
(castle-engine.io)- Eine kostenlose Open-Source-Engine, mit der Pascal-Entwickler 3D-/2D-Spiele und UIs in einem Projekt erstellen und für mehrere Plattformen veröffentlichen können
- Der visuelle Editor und das Komponentensystem behandeln gemeinsam Szenen, Kamera, Navigation, Beleuchtung sowie Spiel- und UI-Bausteine wie Buttons, Bilder und Labels
- Unterstützt Workflows mit 3D-Modellen, 2D-Animationen und Sprite-Sheets und kann glTF, X3D, IFC sowie die Anbindung an Blender und Sketchfab nutzen
- Bietet Rendering-Funktionen wie Shader-Effekte, Schatten, Spiegel, physikbasiertes Rendering, Bump Mapping und Gammakorrektur, sodass mit der Engine allein vielfältige Grafikausdrücke möglich sind
- Mit Kommandozeilen-Build-Tool, Docker-Images und Dokumentation für wichtige CI-Systeme ist die Struktur leicht sowohl für Open-Source- als auch kommerzielle Anwendungen einsetzbar
Editor und Entwicklungsweise
- Castle Game Engine ist eine 3D/2D-Game-Engine für Desktop, Mobile, Konsolen und Web
- Im visuellen Editor lassen sich 3D-/2D-Spiele und Benutzeroberflächen entwerfen
- Unterstützt automatisches UI-Scaling und Anchors
- Kann mit verschiedenen IDEs wie Visual Studio Code, Lazarus und Delphi integriert werden
- Komponenten trennen Viewport- und UI-Aufbau voneinander
- Für 3D/2D-Welten stehen Szenen, Kamera, Navigation, Primitive, Beleuchtung usw. zur Verfügung
- Für die UI stehen Buttons, Bilder, Labels usw. zur Verfügung
- Die Codebasis ist modernes Object Pascal und bietet standardmäßig schnelle Builds und schnelle Ausführung
Assets, Grafik, Bereitstellung
- Das Datenformat-System umfasst 3D-Modelle, 2D-Animationen und Sprite-Sheets
- Mit den offenen Standards glTF und X3D ist eine Anbindung an Produktionswerkzeuge und Asset-Repositorien wie Blender und Sketchfab möglich
- Zu den Grafikfunktionen gehören kombinierbare Shader-Effekte, Schatten, Spiegel, physikbasiertes Rendering, Bump Mapping und Gammakorrektur
- Zu den Cross-Platform-Zielen gehören Windows, Linux, macOS, FreeBSD, Raspberry Pi, Android, iOS, Nintendo Switch und das Web
- Die Entwicklung ist auf jeder Desktop-Plattform möglich
- Open-Source- und CI-Freundlichkeit wird durch ein Kommandozeilen-Build-Tool und Docker-Images unterstützt
- Bietet Dokumentation und vorbereitete Dateien für GitHub Actions, GitLab CI, Jenkins, Woodpecker CI und weitere CI-Systeme
- Die Engine ist vollständig Open Source und kann zur Entwicklung beliebiger Anwendungen verwendet werden, einschließlich proprietärer Anwendungen
1 Kommentare
Hacker-News-Meinungen
https://castle-engine.io/why_pascal
Da muss ich etwas Wasser in den Wein gießen. Die meisten der genannten Gründe sind Dinge, die auch andere moderne Sprachen bieten, etwa Sicherheit, Cross-Plattform-Unterstützung und Libraries; einer davon ist Lesbarkeit, was ich schwer nachvollziehbar finde.
Ich arbeite täglich acht Stunden mit Pascal-Code, aber ich finde ihn nicht besser lesbar als die übliche C-Syntax, sondern eher deutlich schlechter. Weil ganze Wörter verwendet werden müssen, um Syntax auszudrücken, kann das Gehirn nicht sofort zwischen „das ist Codestruktur“ und „das ist eigentlicher Code“ unterscheiden, und man muss die Wörter tatsächlich lesen. Ich halte das für ein sehr unproduktives Design.
Diese Seite fühlt sich an, als wäre sie vor 20 Jahren geschrieben worden. Besonders Gründe wie Typsicherheit wären damals wohl viel überzeugender gewesen.
Ob das auch mit anderen Sprachen möglich ist, weiß ich nicht.
In extremen Fällen – etwa wenn man versucht, objektorientierten Code in einer obskuren Sprache oder einer XML-basierten Sprache mit nur imperativen Features zu schreiben – einmal ausgenommen, hängt Lesbarkeit meiner Meinung nach vom Leser ab.
Go war die einzige andere Sprache, der ich leicht folgen konnte, obwohl ich die Sprache selbst nicht gut kannte; Go ist aber viel einfacher und eingeschränkter. Free Pascal dagegen ist eine Kitchen-Sink-Sprache, in der praktisch alles steckt, und bleibt trotzdem vergleichsweise gut lesbar.
Der wichtigste Grund für Free Pascal ist für mich allerdings weniger die Sprache selbst als vielmehr die Lazarus IDE sowie die Frameworks FCL und LCL. Ein schneller Compiler, ein ordentlicher Optimierer, ein neues LLVM-Backend für Fälle, in denen man mehr Performance braucht, und viele unterstützte Plattformen sind ebenfalls Vorteile.
Auch Abwärtskompatibilität ist sehr wichtig. Wenn Code, der vor ein paar Jahren gut lief, ohne äußere Einflüsse kaputtgeht, ist es mir egal, wie sauber, konsistent und elegant die Sprache ist – für mich zählt, dass funktionierender Code weiter funktioniert.
Und nachdem man bestimmte Wörter ein paar Mal gesehen hat, „liest“ man sie nicht mehr in dem hier gemeinten Sinn, sondern gleicht sie eher wie Bilder mit anderen Wörtern im mentalen Wortschatz ab. Vorausgesetzt, im Sprachvokabular werden nicht sehr ähnliche Wörter verwendet, ist das Lesen von Wörtern nicht schwieriger als das Lesen von geschweiften Klammern.
Ein-Zeichen-Symbole können für manche Menschen schwer zu erfassen sein, so wie Wörter es für dich sind. Mit einer guten IDE und guter Codestruktur lässt sich auch Struktur leicht vom Code unterscheiden.
Der Hauptgrund, warum ich für Spiele eine Pascal-Game-Engine verwenden möchte, ist allerdings, dass man Garbage Collection vermeiden kann.
Verwandte Beiträge:
Why use Pascal? - https://news.ycombinator.com/item?id=36646890 - Juli 2023, 307 Kommentare
Modern Object Pascal Introduction for Programmers - https://news.ycombinator.com/item?id=36371434 - Juni 2023, 3 Kommentare
Castle Game Engine Roadmap - https://news.ycombinator.com/item?id=36365420 - Juni 2023, 10 Kommentare
Modern Object Pascal Introduction for Programmers - https://news.ycombinator.com/item?id=28079093 - August 2021, 3 Kommentare
Castle Game Engine: Cross-platform 3D and 2D game engine - https://news.ycombinator.com/item?id=23741883 - Juli 2020, 20 Kommentare
Castle Game Engine 6.4 released – physics, iOS services, shader pipeline upgrade - https://news.ycombinator.com/item?id=16207075 - Januar 2018, 2 Kommentare
Ich weiß nicht einmal mehr, wann ich zuletzt eine Sprache aus der Pascal-Familie benutzt habe. 2001 musste ich in einem Programmierkurs an der Uni Delphi verwenden; die Hochschule hatte Delphi 4, aber ich kaufte Delphi 5. Danach habe ich wohl noch ein oder zwei Jahre damit herumgespielt, aber seit 2005 vermutlich kaum noch
An der Uni mussten wir ein Lagerverwaltungsprogramm schreiben. Da es ein IT-Studiengang war, taten sich die meisten schwer, weil Programmieren nicht wirklich ihre Richtung war, aber ich war so etwas wie ein „Programmier-Wunderkind“ und kam sofort mit Delphi zurecht
Delphi selbst kannte ich nicht besonders gut, aber sobald ich anfing zu coden und
var,begin,end,:=usw. eintippte, wusste ich, dass es zur Pascal-Familie gehört. Weil ich in der Highschool Turbo C und Turbo Pascal hatte, war ich ein kleines Stück vorausSchwierig war, die Lagerdaten in einer Binärdatei zu speichern und die Daten per binärer Suche zu finden. Der Tutor war altmodisch; vielleicht hatte auch Delphi schon mehr eingebaute Lösungen, die man heute in Go oder C# als selbstverständlich ansieht
Alle hatten Mühe, den Build zum Laufen zu bekommen, und rückblickend ist das eine schöne Erinnerung. Heute stecke ich Pascal in dieselbe Kategorie wie Basic. Es wirkt wie ein interessantes Projekt, aber ich habe kein Interesse daran, Pascal zu verwenden, daher ist es für mich ein Ausschlusskriterium
Trotzdem würde es mich nicht überraschen, wenn es noch immer eine ziemlich große Pascal-Anhängerschaft gibt. Wenn dem so ist, ist das eine gute Sache für sie
Früher habe ich beim Portieren von Pascal-Code nach C
begin/enddurch geschweifte Klammern ersetzt, Interface-Deklarationen in Header-Dateien verschoben und gut benannte Funktionen durch kryptischestrtok-Aufrufe ersetzt. Im Vergleich war das unnötig hässlichHeute ist C meine Lieblingssprache, aber die Sauberkeit von Pascal und die Benutzerfreundlichkeit von Delphi erinnern mich immer wieder daran, wie eine hervorragende Developer Experience aussehen kann
Ich nutze Android Studio seit zehn Jahren, aber es kommt bei Weitem nicht an die Erfahrung mit Borland Delphi Architect vor 20 Jahren heran. Vielleicht hat es heute fortgeschrittenere Funktionen, aber im Vergleich wirkt es eher wie ein voneinander getrenntes Durcheinander
Nachdem ich zu Hause Basic gelernt hatte, war Pascal die erste „ernsthafte“ Programmiersprache, die ich in der Highschool lernte
Aber ein oder zwei Jahre später entdeckte ich C und schaute nie wieder zu Pascal zurück. C wirkte „professioneller“, flexibler und näher an der Hardware. Pascal schien eher zur Entwicklung von GUI-Apps zu passen, während C so wirkte, als könne es alles abdecken, von den tiefsten Interna eines Betriebssystems über Treiber und Spiele bis hin zu GUI-Apps
Natürlich war das eine dumme Vorstellung, denn Pascal konnte alles tun, was C tat, aber für mein jüngeres Ich wirkte es weniger „ernsthaft“ und weniger „professionell“
Um 1996/97 herum spielte ich mit Turbo Pascal herum und baute Feuereffekte; die meisten Tutorials verwendeten
asmundmode 13h, und ich hatte nur Turbo Pascal 5.5, das das Schlüsselwortasmnicht unterstützteNachdem ich etwas damit herumprobiert hatte, lernte ich Ende 1997 C kennen, und nachdem ich Cs
for-Schleife gesehen hatte, rührte ich Pascal nie wieder anCool. Ich hoffe, das Projekt läuft gut. Die Sprachwahl ist interessant; ich habe Pascal immer nur als alte Sprache betrachtet, aber offenbar lag ich da falsch
Ich habe mir den Code angesehen, weil ich neugierig war, wie eine große Pascal-Codebasis aussieht. Seit etwa 2001 hatte ich keinen Pascal-Code von nennenswertem Umfang mehr gesehen
Aufgefallen sind mir die Dateinamen: Dass allen Quelldateien
castlevorangestellt wird, gefällt mir nicht. Es macht es schwerer zu erkennen, worum es in einer Datei geht, und lässt alles ähnlich aussehenZum eigentlichen Code kann ich schwer etwas sagen, da ich nie Pascal benutzt habe, aber die Engine selbst sieht cool aus
yyzu geben. So erkennt man leicht, welche Dateien Castle-Dateien sind, und vermeidet Kollisionen mit Dateien oder Units anderer BibliothekenDas ist eher sinnloses Herumnörgeln
Ich habe das Gefühl, diese Pascal-Entwickler bekommen unglaublich produktiv Dinge erledigt
Dagegen habe ich bei populäreren Sprachen wie Rust, die ich für Projekte nutze, den Eindruck, dass viele Projekte in die Kategorie „grep zum 1000. Mal neu gebaut, aber diesmal richtig“ fallen
Es ist wirklich schade, dass das Produkt Delphi von Borland/Embarcadero so schlecht verwaltet wurde.
Object Pascal ist eine großartige Sprache. Heute kann man damit nativen Code für praktisch alle Plattformen erzeugen. Die erzeugten Binaries sind klein und schnell; sie liegen nahe an C, sodass man in der Regel davon ausgehen kann, dass sie 100- bis 10.000-mal schneller laufen als vergleichbarer Python-Code.
Castle Engine ist ein riesiges Projekt und macht es im RAD-Stil sehr einfach, Spiele und 3D-Anwendungen zu erstellen. Anders als andere große Pascal-Frameworks ist es kein Legacy-Produkt, sondern wird sehr aktiv weiterentwickelt. Ich habe wirklich großen Respekt vor den Entwicklern.
Ein ähnlich großes und beeindruckendes Projekt ist Mormot, ein ORM/SOA/MVC-Framework mit hochoptimierter Codebasis.
Serveranwendungen mit Object Pascal und Mormot zu bauen ist einfach; in Situationen, in denen NodeJS 500 Requests pro Sekunde verarbeiten kann, kann Pascal-Code in den Bereich von über 10.000 pro Sekunde kommen.
Wenn man in anderen Sprachen also Dutzende Server bräuchte, um die Last zu bewältigen, kann Object-Pascal-basierter Servercode problemlos auf einem einzelnen Server laufen. Mit dieser Sprache lassen sich die Kosten erheblich senken.
Viele erinnern sich an Object Pascal nur als Lehrsprache, aber die Sprache hat sich weiterentwickelt und besitzt weiterhin Funktionen, die andere Sprachen nicht haben. Besonders wichtig ist RTTI, also Reflection. Es gibt nur einen Bereich, in dem sie modernen Entwicklungen hinterherhinkt: Multithreading/Coroutines sind nicht wie bei Go in die Sprache selbst integriert.
Und schließlich lässt sich Code, der vor 40 Jahren geschrieben wurde, heute noch kompilieren und ausführen. In diesen 40 Jahren sind unzählige Sprachen populär geworden und wieder verschwunden, aber Pascal ist immer noch da.
Zurück zur Castle Engine: Selbst wenn man mit Object Pascal nicht vertraut ist, empfehle ich unbedingt, ihren visuellen Editor auszuprobieren. Er ist wirklich erstaunlich.
Die Zeit, in der ich mit Pascal (Turbo/Borland) programmiert habe, hat am meisten Spaß gemacht. Die Kompiliereinheit „Unit“ funktionierte einfach gut, und die Abhängigkeitshierarchie erlaubte nur eine DAG-Form. Kompilieren und Verwenden waren sehr schnell, ebenso Editieren und Debuggen.
Beim Wechsel zu Delphi hatte ich das Gefühl, dass etwas verloren ging. Das heißt nicht, dass es ein schlechtes Produkt war, aber die Leute begannen, sich anderswo umzusehen.
Trotzdem schätze ich diese Zeit noch immer: Dank Pascal bekam ich den Einstieg, um von Apple Basic zu C/C++ zu wechseln, und konnte nach und nach auch etwas Inline-Assembly verwenden und lernen.