Open World (Multiplayer - Mega Server) + Persistent (Speichern/Streaming usw.)

  • Soweit ich das herausgefunden habe, werde ich um ein SQL Datenbanksystem nicht herum kommen, vor allem damit es später auch noch Crossplay Fähig ist. Das wäre halt auch für mich Prima einen möglichen Fuß im Bereich Consolen zu haben. Das ist aktuell unwichtig, aber erwähnenswert.


    Mir ging es darum das ich erstmal eine Datenstruktur habe mit der ich in dem aktuellen Zustand arbeiten kann, um erstmal Gameplay usw. zu haben. Auch wenn es nicht auf Servern usw. läuft. Irgendwo muss man einen Abstrich am Anfang machen.


    Daher habe ich anfangs mein "Datatable-Struct" Array-Variable" (als Inventar) umgeändert, in den "ActorReferenc" Array-Variable (z.B. MasterConsume, was ein Actor ist). Dadurch werden auch alle Werte exakt so abgespeichert wie dieser zu dem Zeitpunkt war. Was erheblich bequemer ist und auch keine Unknown Structure Eror verursacht, wenn man eine Änderung daran vornimmt.


    Das funktioniert soweit auch ganz gut, aber wenn ich aus einem Datatable, indem ich nur eine begrenzte Anzahl an Basis-Variablen habe und möchte diese nun bei der Gegenstanderstellung auslesen und in den nun neuen Gegenstand einschreiben, dann benötigte ich dafür eine quasi leere Variable mit "MasterConsume" als Actor Reference, mit dem ich dann die Daten aus dem Datatable hineinladen möchte um diese damit zu befüllen. Aber das geht leider nicht!


    Auch wenn ich vorher ein SpawnActorFromClass mache, um das Problem zu übergehen und diesen dann Destroy-Actor mache, verschwindet auch die Information darüber und der ganze Gegenstand ist weg, auch im Inventar. Obwohl da zwischengespeichert.


    An der Stelle frage ich mich, warum die Unreal Engine nicht automatisch von Grund auf ein SQL Datenbank System, voll integriert anbietet, wenn es doch für Online Spiele immer wichtiger wird? Da wäre dann eine Schnittstelle da um es mit einem externen Server zu verbinden. Weil nicht nur ich habe das Problem, sondern viele andere auch!



    Ich stelle es mir wie ein Supermarkt vor.
    Ich bin Kunde mit einem Einkaufskorb (Lokales Inventarsystem in Unreal Engine)

    In diesen Einkaufskorb packe ich z.B. Schwert, Helm, Rüstung, dass wird für diesen Moment so beibehalten.

    Gehe ich damit zur Kasse, bezahle die Artikel und verlasse den Supermarkt, werden die ganzen Informationen an die Server-Datenbank geschickt (in dem Fall SQL). Dabei wird bei jedem Bezahlvorgang eines Artikels dieser aus dem Einkaufskorb entfernt und entsprechend an die Server-Datenbank übertragen die mit meinem Spielerinventar zusammenhängt!


    Das ist mir deswegen so wichtig das zu erwähnen, damit ich weiter mit Gameplay und Features arbeite kann, ohne das ich mich zu sehr mit der Datenbank aufhalten möchte, weil das zu einem späteren Zeitpunkt noch einmal gründlich gemacht werden muss. Entsprechend wenn Server da sind, Mitarbeiter usw. usw.


    Ich hoffe ihr versteht mich was ich damit sagen möchte.




    Wenn ich ein Schwert mache, mache ich es nicht selber sondern kaufe es für ein paar Euro (auch wenn es nicht meinem Geschmack entspricht) und kann es später dann durch meine Mitarbeiter ersetzten lassen, anstatt mich damit ewig lange aufzuhalten ein Schwert-Modell zu erstellen...

  • Kurze Info von mir an alle, falls wer auch mit dem Gedanken spielt.


    Man kann ein "Actor Reference" nicht für das Inventar verwenden, obwohl man damit im ganzen Spiel zugriff auf alle Funktionen hätte (was sehr verführerisch ist!).

    Das Problem ist, wenn der Actor in der Welt gelöscht wird, wird auch der Actor im Inventar gelöscht, also beides verschwindet.

    Das ist extrem ärgerlich, weil es zu gut wäre wenn man den Actor Reference speichern könnte.



    Das ganze über eine Structure Variable als Inventar-Ersatz zu speichern ist genau so schlecht, weil bei jeder Erweiterung der Structure es zu Projektweiten Fehlern "Unknown Structure Error" kommt. Wodurch man alles nachbessern muss, was total Zeitaufwändig ist.


    Es ist echt eine Katastrophe warum Unreal Engine da nicht von Grund auf eine Alternative anbietet.

  • Man kann ein "Actor Reference" nicht für das Inventar verwenden, obwohl man damit im ganzen Spiel zugriff auf alle Funktionen hätte (was sehr verführerisch ist!).

    Das Problem ist, wenn der Actor in der Welt gelöscht wird, wird auch der Actor im Inventar gelöscht, also beides verschwindet.

    Nicht, dass ich dir zu nahe treten möchte. Aber, was denkst du denn, wie viel Speicher ein Rechner benötigen würde, wenn dem nicht so ist?

    Und was ich noch viel wichtiger finde, mit dem bisschen Wissen, was du über Programmierung hast, was hat dich dazu veranlasst mit einem derartigen Projekt zu starten?

  • Nicht, dass ich dir zu nahe treten möchte. Aber, was denkst du denn, wie viel Speicher ein Rechner benötigen würde, wenn dem nicht so ist?

    Und was ich noch viel wichtiger finde, mit dem bisschen Wissen, was du über Programmierung hast, was hat dich dazu veranlasst mit einem derartigen Projekt zu starten?

    Ich möchte endlich ein Online Spiel spielen das auch Spass macht und in dem man Tief eintauchen kann. Die bisherige Spiele bieten das leider nicht und sind nur Oberflächlich. Die Spiele von damals sind leider schon gestorben die noch diese Möglichkeiten geboten haben. Heute ist man sozusagen alleine, Online, mit anderen unterwegs und das ist der falsche Ansatz. Weg von Eogismus hin zur Gruppe und das mit Rollenspiel. Auch weg von den langweiligen automatischen monotonen Systemen, so wie das verhindern von Meta. Die Meta in Spielen die Entwickler absichtlich einbauen finde ich am schlimmsten und stören den Spielspass.


    Die anderen Projekte an denen ich mitgemacht habe waren leider durch die Technik limitiert und am Ende musste man diese aufgeben. Irgendwann sind die Spiele einfach so alt das es keinen Sinn mehr macht weiter zu machen. Die Server waren nahezu voll bis an das Limit, basierten jedoch auf anderen Engines und ich selber habe nicht an der Engine entwickelt, sondern im Bereich Community Management. Spielerverwaltung, Events und alles was damit zutun hat. So wie logische Gameplay Mechaniken, Abläufe usw.


    Mit der Unreal Engine 5 kann ich nun selber alles in die Hand nehmen und endlich ein besseres Spiel machen. Leider fehlt mir das Wissen über die MMORPG Netzwerktechniken, also wie man das Spiel für die Masse an Spielern technisch umsetzten kann. Inhaltlich habe ich genug Erfahrung und das sind auch meine Stärken. Ich weiss genau wie ich was brauche, nur eben nicht wie man das Technisch in den Datenbanken umsetzt/verknüpft.


    Ich habe die letzten Jahrzehnte damit verbracht immer nur einem anderen Spiel hinterher zu laufen, jetzt möchte ich das ganze umdrehen so das man mir hinterher läuft. Das meiste und wichtigste habe ich fast im Spiel und es läuft auch soweit gut (natürlich muss es noch erweitert und verbessert werden). Das ich nun das Problem mit dem Inventar habe ist halt extrem ärgerlich. Ich musste das Inventar auch nie selber machen, sondern habe es eben für meine Vorhaben verwendet und umgesetzt, auch wenn es häufig schwierig war und an seine Grenzen gekommen ist.


    Mein Ziel ist es, den Spielern eine Heimat zu bieten.


    Den ersten Schritt habe ich mit dem Roman-Handbuch gemacht, was zugleich die Story und für das erstellen der Charaktere für die Spieler wichtig ist. Ebenso gibt es ein gemeinschaftliches Ziel (Lore) usw. eben das was in jedem Spiel wichtig ist.

    Nun setzte ich seit Jahren das um was ich aufgebaut habe. Soweit ich das dieses Jahr noch schaffe möchte ich auch das erste Gameplay der Pre-Alpha zeigen. Das doofe Inventarsystem wirft mich jetzt leider zurück.


    Natürlich fehlen noch überall Assets, also finale Spielfiguren, Waffen, Rüstungen (Welt-Objekte sind soweit vorhanden). Aber das muss ich dann mit meinem Team machen. So leid es mir auch selber tut aber ich kann leider nicht alles alleine machen.

  • Ich möchte endlich ein Online Spiel spielen das auch Spass macht und in dem man Tief eintauchen kann

    Das ist schön, das ist toll. Und du denkst, die ganzen großen Spielehersteller machen das alles falsch. Die gesamte Architektur deines Spiels gerät absolut außer Kontrolle. Noch einmal, und es ist ja nicht so, dass ich es nicht schon einmal erwähnt hätte, ES GIBT EINEN GRUND DAFÜR, WARUM GROßE SPIELEENTWICKLER ES SO MACHEN, WIE SIE ES MACHEN. Und das ja schon seit Jahren.

    Gut, vielleicht bist du auch nur so etwas stur, kann ja sein, dass du dir nichts sagen lässt, ist dann halt so. Könnte ich mich mit abfinden. Aber dann stelle ich in einem Nebensatz von dir fest, dass du wirklich denkst, dass ein Objekt wirklich bestehen bleibt, oder es dir zumindest wünscht, dass es bestehen bleibt, wenn du es in ein Inventar schiebst, ein virtuelles Inventar. Also, du willst ein Spiel bauen, mit Millionen von Objekten, die nur minimale Unterschiede haben, aber es ist dir wichtig, dass sie alle Eigenschaften haben, die es gibt, und dann willst du auch noch, dass diese alle ihre Eigenschaften zu jeder Zeit unter jedem Umstand beibehalten.

    Dazu kann ich dir nur eins sagen. Lerne erstmal Grundlagen. Lerne, was Spiele sind und was der Unterschied zur Realität ist, lerne etwas von Spielearchitektur, lerne etwas über Speichermanagement und dann mache ein paar einfache Spiele, wie Moonpatrol, PacMan, Space Invaders, was auch immer.

    Dann gehst du weiter, dann lernst du etwas über Inventorys, Welten, Kameras und baust ein Singleplayerspiel. Und wenn du dann noch Bock hast, dann lerne etwas über Netzwerk, Multiplayer, Protokolle, Datenspeicherung usw.

    Und wenn du das alles weiß, dann schwöre ich dir, dein Spiel wird automatisch wesentlich einfacher ausfallen. Da kannst du auch noch so sehr mit "Ich will das aber so machen" kommen, ja, das kannst du ja auch wollen, aber machen kannst du es nicht, weil es einfach auf Dauer nicht funktionieren wird. Es wird nicht mit mehreren 1000 Spielern funktionieren und wenn man das ganze debuggen will, viel Spaß.

    Nur, warum schreibe ich das? Ganz einfach, zum einen solltest du klein anfangen, denn offensichtlich weißt du nicht viel über Objekte, wo wir dann zum zweiten Punkt kommen. Ich fühle mich etwas verarscht, wenn jemand eine Frage stellt, 5 Personen sagen dir, dass das so nicht funktionieren wird, und wenn es funktioniert nur unter extremen Ressourcenverbrauch und durch extremen Verlust der Übersichtlichkeit im Spiel. Dann sagst du dein "Ich will aber", dann denkt man, "OK", soll er machen, man überlegt sich, wie könnte es vielleicht doch gehen. Und dann kommt ständig, "so will ich das aber nicht" und am Ende stellt man fest, du hast die Engine noch nie benutzt. Sorry, aber dann komme ich mir verarscht vor ohne Ende.


  • Ich fühle mich etwas verarscht, wenn jemand eine Frage stellt, 5 Personen sagen dir, dass das so nicht funktionieren wird, und wenn es funktioniert nur unter extremen Ressourcenverbrauch und durch extremen Verlust der Übersichtlichkeit im Spiel. Dann sagst du dein "Ich will aber", dann denkt man, "OK", soll er machen, man überlegt sich, wie könnte es vielleicht doch gehen. Und dann kommt ständig, "so will ich das aber nicht" und am Ende stellt man fest, du hast die Engine noch nie benutzt. Sorry, aber dann komme ich mir verarscht vor ohne Ende.

    So geht es mir schon die ganze Zeit, ich habe andere Ansprüche als andere hier und die sind mir wichtig. Andauern muss ich lesen das diese nicht berücksichtigt werden. Das ärgert mich ebenfalls wenn meine Wünsche komplett ignoriert werden aber andere (in dem Fall du) nur deine Vorgehensweise darstellst und als die einzig beste anbietest/aufzwingst.


    Wie ich schon mehrfach geschrieben habe, möchte ich ein Spiel machen was das meiste komplett anders macht. Also muss ich andere Wege gehen. Da helfen mir Ratschläge nicht weiter die auf den alten System aufbauen. Viele technische Dinge verändern sich so schnell das es dafür auch alternativen gibt. Siehe die Unreal Engine Funktionen an, in der man heute Dinge viel einfacher, schneller und performanter gestalten kann als früher. Ähnlich wird das auch mit der Netzwerktechnik sein.


    Wenn du mir nicht helfen möchtest Tomarr weil du mich vielleicht nicht verstehst oder du damit keine Erfahrung gemacht hast, dann halte dich doch fern von mir. Ich merke doch wie der Umgangston schärfer wird. Das führt zu nichts.


    Die Hilfe die ich brauche bezieht sich auf mein Spiel, da in dem Spiel vieles anders ist, helfen mir keine Ratschläge von normalen Spielen. Normale Spiele haben eingeschränkte Spielfunktionen, was die Spiele dadurch langweiliger macht. Das möchte ich ändern. Also muss ich neue Wege gehen und nicht dem alten hinterher schauen.

    Was macht das für einen Sinn, Spiele zu machen die genau so sind wie die anderen und sich nur der Name und das Optische ändert... nichts!



    Mir ist absolut klar das ich nicht das nötige Wissen über die Netzwerktechnik habe, also muss ich das ganze umgehen und mich nicht damit aufhalten, weil es für mich Zeitverschwendung ist. Ich möchte die Idee, die Konzepte und die Marke dahinter erweitern und vergrößern. Es ist für mich hinderlich wenn ich andauernd die gleiche Leier anhören muss, ohne das ich weitere Fortschritte erzielen kann.


    Habe unendlich viele Videos darüber gesehen wie man SQL erstellt, verwaltet usw. aber es gibt gefühlt kein einziges Tutorial wo ganz genau gezeigt wird wie man das in der Unreal Engine 5 verwendet um damit alles zu steuern.

  • Das Problem bei dir ist, du ignorierst einfach, dass ein Spiel eine Simulation ist, und dass es sehr große Anbieter von Spielen gibt, die aus gutem Grund Abstriche in der simulierten Darstellung einer Welt machen. Das nennt man dann Gamearchitektur.

    Und ich habe Erfahrung im Speichern von Daten, durchaus. Ich habe mal, auch wenn es schon länger her ist, als Datenbankadministrator gearbeitet. Und ich sage dir, der Job kann echt schrecklich sein, wenn die Auftraggeber keinen Plan von dem haben, was sie wollen. Ich würde heute nie wieder als Datenbankadministrator arbeiten, selbst für 1 Million Euro im Monat. Und du bist halt nur Millimeter davon entfernt, denselben Fehler zu machen. Eben halt, weil du keine Ahnung hast von dem, was du da tust. Du hast keine Ahnung von den Grundlagen.

    Wie gesagt, das Problem ist nicht, dass du hohe Ansprüche hast, das Problem ist, dass du nicht klein anfängst. Und dann erzählst du mir, dass DEINE Wünsche nicht berücksichtigt werden? Das ist quatsch. Niemand missgönnt dir deine Wünsche, aber es wird nicht funktionieren. Mein Wunsch ist auch, dass ich mich per Gedanken überall hin teleportieren kann, dumm nur, dass alle anderen meinen Wunsch nicht akzeptieren, deswegen kann ich das wohl nicht.

    Wie gesagt, fang klein an und steigere dich. Dann wirst du von ganz alleine merken, wo die Grenzen in der Spieleentwicklung sind. Erstens, eben halt, weil ich genau weiß, wie das ist, weil ich habe auch am Anfang auch immer alles möglichst genau so simulieren wollte, wie in der Realität und hier im Forum wurde ich dann immer gestoppt und darauf hingewiesen, mein Vorhaben auf das Wesentliche runterzukürzen. Und das musst du halt auch lernen, das Wesentliche zu erfassen. Das machen sogar Firmen mit einem Millionenbudget und das nicht ohne Grund.

  • Ich frag mich ja bei solchen Diskussionen immer, wie viele Hobby Entwickler ihr Spiel wohl zur Marktreife bringen könnten, würden sie nicht an unglaublich ehrgeizigen Zielen festhängen, wo ihnen schlicht die Fähigkeiten fehlen.

  • Ich frag mich ja bei solchen Diskussionen immer, wie viele Hobby Entwickler ihr Spiel wohl zur Marktreife bringen könnten, würden sie nicht an unglaublich ehrgeizigen Zielen festhängen, wo ihnen schlicht die Fähigkeiten fehlen.

    Das ist ja das, was ich hier meine. Immer die Meinung, "Ich mache es besser als Minecraft", "Starfield, kein Problem" und überhaupt, die ganzen Millionenschweren Softwareschmieden, die machen das halt eh alles falsch, die lassen Dinge weg, damit die Spieler gequält werden und das Spiel doof finden.

    Ich will mich davon ja nicht ganz ausnehmen. Wobei es bei mir am Anfang ja noch schlimmer war. Ich erinnere mich noch, als ich eine Ampel bis ins Detail hier so simulieren wollte, wie sie auch in Natura funktionieren würde usw. Ab und zu geht es mir auch noch immer so, dass ich einfach zu kompliziert denke. Allerdings gehört halt zum Lernprozess dazu, dass man auch lernt Dinge auf das wesentliche zusammenzustreichen und trotzdem ein akzeptables Ergebnis zu bekommen. Und für sowas, die Gedanken mal wieder richtig zu fokussieren, hat man ja schließlich so ein Forum wie dieses.

    Computer, egal wie groß oder schnell, selbst der größte Großrechner auf dieser Welt, hat halt begrenzten Speicher und Rechenleistung. Deswegen können auch Wissenschaftler nicht das gesamte Universum komplett durch simulieren, auch wenn sie es gerne würden.

  • Ich möchte mich noch mal an der Stelle für alle Informationen bedanken!
    Natürlich ist das ein sehr unangenehmes Thema und da ich noch weiter dazu lerne, werde ich mich stetig in diese Richtung vortasten. Habe ein Rollback zu dem Punkt vor der Änderung gemacht und werde weiter das Structure System für das Inventar verwenden. Die Daten lassen sich auch so bequemer in SQL abspeichern.


    ---


    Anstatt ein neues Thema aufzumachen:

    Bei der Nutzung von Quixel Bridge gibt es mehrere Qualitätsstufen.

    Wo genau sehe ich wie viel Speicherplatz die entsprechende Qualitätsstufe verbraucht?


    Im Unreal Engine Editor bei Quixel Bridge kann man zwar die Qualität auswählen aber es wird nicht dargestellt wie viel MB Unterschied zwischen "High Quality" und "Nanite" ist.


    Als Beispiel habe ich ein Essen heruntergeladen:

    Nanite ca. 1,4gb

    High Quality ca. 670mb


    Der Unterschied war kaum zu vernehmen, aber es wäre halt vorher schon cool zu wissen wie groß da der Unterschied ist.

    Alles zweimal herunter zu laden, nur um zu gucken wie viel MB Speicher das verbraucht ist... nicht so smart.

    • Offizieller Beitrag

    Anstatt ein neues Thema aufzumachen:

    Wir brauchen nicht sparsam mit den Themen sein. Übersichtshalber mach bitte ein neues Thema.


    Es liest auch nicht jeder jedes Thema durch. Wenn du einen entsprechenden Titel für dein Thema wählst ist die Wahrscheinlichkeit höher dass du eine Antwort bekommst.