2 Punkte von GN⁺ 2024-09-09 | 1 Kommentare | Auf WhatsApp teilen
  • Was ist coreCore?

    • coreCore ist eine experimentelle Methode zum Erstellen von Videospielen in Form eines Action-RPG-Spielentwicklungswerkzeugs, einer Engine und eines Eigenschaftseditors
    • Es verwendet ein einfaches Komponentensystem, wobei Komponenten Clojure-Vektoren in der Form [keyword value] sind
    • Verschiedene Entitäten bestehen aus Clojure-Maps
    • Seiteneffekte im Spiel werden über Komponenten wie [:tx/foo param] verarbeitet, was einer Datomic-Struktur ähnelt
    • Der gesamte Spielzustand wird in einem einzigen Atom namens app/state gespeichert, und Entitäten existieren ebenfalls als Atome innerhalb des Haupt-Atoms
    • Der gesamte Inhalt der Anwendung wird in resources/properties.edn gespeichert, mit malli-schemas validiert und kann per GUI bearbeitet werden
  • Screenshots

  • So startet man die Entwicklung

    • Den folgenden Befehl eingeben:
      • lein dev
    • Die Anwendung startet und führt außerdem Folgendes aus:
      • Startet einen NREPL-Server
      • Beim Beenden der Anwendung (ESC im Hauptmenü) lädt clojure.tools.namespace geänderte Dateien neu und startet die App erneut
      • Tritt ein Fehler auf, muss die JVM nicht neu gestartet werden; stattdessen den Fehler beheben und dev-loop/restart! aufrufen
      • In VIM kann man die F5-Taste mit folgendem Befehl belegen: nmap <F5> :Eval (do (in-ns 'dev-loop)(restart!))
  • Code-Lizenz

    • Bereitgestellt unter der MIT-Lizenz
  • Asset-Lizenz

Zusammenfassung von GN⁺

  • coreCore ist ein Werkzeug, mit dem sich Action-RPG-Spiele einfach erstellen lassen und das mithilfe eines einfachen Komponentensystems den Spielzustand verwaltet
  • Der gesamte Spielzustand wird in einem einzigen Atom gespeichert, und Eigenschaften lassen sich über eine GUI bearbeiten, was für Entwickler nützlich ist
  • Es wird unter der MIT-Lizenz bereitgestellt, die verwendeten Assets sind jedoch proprietär
  • Ähnliche Werkzeuge mit vergleichbaren Funktionen sind RPG Maker und Unity

1 Kommentare

 
GN⁺ 2024-09-09
Hacker-News-Kommentare
  • Es ist interessant, verschiedene Ansätze der Spieleentwicklung zu sehen.

    • Bevy (Rust-ECS-Engine): anfangs gut, aber bei der Umsetzung problematisch und potenziell komplex
    • Unity: GameObjects und das System modularer Komponenten sind praktisch
    • Godot: Die OOP-Hierarchie und die eingebaute Sprache waren unbefriedigend
    • Pygame: gut für kleine Projekte, prozedural, aber man kann OOP- oder funktionale Schichten darauf aufbauen
    • Clojure: die funktionale Umsetzung ist interessant
  • Dieses GitHub-Projekt wirkt auf Spieleentwickler lächerlich.

    • Der akademische Ansatz fühlt sich überzogen an
    • Die Screenshots sind unansehnlich
  • Es wird behauptet, Spieleentwicklung vereinfachen zu können, aber dabei werden viele Fachbegriffe verwendet.

    • Clojure-Vektoren, Datomics, Atome, Transaktionen, Malli-Schemata usw.
  • Dieses Projekt scheint gescheitert zu sein.

    • Übermäßig überentworfene Struktur und fehlende klare Architektur
    • Es gab keine Spielidee, daher wurde ohne klare Richtung programmiert
  • Dieses Repository erzeugt trotz fast fehlender Dokumentation viele Diskussionen.

    • Der Code wirkt eher wie ein Projekt als wie eine Game-Engine
    • Der Eigenschaften-Editor ist interessant
    • Es scheint, als sei es wegen des Titels hochgevotet worden
  • Man sieht oft, wie aus dem Wunsch „Ich will ein Spiel machen“ am Ende das Bauen einer Game-Engine wird.

    • Man verfällt der Vorstellung, dass das Schreiben des Engine-Codes zuerst den Rest der Spieleentwicklung leichter machen wird
    • Eine Engine zu bauen kann mehr Spaß machen, als ein Spiel zu bauen
    • Das Optimieren einer Engine liefert schnellere Erfolgserlebnisse
    • Es wurde versucht, mit der Phaser-js-Engine schnell etwas Interaktives auf den Bildschirm zu bringen
  • Ich liebe Clojure, frage mich aber, ob eine funktionale Sprache mit unveränderlichen Datenstrukturen für die Spieleentwicklung geeignet ist.

  • Der Spielzustand wird in einem einzigen Atom gespeichert, und die Entitäten darin wiederum als Atome.

    • Es ist fraglich, ob man „Atom“ in Clojure üblicherweise so verwendet
  • Es wäre interessant, Daten zu „Zeit/Komplexität für die Game-Engine“ vs. „Komplexität/Interessantheit des resultierenden Spiels“ zu analysieren.

    • Es ist zu erwarten, dass die Vielfalt von Spielen, die mit einfachen Template-/Engine-Systemen erstellt werden, abnimmt
  • Es gibt bereits Core, eine kommerzielle Plattform zur Erstellung von Spielen, die auf Unreal Engine 4 basiert.