Verzweifelt Hilfe gesucht

  • Hy zusammen. Seit zwei Jahren versuche ich erfolgversprechende Apps zu programmieren. Die Grundkenntnisse von UE habe ich mir selbst beigebracht. Und genau das ist der Hauptgrund, warum ich kein Projekt fertigstellen kann. Ich bin dann in Details einfach zu doof oder zu unerfahren. Als Beispiel kann ich immer wieder das SaveGame erwähnen. Wenn jemand Freude, Zeit und Geduld hat einem gelernten Gärtner unter die Arme zu greifen und seinen Traum zu verwirklichen, dann melde Dich. Muss ja nicht unendgeldlich sein :), wäre aber für den Anfang ganz nett. Gruß Johann

  • Sleepy

    Hat das Thema freigeschaltet.
  • Beim jetzigen Projekt würde ich UE bevorzugen, weil, es geht um eine lernapp mit einer spielbaren Umgebung. Bei der zweiten hast Du mit Sicherheit recht, weil es im Grunde nur eine Textbasierte App wird.

  • Kommt ja darauf an, wie du die Spielelemente umsetzt. MAUI hat da auch gewisse Fähigkeiten. Wenn du da jetzt irgendetwas krass 3D Aktion mäßiges umsetzen willst, klar, dann ist es die Unreal Engine. Ansonsten halte ich die für vieles anderes für etwas overpowerd. Zumal, also ich selber schreibe jetzt nicht für Android und Co. bei den Projekten, aber einige hier tun es halt, scheint es nicht immer ganz einfach zu sein, die Projekte dann auf das Android zu bekommen, gerade, wenn es sich vielleicht auch um eine nicht top aktuelle Version von Android handelt.

    Aber wie gesagt, das schlussfolgere ich jetzt so aus einigen Hilfeanfragen aus diesem Forum, da es mich selber jetzt nicht betrifft.

  • Bei meiner geplanten App geht es um folgendes, nur damit alle Zweifel aus dem Weg geräumt werden und der Rat auch daraufhin bezogen werden kann. Es soll eine Mathe-Lernapp für Kinder werden. Sie können Aufgaben lösen und dafür eine Apppwährung erspielen. Mit dieser können sie auf einer leeren Insel Sachen kaufen und platzieren, zb Baum, Stein, Haus, etc. Geplant ist später auch Gegenstände, die eine kleine Quest hergeben....ja so vom Prinzip soll's werden.

    • Offizieller Beitrag

    Ich denke auch, dass Unreal dafür etwas überdimensioniert ist. Du solltest nicht vergessen, dass am Ende eine kompilierte Version entsteht, die für eine Kinder-App viel zu groß sein könnte. (Stichwort: erstmal 3 GB runterladen)


    Meine Idee wäre, falls du 3D-Elemente verwenden möchtest, diese mit WebGL umzusetzen.


    WebGL läuft in allen modernen Browsern und ist plattformunabhängig – egal ob PC, Mac, Handy oder Tablet. Es gibt viele Frameworks, die dir die Arbeit erleichtern, und die Integration erfolgt mithilfe von HTML5, CSS oder JavaScript.


    Du kannst auch hybride Apps entwickeln, die auf HTML, CSS und JavaScript basieren, aber nach außen hin wie normale Handy-Apps wirken.


    Vielleicht hast du ja aber auch andere Gründe warum du Unreal verwenden willst ?

  • (Stichwort: erstmal 3 GB runterladen)

    Ich kenne mich mit Handyapps ja nicht so aus, wie gesagt, ist nicht so mein Interessengebiet. Aber bist du sicher, dass nach der Compilierung dann auch eine 3 GB App rauskommt? Können Smartphones mit solchen riesigen Apps überhaupt umgehen?

    Aber klein wird das Programm definitiv nicht, das ist schon richtig.

    Und MAUI, das basiert auf C#, ist halt eine recht neue Technik, was Plattform übergreifende Programmierung angeht. Also, das kann schon einiges, was du oben halt mit CSS, HTML5 und Javascript etc. aufgezählt hast.

    Ich würde das echt mal versuchen. Es braucht ja nicht immer eine Engine. Ich habe damals ja mit dem C64 angefangen, da gab es noch gar nicht sowas Komplexes wie eine Engine. Man bekam aber mit etwas Übung trotzdem sehr coole Spiele raus, zumindest für damalige Verhältnisse und wie ich persönlich finde, heute auch noch. Sind halt Klassiker.

    So ähnlich würde ich auch vorgehen, wie damals, mit Sprites, die man ja auch in 3D zeichnen kann usw. Ich denke, das passt schon. Zudem kannst du es unter Visual Studio Community 2022 auch gleich ausprobieren, ohne es jedes Mal aufs Handy laden zu müssen.

    Allerdings, MAUI ist halt noch so neu, da gibt es bisher relativ wenige Tutorials und auf Deutsch natürlich noch weniger. Aber, wenn du eh anfangen willst, warum nicht?

    • Offizieller Beitrag

    Für Mobilgeräte gibt es unterschiedliche Größenbeschränkungen für Apps, die von den jeweiligen Plattformen vorgegeben werden. Viele dieser Begrenzungen können jedoch durch verschiedene Techniken – ich nenne es mal "Optimierungen" – umgangen werden.

    Apple

    • Laut den Richtlinien von Apple sind maximal 4 GB für eine App erlaubt.
    • Es wird jedoch empfohlen, die Größe der App unter 200 MB zu halten, damit sie auch über mobile Daten heruntergeladen werden kann.
    • Eine Möglichkeit, die App-Größe zu reduzieren, ist die Nutzung von On-Demand Resources. Dabei können bestimmte Inhalte, wie z. B. 3D-Assets, bei Bedarf aus dem Internet geladen und später verworfen werden.
    • Ein Beispiel: 3D-Modelle für Level 1 könnten aus dem Netz geladen und nach Abschluss des Levels wieder entfernt werden, bevor Inhalte für Level 2 heruntergeladen werden.
    • Ob das sinnvoll ist, hängt stark von der Art der App und der Zielgruppe ab.

    Android

    • Die Größenbeschränkungen sind bei Android etwas strenger:
    • APK-Größe: maximal 100–150 MB.
    • Für größere Apps müssen zusätzliche Inhalte über App Bundles oder OBB-Dateien bereitgestellt werden.

    Ein wichtiger Aspekt, der über die reine Größe hinausgeht, ist die Nutzerfreundlichkeit.


    Viele Nutzer würden zögern, ein Spiel herunterzuladen, das mehrere Gigabyte groß ist – insbesondere, wenn sie nur ein begrenztes Datenvolumen zur Verfügung haben (z. B. 3 GB pro Monat).


    Eine 3-GB-App könnte viele potenzielle Spieler abschrecken, da sie nicht nur viel Speicherplatz, sondern auch erheblich Bandbreite beansprucht.

    Technische Begrenzungen bei 3D-Inhalten für Mobilgeräte

    • Polygonanzahl (Polycount):
      • Charaktere sollten im Mobilbereich in der Regel nicht mehr als 5.000–15.000 Polygone haben.
      • Ein hoher Polycount erhöht die Rechenleistung, aber auch die App-Größe.
    • Texturauflösungen:
      • Texturen sollten 2K (2048x2048) nicht überschreiten, da höhere Auflösungen wie 4K für den Mobilbereich unpraktisch sind.
      • Ein Texturatlas im 4K-Format ist für Mobilgeräte in der Regel zu groß.
    • Texturformate:
      • Für mobile Spiele wird oft JPG bevorzugt, da Formate wie PNG oder TIF zu viel Speicherplatz beanspruchen.

    Mit einer geschickten Kombination aus Optimierungstechniken, wie dem Einsatz von On-Demand Resources, der Nutzung effizienter Texturformate und dem Vermeiden unnötig hoher Auflösungen, lässt sich die Größe einer App deutlich reduzieren, ohne dass die Nutzererfahrung leidet. So können auch auf mobilen Geräten beeindruckende Spiele entwickelt werden, die die Speicher- und Leistungsbeschränkungen berücksichtigen.

  • Erst mal ein riesiges Dankeschön an alle, für Eure Hilfe,Rat und Mühe.

    Zu....."Vielleicht hast du ja aber auch andere Gründe warum du Unreal verwenden willst ?".... Ich muss gestehen, von richtiger Programmierung verstehe ich so gut, wie gar nichts. Habe mir mühsam Unreal Engine mit blueprints beigebracht. Etwas neues zu erlernen wäre denkbar, aber zeitlich.... Naja. Neben Familie und Job bleiben nicht viele Stunden. ....Das mit der Größe der Anwendung, baue alle Elemente selber über Blender als lowpoly. Die meisten Sachen haben Polygone unter 100. Kleine Kinder haben irgendwie nicht einen so hohen Anspruch auf Realismus, wie ältere. 😜 (Mein Sohn ist im Moment noch sehr zufrieden). ... danke nochmals für die ganzen Tipps, wie ich weitere Größe einsparen kann, werde mal sehen, ob ich die 200mb schaffe, ( momentan ca 700). Die anderen Programme sehe ich mir auch mal an. Vielleicht ist ja wirklich was dabei, was ich verstehe und relativ schnell erlernen kann. Gruß Johann 👋

    • Offizieller Beitrag

    Habe mir mühsam Unreal Engine mit blueprints beigebracht.

    Das klassische Unreal ist cool, und deshalb möchte ich Unreal verwenden. Man geht ja auch immer den Weg des geringsten Widerstands.


    Was vielleicht auch eine Idee wäre: Unreal Pixel Streaming – ein eher unpassender Name für etwas wirklich Geniales.

    Mit Pixel Streaming könntest du deine App auf einem leistungsstarken PC ausführen und das, was der Nutzer sieht, über das Internet übertragen, ähnlich wie bei Zoom oder Google Meets.

    So lassen sich auch anspruchsvolle Grafiken auf ein Handy streamen, und die App bleibt dabei klein.

    Der Nachteil ist, dass man immer eine Internetverbindung braucht und vor allem schnelles Internet erforderlich ist.

  • Der Nachteil ist, dass man immer eine Internetverbindung braucht und vor allem schnelles Internet erforderlich ist.

    Ein weiterer Nachteil wäre natürlich, dass auch der Rechner mit dem Spiel noch zusätzlich extra laufen muss. Wenn ich das Projekt richtig verstanden habe, dann ist das wohl eher nicht notwendig.

    Aber, es ist ja in Unreal machbar. Ich würde mir die Fragen schon gerne mal anhören, vielleicht kann man ja auch in dem einen oder anderen BP helfen. Das Ganze dann aufs Handy zu bekommen, da haben ja bestimmt auch einige Ahnungen von, ich jetzt nicht unbedingt, das wird schon. Und im Zweifelsfall lernt man aus dem Versuch halt, dass es keine gute Idee war. Schließlich lernt man ja auch durch Misserfolg. Meistens sogar mehr als bei ständigem Erfolg.

  • Eine ursprüngliche Frage war, wie ich Images von Buttons speichern kann. Hab durch Nachforschungen herausgefunden, dass dies nicht direkt möglich ist. Warum verstehe ich aber als Laie nicht. Aber hab auch heraus gefunden, dass dich möglich ist, wenn ich den "path" dazu benutze. Das save Programm ist momentan mein Endgegner und frustriert oft. Momentan läuft's wieder. Mache mir aber jetzt schon Sorgen, wenn es um essentielle geht, sprich Googleplay und payments. Werde euch morgen mal paar Screenshots geben, wie weit ich momentan bin.

  • Ach ja, da gab es ja auch eine ursprüngliche Frage. ^^


    Allerdings verstehe ich die Frage nicht so ganz. Wieso sollte man die Buttoingrafiken nicht speichern können? Meinst du jetzt, dass du grafische Buttons erstellen willst, also zum Beispiel mit Gimp oder Photoshop und diese dann in deinem Projekt verwenden willst? Das geht schon, eben halt über Widgets.


    Die dazugehörigen Grafiken musst du halt in den Contentbrowser ziehen und die Eigenschaften auf UI, bzw. Userinterface stellen, sonst gibt es Grafikfehler.

    Kann etwas tricky sein, wenn es um Buttongrafiken geht, die du in der Größe ändern kannst, das einfachste hier wäre, wenn du die Grafiken dann skalierst. Hat dann nicht die beste Qualität, wenn du zu viel hin und her skalierst, ist dann halt wie ein Bild, welches du zoomst.

  • Ach so, nein. Ich meinte was anderes. Genauer geht es um ein Rucksack system. Dabei wollte ich als Basis immer das Image abspeichern, je nach Belegung. Das wird Image ist dann die Basis zum bauen, also die Verbindung zu Namen des zu bauenden Objekts, der Preis und den eigentlichen actor selbst ( oder auch ghostactor). Anscheinend ist es nicht erlaubt, ein Image im SaveGame zu speichern, wenn es von einem Widget kommt. wie auch immer, die Lösung war über den Path zu gehen.😃

  • Stimmt. Images kann man nicht im Savegame speichern, das habe ich auch sehr zu meinem Leidwesen feststellen müssen.

    Aber, was geht ist, du kannst dir einen eigenen Button bauen, als UMG, der dann als Grundlage den normalen Button hat, plus die Eigenschaften, die du benötigst. Unter anderem kannst du dann mit einer Struktur das Aussehen des Buttons festlegen. Du kannst dann die Art des Buttons abspeichern und die Grafik wird dann passend zu dem Button in deinem eignen Button angezeigt.

    Es gibt da verschiedene Ansätze, die du verfolgen kannst. Einmal halt eine Struktur, die sämtliche Buttoneigenschaften beinhaltet, oder eine Liste, die entsprechende Verknüpfungen zu den Grafiken enthält oder auch, wenn du zum Beispiel eine recht begrenzte Anzahl von verschiedenen Buttons hast, ein Enum. Das Ganze kannst du durchaus auch kombinieren. Ich muss mal schauen, irgendwo habe für mein Scarlett Projekt hatte ich ähnliche Buttons schon einmal angefangen. Falls ich das alte Projekt noch irgendwo wiederfinde, kann ich dir mal den bisherigen Codeteil weitergeben.

    Aber falls nicht, das Prinzip ist relativ einfach. Du musst ja etwas finden, was du abspeichern kannst. Einen String zum Beispiel, oder auch einen Integerwert. Und wenn du es dann wieder lädst, dann weißt du jedem Wert halt wieder eine Grafik zu. Also Integer 0 = None, Integer 1 = Baum, oder was auch immer. Das geht dann auch mit einem Enum, weil Enums sind ja nichts anderes als Integerwerte mit Namensbezeichnung. Ein Enum hätte da dann sogar noch den Vorteil, dass du per Switch dann direkt ein paar Branches sparst und direkt die Namen abzweigen kannst.

  • Wie gesagt, ich habe bereits eine Lösung gefunden. Der gesamte Weg zu erklären würde jetzt jeglichen Rahmen sprengen, aber im Grunde Frage ich nach dem "Path". Aber... Mir ist eine andere Frage eingefallen,die mir keine Ruhe lässt: Wie kann ich ein Widget und seine Elemente einstellen, dass egal welche Bildschirmgröße verwendet wird, die Elemente immer gleich aussehen. Also gleiche Position und Größe? Gruß Johann

  • Das ist bei Widgets immer so eine Sache. Du kannst entsprechende Elemente in verschiedene Widgetcomponenten einbinden. Da gibt es zum einen die Scalebox und auch die Sizebox.

    Die Namen sind etwas verwirrend, denn während man bei der Scalebox erwarten würde, dass sie automatisch skaliert und die Sizebox nicht, so ist das nicht ganz so, denn beide passen das Design, ich sag mal in begrenztem Rahmen, den Bildschirmen an. Es kommt aber immer darauf an, wie du sie wo anbringst.

    Da musst du dir mal entsprechende Tutorials anschauen, am besten auf YouTube, also in Videoform, weil es ist nicht ganz so einfach zu beschreiben. Halt mit den entsprechenden Stichworten Scalebox oder Sizebox mal suchen.