1 Punkte von GN⁺ 2024-02-21 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2024-02-21
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.

    • Ich stimme zu, dass es etwas langweilig wird, wenn man es jeden Tag liest, aber außer Pascal habe ich noch keine Sprache gesehen, zu der man nach drei Jahren zurückkehren und sie sofort problemlos lesen kann.
      Ob das auch mit anderen Sprachen möglich ist, weiß ich nicht.
    • Dem kann ich schwer zustimmen. Ich habe an mehreren Free Pascal-, C-, C++- und anderen Projekten gearbeitet, und bei großen Projekten war fremder Code in Free Pascal leichter nachzuvollziehen als in C/C++/Java usw.
      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.
    • Zunächst einmal gibt es Syntax-Highlighting.
      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.
    • Für Menschen, die Symbole nicht mögen, können Wörter hilfreich sein. C ist sehr knapp, Pascal ist ausführlich. Das ist ähnlich wie der Unterschied zwischen C und Python.
      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.
    • Ob C oder Pascal leichter zu lesen ist, ist Geschmackssache. Wie bei Editor-Farben kann je nach Stimmung oder Tageszeit mal das eine, mal das andere leichter lesbar wirken.
      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 voraus
    Schwierig 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

    • Wir sind vermutlich in einer ähnlichen Altersgruppe. In der Highschool habe ich mit Turbo Pascal einfache Spiele und Grafik-Apps gebaut, später dann mit Delphi Geschäftsanwendungen. Aus Sicht des Sprachdesigns finde ich die Unterschiede zwischen Pascal und C gar nicht so groß
      Früher habe ich beim Portieren von Pascal-Code nach C begin/end durch geschweifte Klammern ersetzt, Interface-Deklarationen in Header-Dateien verschoben und gut benannte Funktionen durch kryptische strtok-Aufrufe ersetzt. Im Vergleich war das unnötig hässlich
      Heute 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
    • Welche Sprache würdest du heute lieber verwenden?
  • 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“

    • Ich habe Ähnliches erlebt
      Um 1996/97 herum spielte ich mit Turbo Pascal herum und baute Feuereffekte; die meisten Tutorials verwendeten asm und mode 13h, und ich hatte nur Turbo Pascal 5.5, das das Schlüsselwort asm nicht unterstützte
      Nachdem 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 an
  • Cool. 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

    • Wie sich herausstellt, ist Go im Großen und Ganzen Pascal mit geschweiften Klammern, und niemand nennt Go altmodisch
  • 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 castle vorangestellt wird, gefällt mir nicht. Es macht es schwerer zu erkennen, worum es in einer Datei geht, und lässt alles ähnlich aussehen
    Zum eigentlichen Code kann ich schwer etwas sagen, da ich nie Pascal benutzt habe, aber die Engine selbst sieht cool aus

    • Das ist nicht anders, als yacc-Dateien das Präfix yy zu geben. So erkennt man leicht, welche Dateien Castle-Dateien sind, und vermeidet Kollisionen mit Dateien oder Units anderer Bibliotheken
      Das ist eher sinnloses Herumnörgeln
  • Ich habe das Gefühl, diese Pascal-Entwickler bekommen unglaublich produktiv Dinge erledigt

    • Wenn man sich die verfügbaren Delphi/FPC-Bibliotheken ansieht, fehlt praktisch nichts. Von CAD-Zeichenwidgets bis hin zu Frameworks zum Bau von SCADA-Systemen gibt es alles. Das meiste ist nicht auf GitHub, und selbst wenn doch, hat es nicht hunderte Sterne
      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
    • Object Pascal ist eine moderne Programmiersprache. Sie unterstützt alles, was man von einer modernen objektorientierten Sprache erwartet: Klassen, Units, Properties, Generics, Interfaces, Reflection, Closures usw.
  • 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.