Plugoon - Unreal Package Manager

  • Hey Leute,


    Ich bin ma wieder hier um ein kleines Projekt von mir Vorzustellen.


    Bei Plugoon handelt es sich um einen Unreal Package Manager. Dabei habe ich mich von gängigen Paket Managern wie NPM oder dem Unity Packet Manager inspirieren lassen.

    Die aktuellen Features beinhalten einen Plugin Store über den Plugins runter geladen werden können. (Der ist aktuell noch ziemlich leer aber ich habe vor das in den nächsten Monaten zu ändern.)


    und die Möglichkeit eigene Plugins in den Store zu stellen. Die Plugins können Abhängigkeiten zu anderen Plugins beinhalten. Ist dies der Fall werden die Abhängigkeiten automatisch bei der Installation mit installiert.


    Der Grund warum ich dieses Projekt umgesetzt habe war, dass ich privat in meinen Projekten sehr gerne Modular arbeite. Dabei habe ich aber regelmässig den Überblick über all meine Module und Abhängigkeiten verloren.


    Plugoon befindet sich aktuell noch in einer Test Version. Das heisst einige Dinge funktionieren noch etwas suboptimal:

    - Das UI funktioniert aktuell noch nicht asynchron (friert ein bei Anfragen an den Server)

    - Plugin Icons werden noch nicht sauber aus dem Repository geladen


    um nur einige Dinge zu nennen.


    Zukünftig habe ich vor noch weiter Features wie zum Beispiel privaten Repository Support hinzu zu fügen.


    Auch wenn der Installer noch nicht ganz fertig ist, wollte ich ihn hier schonmal vorstellen um erste Feedbacks zu kriegen.


    Ihr könnt den Installer hier herunter laden:

    https://github.com/Plugoon/PlugoonInstaller/releases


    Hier findet ihr eine Wiki Seite die bei der Installation hilft.

    https://github.com/Plugoon/PlugoonInstaller/wiki


    In der Testphase ist es noch notwendig einen Account zu erstellen um auf den Installer zuzugreifen. Dies ist einfach eine zusätzliche Massnahme um das Backend vor ungewünschten Requests zu schützen.

    Selbstredend werden die E-Mail Adressen nicht an dritte weiter gegeben und auf Anfrage (PN hier im Forum) werde ich die Accounts entfernen.


    Um den Installer zukünftig zu verbessern habe ich hier eine Umfrage erstellt. Bitte füllt diese aus :)

    https://docs.google.com/forms/…Oyow8aeIX0fEJ1gPisDg/edit


    Ich lade euch gerne dazu ein den Installer herunter zu laden, zu testen und auch eigene Plugins in dem Store hinzu zu fügen (Anleitung hierzu findet Ihr im Wiki)


    Für Fragen oder Anmerkungen stehe ich gerne zur Verfügung.


    Gruss Veelos

  • Erstmal - schlecht finde ich die Idee nicht. Die Umsetzung finde ich derzeit "etwas dünn" - aber gut du hast ja geschrieben dass es noch nicht fertig ist.


    Also hier meine Kritik bzw was mit so aufgefallen ist oder gefehlt hat. Nicht böse gemeint, aber nur "hui wie toll" bringt sich ja auch nicht weiter. Also nehmen oder lassen.


    - Erstmal die Source. Es ist nix kommentiert und die paar Kommentare die drin sind wirken als wären sie von woanders übernommen. Es gibt keinerlei Doku zur Source und das ganze ist erst mal super unübersichtlich und vom Naming her unglücklich. A_Core, AC_Core, GI_Core, O_Core, PC_Core. Ich bin mir sicher dass dir die ein-zwei Buchstaben Abkürzungen irgendetwas sagen, aber niemandem sonst fürchte ich. Ja GI ist Game Instance, PC ist der PlayerController usw. Was ich mir hier wünschen würde wäre wenigstens eine Stichworthafte Doku die beschreibt wozu welche Source gut ist.Klar kann man sich durch sämtliche Source files durchhangeln - daran hat aber nicht jeder potentielle Mitstreiter interesse. Und dokumentiere doch durch Kommentare wenigstens grundlegend was du da gerade machst und warum. Mir ist z.B. immer noch nicht klar ob und warum ein System um Plugins runterzuladen einen PlayerCharacter spawnen muss.


    - Tags und der Content (Die Plugins) allgemein. Kudos dafür die Icons der Plugins auszulesen - auch wenn gefühlt 90% der open source plugins eh nur die default icons nutzen - Schritt in die richtige Richtung. Die Tags - finde ich so wie sie sind nicht gut. ich würde da eher verpflichtende Properties machen. Die UE Version kann man ja aus der uplugin auslesen, das ist erst mal das wichtigste property und sollte sicherlich kein optionales Tag sein. Wenn ich 4.27.2 nutze will ich ja kein UE5 plugin runterladen und so. Dann vermisse ich die Unterscheidung "Engine vs. Project" plugin bzw "hybrid". Grundsätzlich sollte auch erkenntlich sein ob es "Editor oder Runtime" (Oder beides) ist. Auch recht wichtig "Rein Blueprint", "Rein C++" oder "Hybrid". Eine sinnige Kategorisierung ist schwierig da plugins ja grundsätzlich alles enthalten können was nur denkbar ist, aber ich denke man sollte es wenigstens versuchen.


    - Account. Mit dem Account erstellen ist nachvollziehbar aber es lässt so einen bitteren Beigeschmack a la "Wird das mal was kosten?", "Will der irgendwann Werbung machen?", "ist das überhaupt neutral"?


    - Von anderen lernen. Ich habe viel Respekt für libretro. Die haben einen richtig guten buildbot der jede nacht die Sourcen selber buildet. Klar kann man sich zurücklehnen und auf releases hoffen und dass irgendwer die einträgt aber ich glaube da kann man sich das eine oder andere abschauen.

  • Also hier meine Kritik bzw was mit so aufgefallen ist oder gefehlt hat. Nicht böse gemeint, aber nur "hui wie toll" bringt sich ja auch nicht weiter. Also nehmen oder lassen.

    Keine Sorge ich nehme niemandem seine Kritik krum. Immerhin habe ich danach gefragt. Trotzdem habe ich noch ein paar Fragen zu einigen Punkten.

    - Erstmal die Source. Es ist nix kommentiert und die paar Kommentare die drin sind wirken als wären sie von woanders übernommen. Es gibt keinerlei Doku zur Source und das ganze ist erst mal super unübersichtlich und vom Naming her unglücklich. A_Core, AC_Core, GI_Core, O_Core, PC_Core. Ich bin mir sicher dass dir die ein-zwei Buchstaben Abkürzungen irgendetwas sagen, aber niemandem sonst fürchte ich. Ja GI ist Game Instance, PC ist der PlayerController usw. Was ich mir hier wünschen würde wäre wenigstens eine Stichworthafte Doku die beschreibt wozu welche Source gut ist.Klar kann man sich durch sämtliche Source files durchhangeln - daran hat aber nicht jeder potentielle Mitstreiter interesse. Und dokumentiere doch durch Kommentare wenigstens grundlegend was du da gerade machst und warum. Mir ist z.B. immer noch nicht klar ob und warum ein System um Plugins runterzuladen einen PlayerCharacter spawnen muss.

    Ich glaube hier steht ein Missverständnis im Raum. Ich entwickle aktuell ausschliesslich an dem Paket Manager. Keine Inhalte. Das Plugoon.Core ist aus Testgründen drin. Hat aber mit dem Installer wenig zu tun. Plugins die ich später für diesen Installer erstelle werden natürlich entsprechend Kommentiert sein. Mir geht es aber aktuell ausschliesslich um den Paket Manager selber.


    Die UE Version kann man ja aus der uplugin auslesen, das ist erst mal das wichtigste property und sollte sicherlich kein optionales Tag sein. Wenn ich 4.27.2 nutze will ich ja kein UE5 plugin runterladen und so.

    Bei dem Versionstag verwechselst du etwas. Die Version steht für die Plugin Version. Der Paket Manager zeigt dir ausschliesslich Versionen an, die mit deiner aktuellen verwendeten Engine Version kompatibel sind. Pakete für andere Versionen werden Präventiv gefiltert.

    Dann vermisse ich die Unterscheidung "Engine vs. Project" plugin bzw "hybrid". Grundsätzlich sollte auch erkenntlich sein ob es "Editor oder Runtime" (Oder beides) ist. Auch recht wichtig "Rein Blueprint", "Rein C++" oder "Hybrid". Eine sinnige Kategorisierung ist schwierig da plugins ja grundsätzlich alles enthalten können was nur denkbar ist, aber ich denke man sollte es wenigstens versuchen.

    Bin ich absolut deiner Meinung. Ist in Planung und kommt noch. Mir ging es darum mit dem Installer so schnell wie möglich (mit dem MVP) an die Community zu treten um so schnell wie möglich Feedback rein zu kriegen. Deshalb fehlen noch viele Features. Feedbacks wie deines helfen mir aber dabei die Zukünftigen Features zu priorisieren.

    - Account. Mit dem Account erstellen ist nachvollziehbar aber es lässt so einen bitteren Beigeschmack a la "Wird das mal was kosten?", "Will der irgendwann Werbung machen?", "ist das überhaupt neutral"?

    Verständlich. Zukünftig möchte ich das reine Runterladen und installieren von Plugins ohne Anmeldung möglich machen. Die Anmeldung wird nur dann notwendig wenn man eigene Plugins verwaltet (Die muss ich ja irgend einer Identität zuweisen).

    Ich habe in nicht vor die Accounts für etwas anderes als Identity Management zu verwenden. Deshalb betone ich hier nochmals: (Wenn jemand seinen Account gelöscht haben möchte, werde ich das sofort tun).

    Der Grund warum ich mich in der frühen Testphase für einen Account Zwang entschieden habe ist um mich vor ungewünschten Anfragen aus Asien zu schützen. Bei einer öffentlichen API kommt dies häufiger vor und das würde meiner Brieftasche etwas weh tun.

    - Von anderen lernen. Ich habe viel Respekt für libretro. Die haben einen richtig guten buildbot der jede nacht die Sourcen selber buildet. Klar kann man sich zurücklehnen und auf releases hoffen und dass irgendwer die einträgt aber ich glaube da kann man sich das eine oder andere abschauen.

    Libretro sagt mir ehrlich gesagt nichts und ich sehe keine direkte Verbindung zu einem Paket Manager? Vielleicht stehe ich auf dem schlauch.


    Der Paket Manager ist ausschliesslich dazu gedacht, dass Leute ihre Plugins auf einfache art und weise der Community zur Verfügung stellen können. Ähnlich dem Node Package Manager, dem .NET Framework oder der Python Library.

    Mir ist z.B. immer noch nicht klar ob und warum ein System um Plugins runterzuladen einen PlayerCharacter spawnen muss.

    Damit hast du mich richtig verwirrt. Das System muss keinen PlayerCharacter spawnen? Wie kommst du darauf?


    Jedenfalls Danke für dein Feedback und ich hoffe du kannst mir meine offenen Fragen beantworten.


    Gruss Veelos

  • OK dann hab ich schon mal etwas falsch verstanden. Das "Core" Paket ist also nur ein "Test". Bei "Core" dachte ich es ist eine zentrale Komponente. Da ist der Name vielleicht etwas unglücklich gewählt. Und dann hast du in der Doku zum Installer in dem Beispiel auch die Abhängigkeit des neuen Plugins auf "Core" gesetzt. Ich würde den "Core" dann eher in "Demo" umbenennen, das hatte mich extrem verwirrt. Bei "Installer" dachte ich es geht nur darum Plugoon selber zu installieren. Das ist beides von der Namensgebung etwas unglücklich. Da entschuldige ich mich dass ich es so missverstanden habe.


    Libretro lege ich dir mal ans Herz. Der Fokus ist natürlich ein anderer - Libretro ist ein Emulator Framework. Aber grundsätzlich gibt es Ähnlichkeiten - so gibt es um die Hundert Cores die der Libretro jede Nacht kompiliert und somit immer die neueste Version zur Verfügung stellt - auch wenn das Repository kein Release beinhaltet. Das fand ich persönlich eine sehr gute idee da viele Entwickler weder Lust noch Interesse haben releases überhaupt zur Verfügung zu stellen ("Hier ist die Source, was wollt ihr von mir?") - oder dies definitiv zu selten tun. Dazu ist ein release oft nur für 1 oder 2 Plattformen erstellt.


    Die Analogie sind hier die Plugins und die Cores - beides von vielen Entwicklern auf Github bereitgestellte Sourcen die man "einsammeln möchte um sie in einem tool per Klick verfügbar zu machen". Also obwohl es um etwas ganz anderes geht eigentlich der gleiche Gedanke.


    Das schöne dabei ist natürlich dass der Buildbot auch für verschiedene Plattformen buildet - also nicht nur für Windows x64.



    https://buildbot.libretro.com/nightly/windows/x86_64/latest/



    Wie der buildbot funktioniert kannst du hier sehen und ausprobieren (Der aktuelle weicht ein wenig ab aber die Mechanik ist die gleiche):


    https://github.com/libretro/libretro-super



    Natürlich kannst du machen was du willst. Aber so ein Buildbot würde dafür sorgen dass dein Plugoon eben neuere Versionen bietet als jede andere Quelle und Plattformen die man sonst nicht bekommt (Mal in Bezug auf "Releases"). Sprich das wäre eigentlich DAS Killer Argument warum ich jedem sagen würde "Nimm Plugoon, sonst bist du doof".

  • Die Analogie sind hier die Plugins und die Cores - beides von vielen Entwicklern auf Github bereitgestellte Sourcen die man "einsammeln möchte um sie in einem tool per Klick verfügbar zu machen". Also obwohl es um etwas ganz anderes geht eigentlich der gleiche Gedanke.

    Achsoo jetzt weiss ich was du meinst. Grundlegen den CI/CD Prozess von der Entwickler Seite auf den Installer auszulagern?


    Ich Kategorisiere das mal als Feature Request für die Zukunft.


    Das Problem in meiner aktuellen Lage hast du hier selber ganz gut beschrieben "von vielen Entwicklern...". Die Kosten die für sowas Anfallen (Build Prozesse müssten ja irgendwo laufen) kann ich aktuell nicht tragen.

    Ich mache das Projekt aktuell alleine und verfüge leider nicht über die Ressourcen um sowas im aktuellen Stand auch nur in Erwägung zu ziehen.


    Alternativ kann ich mir aber mal die Building Pipelines von GitHub genauer ansehen und diese als Template zur Verfügung stellen.


    Btw, das wäre bereits jetzt für jeden der Plugoon nutzen möchte theoretisch möglich, wenn man sich mit Github Pipelines auskennt. Ich könnte dann auch die API so erweitern, dass ein automatisches hinzufügen von deployten Packages möglich wäre.

    Soll heissen -> automatisches deployment auf Plugoon, sobald der Entwickler am Source etwas ändert. (Sofern der Entwickler bei sich die Pipelines eingerichtet hat)

  • Hallo Leute,


    Ich habe noch ein kleine Update gemacht.


    Bei dem Anlegen von einem eigenen Plugin können jetzt mehr Informationen gespeichert werden:


    Diese Verlinkungen werden dann im Store angezeigt sofern diese ausgefüllt wurden:


    Weiterhin habe ich direkt im Installer eine Feedback Funktion eingebaut damit Ihr nicht mal mehr den Unreal Editor verlassen müsst um mich anmeckern zu können :S


    Weiterhin habe ich einen Bug gefixt, der die Leute automatisch nach einer Stunde aus geloggt hat.


    In der neusten Version :

    https://github.com/Plugoon/Plu…ses/tag/UE5.0-v1.1.1-beta


    wurde auch eine gepackte Version des Plugins mit hochgeladen, damit es nicht mehr notwendig ist das Plugin über C++ selber zu kompilieren. (Der Installer kann jetzt auch in reinen Blueprint Projekten verwendet werden)

    An dieser Stelle ein kleiner Hinweis. Ein gepacktes Plugin verfügt über lustige Binary Dateien. Auf diese reagiert jedes halbwegs anständige Virenprogramm und auch Windows sehr allergisch sofern diese nicht aus einer Bekannten Quelle stammen.

    Mein GitHub Repository ist keine bekannte Quelle. Deshalb nicht wundern, wenn das Virenprogramm anschlägt.


    Später werde ich den Installer über den Unreal Marketplace zur Verfügung stellen (ich weiss ironisch ^^ ) . Bei Epic handelt es sich um eine bekannte Quelle und dann sollte das Virenprogramm auch nicht mehr anschlagen.


    Gruss Veelos