Beiträge von Tomarr

    Daher ist meine Frage:
    Mit welchem "...Reference" kann ich die ganzen individuellen Daten eines Actors (Gegenstand) abspeichern, um diese von der Welt in das Inventar und wieder zurück zu packen, so das die individuellen Daten auch übertragen werden. Weil genau da liegt das Problem.

    Nun ja, in einem normalen Fall würde man das über die UID in der Datenbank machen. Eben halt, wenn man mehrere Gegenstände gleichen Namens, gleicher Kategorie hat, aber halt unterschiedlichen Abnutzungsgrad usw., dann wird halt die einzigartige ID in der Datenbank zu den individuellen Werten führen. Das hatte ich allerdings schon geschrieben.

    Du hast halt eine Datenbank, die ist ellenlang, da steht alles drin, was jemals in dem Spiel hergestellt wurde und auch noch vorhanden ist, also nicht kaputt oder, oder in der Mülltonne gelandet oder so, und aus dieser Datenbank zieht der Gegenstand dann halt über die UID seine Informationen.

    Nehmen wir an, im Inventar hast du ein Gegenstand mit der UID 18278, in der Datenbank steht dann unter 18278, Langschwert, Beidhänder, Schaden min. 30, Schaden max. 50, Attackspeed 3, Feuerschaden +8 usw.

    Du musst halt nur darauf achten, dass deine Waffen dann auch alle möglichst den gleichen Tabellenaufbau haben. Da sind Datenbanken ab und zu ein wenig empfindlich und führen auch gerne mal zu Fehlern.

    Also, mit Android habe ich ja gar nichts am Hut. Aber ist es nicht normalerweise so, dass SDKs in der Regel abwärtskompatibel sind, es sei denn eine ältere Version wird gar nicht mehr unterstützt? Das wäre dann, glaube ich, in dem Fall Android 6 oder 7 oder so.

    Oder hast du es, aus dieser Logik heraus umgekehrt folgernd, mal mit einer älteren SDK versucht? Weil. Ältere Programme, zum Beispiel für Android 10, werden ja auch noch auf 12 laufen. Oder werden die dann immer alle mit einem Update versehen? Kann ich mir irgendwie nicht vorstellen.

    Gehen wir das mal umgekehrt an. Wie viele Spieler sollen auf einem Server spielen?

    Gut, bei einem Indispiel würde ich spontan mal mit bis zu 100 Spielern rechnen, dann ist deine Vorgehensweise vielleicht egal.

    Nu, du überträgst doch auch mit jedem Wert, den du übermittelst Daten und das von jedem Spieler an jeden Spieler. Das heiß, der Upload beim Internet von privat ist ja immer die große Schwäche.

    Wenn du jetzt die Gegenstände eines Spielers an einen Server übermittelst, dann macht es schon einen Unterschied, ob du pro Gegenstand 10 Kilobyte übermittelst oder 20 Kilobyte.

    Klingt erstmal nicht viel, aber nehmen wir mal an, der Spieler hat 100 Gegenstände bei sich, dann ist das ein Unterschied von 1000 Kilobyte.

    Noch schlimmer wird es dann, was du, wohl bemerkt ständig, vom Server an die Clients schicken musst. Nehmen wir auch da mal 100 Spieler. Dann empfängt der Server halt diese 1000 Kilobyte, die vielleicht gar nicht nötig wären und versendet mal eben an alle anderen wieder das 100-fache, also 100.000 Kilobyte. Das sind mal eben 10 Megabyte, mit denen der Server mal eben so beschäftigt ist, diese an alle Spieler zu senden. Und da ist noch nicht berücksichtigt, dass sich die Spielsituation ja auch in Echtzeit ständig ändert.

    Da sind Lags und Asynchronitäten, letztendlich dann auch die Möglichkeiten, das zum Cheaten auszunutzen, im Spiel quasi vorprogrammiert. Und die Berechnungen beruhen nur auf die zusätzlichen und überflüssigen Daten, die dann entstehen, wenn du das nicht besser optimierst.

    Hi zusammen.

    Ich bin gerade dabei für mein Projekt ein paar unterschiedliche animierte Cursor zu erstellen. Dazu muss ich diese als Flipbook verarbeiten, also verschiedene Einzelbilder der Animation in eine große Datei packen.

    Jetzt habe ich aber irgendwie keine Lust, das mit, keine Ahnung, Paint, Photoshop, oder sonstigen Tools, einzeln die Bilder von Hand zu machen.

    Jetzt habe ich eine Animation bereits mit Blender erstellt, das Bild gerendert, abgespeichert, Bild geändert, gerendert, abgespeichert usw. Das funktioniert auch ganz gut und das Ergebnis stimmt soweit eigentlich auch.

    Allerdings muss ich das 3D-Modell immer ein Stück ändern, rendern, speichern, und so weiter.

    Gibt es irgendwie ein Plugin oder so, wo man in Blender dann die Animation, per Timeline, ganz normal erstellen kann und diese dann automatisch in Einzelbildern gerändert wird, sagen wir 12 Stück oder so, und dann werden die Einzelbilder halt jeweils automatisch mit [Name]_01 - [Name]_12 in ein Verzeichnis gespeichert?

    Ja genau. Damit könnte es gehen. Also ich habe mich mit Paper2D zwar noch nicht so viel beschäftigt, aber das ist halt die Technik auf die solche Spiele aufbauen, von Sidescrollern, über Pac-Man bis hin zu Ultima Online.

    Das ist richtig. Das original Pac-Man hatte ja auch ein Spielfeld, das so ähnlich aussah wie ein Schachbrett, also mit verschiedenen Feldern.

    Jedes Feld hatte einen Wert. Zum Beispiel 1 = Mauer, also nicht begehbar, 0 = leer, begehbar.

    Dann hatte das Spiel noch Sprites auf den begehbaren Feldern. Die normale Pille, die Superpille und gelegentliche Früchte.

    Die Geister waren ebenfalls halt Sprites, einmal in Form von angreifenden und einmal in Form von flüchtenden Versionen, genauso wie Pac-Man.

    Der Vorteil war, die begehbare Fläche war ja immer genauso breit wie Pac-Man und die Geister. Sprich, war neben Pac-Man neben einer senkrechten Mauer, brauchtest du nur abfragen, ob dieses Feld 0 oder 1 war. Wenn es 1 war, dann ist halt nichts passiert, also kein Richtungswechsel, war es 0, dann war halt ein Richtungswechsel möglich.

    Das war eine viel einfachere Abfrage, als bei heutigen 3D-Spielen, mit Kollisionsbox usw.

    Dann brauchte man nur noch abfragen, ob Pac-Man, Pille, Superpille, Frucht oder Geist dieselben Koordinaten hatten und halt darauf reagieren.

    Das erste Pac-Man wurde ja auch in Assembler geschrieben, somit war die Programmierung zwar etwas komplizierter, aber das, was im Hintergrund passierte, musste natürlich relativ einfach sein.

    Jetzt irritiere ihn doch nicht so. Verbessern kann man noch immer und jederzeit. Erstmal sollte ja die Grundlage funktionieren.

    Aber, wenn man es so umsetzten will, kann man die Richtung natürlich auch in eine Struktur speichern und die Bewegung dann per Tick ausführen, das sollte dann kein Problem sein. Nur erstmal soll die Steuerung ja allgemein so funktionieren.

    Der BP-Screenshot ist ja etwas klein, da kann man kaum etwas erkennen. Aber, wenn ich das richtig sehe, berechnest du da irgendeine Position oder so, aber es wird keine Bewegung generiert. Für etwas größere BPs kann ich dir https://blueprintue.com/ empfehlen. Da kopierst du dein BP einfach rein, packst den Link hier ins Forum, und dann kann man auch die Größe ändern und Scrollen etc.

    Du kannst das dem Add Movement Input direkt übergeben. Du hast ja den Input "World Direction". Da schließt du nichts an, sondern übergibst da direkt einen Wert für die Richtung.

    Also, wenn du zum Beispiel die Tasten W, S, A, D für die Steuerung verwendet hast, dann haben die Tasten ja folgende Werte.

    Ungefähr so:


    Im BP fügst du dann die Bewegungen hinzu, mit fester Richtung.


    Bei World Direction werden dann entsprechend die Werte 1.0 oder -1.0 eingegeben, ohne irgendwelche Direktionberechnungen oder so.

    Wenn ich dir einen Tipp geben darf, versuch doch Pac-Man in 3D zu erstellen und dann mit Draufsicht. Ich bin zwar auch ein Freund davon, wenn jemand auf alte Techniken zurückgreift, gerade am Anfang, aber wenn du es in 3D erstellst und dann mit Kameradraufsicht und einem Shader, der das Ganze dann so ein wenig mehr nach 2D aussehen lässt, dann hast du viel mehr Möglichkeiten den Umgang mit der Unreal Engine zu lernen. Das ist allerdings jetzt nur meine Meinung, weil du dann auch ein wenig was Eigenes einfließen lassen kannst. Du kannst einen Shader sogar so programmieren, dass das Ganze am Ende pixelig aussieht.

    Dann kommt es halt auch drauf an, ob du einen digitalen oder analogen Input verwendest. Also, Tasten, oder zum Beispiel den Analogstick auf einem Controller. Bei digitalen Tasteninputs sollte das kein Problem sein. Da kannst du den Standardinput von dem Third Person Template nehmen. Wenn du dann die Richtung änderst, dann dreht sich der Charakter und läuft dann auch direkt in diese Richtung.

    Bei einem analogen Input ist es etwas aufwendiger. Da musst du halt den entsprechenden Rotator aufsplitten und die entsprechende Axe um 90 Grad manipulieren, daraus wieder einen Rotator machen und das dann eben halt in die Richtungsdaten umsetzen.

    Ist nicht ganz einfach, weil du dann auch dafür sorgen musst, dass dann nicht 91, 92 Grad oder so rauskommen. Spontan würde ich eine Directionlist anlegen, eben halt mit oben, recht, unten und links und dieser dann 0, 90, 180 und 270 Grad zuweisen und je nach Input entsprechende Richtung aus der Tabelle an den Bewegungsvector ausgeben.

    Du meinst, dass du dich nur in eine Richtung drehen kannst?

    Ich nehme an, beim Keymapping hast du nur eine Richtung eingegeben, je nachdem welche Tasten du verwendest, oder auch die Maus, irgendwo steht Rotation oder so, dann die Taste, die du benutzt, oder die Mausbewegung, und als Wert steht da 1. Für die Gegenrichtung musst du unter Rotation noch einen Wert -1 vergeben.

    Das ist leider wahr, gleichzeitig muss man aber auch sagen das Blender seit V2.8 schon mit zum besten gehört.

    Ja, ich sagte ja, war in den 90ern, bzw. 2000ern. Inzwischen hat Blender von der Bedienung her stark aufgeholt. Lediglich das Speichern und Exportieren kommt irgendwie noch etwas altbacken rüber.

    Ja, aber es gibt halt nicht immer eine brauchbare Open Source Alternative, oder sie ist extrem kompliziert. Viele Open-Source-Projekte haben halt wirklich oftmals eine wilde Oberfläche. Ich hatte ja ganz früher zum Beispiel 3D Studio Max verwendet, das war noch so in den 90ern, und Blender, Blender war wirklich, naja, Blender halt. Hat sich gebessert. In dem Fall hat es sich sogar umgekehrt. Hab neulich mal 3D Studio Max bei einem Kumpel benutzt, inzwischen kommt mir die Oberfläche eher wie ein Kindermahlkasten vor. Also, das kann sich auch ändern.

    Aber oftmals gibt es ja nichts in der Open Source Community, was vergleichbar ist. Ich denke da an Cascadeur, die haben auch ihre Lizenz geändert, muss mal schauen, ob ich es noch verwenden kann, hatte bisher noch nichts zum Animieren, oder Marvelous Designer, da habe ich auch noch nichts Vergleichbares gefunden.

    Vielleicht sollten wir mal einen Sammelthread machen, mit den Programmen, die man so braucht für die Spieleentwicklung, und ob, bzw. welche, Alternativen es gibt, die dann auch brauchbar sind.

    So nun ist es passiert, sang- und klanglos hat Maxon die Dauerlizenzen für ZBrush und Co. gestrichen... von nun an heißt es zahlen, zahlen, zahlen und sich mit minderwertigen Updates zufrieden zu geben.


    Eine wirklich grauenhafte Entwicklung, wie ich finde.

    Ja, wie gesagt. Nach und nach werden sie alle, die Dollarzeichen in den Augen haben. Das betrifft inzwischen sogar sehr kleine Nischenprogramme. Ich habe hier zum Beispiel ein kleines Programm, mit dem ich zig Files auf einmal umbenennen kann, Zack, seit zwei Monaten ein Abomodell. Zum Glück gibt es da noch Alternativen, aber es wird halt immer enger. Deswegen werde ich die Programme, die ich mal irgendwann gekauft habe und die kein Abomodell haben, aber auf diese umgestiegen sind, solange weiter nutzen, bis mein Rechner explodiert, wenn ich es starte.

    Ich glaube, ich habe es. Bin mir aber nicht ganz sicher. Also zumindest habe ich eine kleine Idee.

    Kann es sein, dass du aus einer Arrayliste oder ähnliches diese Validabfrage machst?

    Weil, Valid prüft ja auf ein Objekt. Objekt ist in der Unreal Engine ja erstmal alles, denn von Objekt wird alles abgeleitet. Aber, kann es sein, dass dein Array leer ist oder zumindest leere Einträge, Lücken oder ähnliches hat?

    Ups, sehe gerad, ist natürlich kein Array. Aber kann es sein, dass die Variable schlicht leer ist, als dass nichts wirklich übergeben wird?

    Da hilft nur eins. Klemm mal immer nach und nach eine dieser Prüfnodes ab und wenn der Fehler nicht mehr auftaucht, dann weißt du von wo er ausgelöst wird.

    Ich finde das zwar jetzt auch ein etwas ungewöhnliches Verhalten für die Engine, also steckt da vielleicht auch etwas ganz anderes dahinter, aber Debugging kann schon eine echte Bitch sein. Und da der Fehler, bzw. die Anzeige, wo er sein soll, so ungewöhnlich ist, kann ich dir da natürlich auch keine Standardantwort geben, zumindest hatte ich das auch noch nicht. Höchstens halt so nach und nach alles auszuschließen, per abklemmen, was den Fehler nicht verursacht. Oder hast du vielleicht auch irgendwo die Objektverknüpfung nicht gemacht, dass er sich da so merkwürdig verhält?

    Ich wette, wenn du den Fehler gefunden hast, ist das wieder so eine "flache Hand an die Stirn hau" Situation.

    Das ist jetzt aber das Makro, welches in der Unreal Engine dabei ist, oder ist das dein eigenes Makro?

    Eigentlich sollte es keinen Unterschied machen, aber, wenn es das Makro von der Unreal Engine ist, dann zeig mal bitte den Ausschnitt, wo das Makro aufgerufen wird. Weil der Fehler liegt halt nicht an dieser Stelle.