Kojote Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 Grüße! Ich bastel immer noch an meinem Brettspiel. Hier ist es möglich Charaktere auf das Spielfeld zu setzen. Dieses sind immer Positiv-X, Negativ-X, Positiv-Z oder Negativ-Z. Eine andere Ausrichtung gibt es nicht. Im UI habe ich "Karten" der Charaktere, die auf das Spielfeld gesetzt werden sollen. Derzeit schauen sie alle ebenfalls in diese Richtungen, damit der Spieler weiß in welche Richtung sie sehen. Was mir jetzt erst einfällt, wenn ich die Kamera drehe, stimmen die Blickrichtungen auf den Kartene nicht mehr mit Blickrichtungen auf dem Spielbrett überein. Ich häng mal zwei Bilder an um dies zu verdeutlichen. Habt ihr eine Idee wie ich dieses Problem lösen könnte? Ich müsste ja dann die Grafiken des UI immer der Ausrichtung der Kamera anpassen, was denk ich recht kompliziert umzusetzen wäre. Grüße von Kojote Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
KaBau Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 Grundsätzlich musst du dir Gedanken machen, wie der Spieler gesteuert werden soll. Ich hatte bei "Prince of Persia" Teil ? schon sehr früh aufgehört zu spielen, weil ich zum einen als 3th Person Game den Charakter gesteuert habe und bei anderen Aufgaben eher eine Steuerung eines Jump and Run hatte. Hier wollte ich immer noch mich bewegen wie als 3th Person. Das gleiche Problem hatte ich bei "Star Wars: The Force Unleathed". Auch dort gabe es Kämpfe bei denen die normale Steuerung für eine andere Steuerung getauscht wurde - frustrierend. Es stellt sich für mich die Frage, ob du dich immer relativ zur Kamera, oder dich relativ zum Charakter bewegen willst. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 Stelle mir das jetzt nicht all zu schwierig vor. Die Rotation der Kamera ist ja bekannt, da kannst du ja deren Wert um die Y Achse verwenden. Dein Character ist ja ein 3d Modell, das könntest du ja ziemlich einfach duplizieren, dessen Rotation and die der Kamera anpassen und das ganze per render to Texture auf die UI übertragen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Juli 2018 Autor Melden Share Geschrieben 20. Juli 2018 Naja die Bilder in diesem kleinen Kästchen müssen realtiv zu den Koordinaten -X +X -Z +Z angezeigt werden, am besten wäre es, wenn sich die kleinen Männchen auf den Karten bei einer Kamerabewegung mitdrehen würden. Das würde jedoch mit Sprites nicht funktionieren, dass müssten dann 3D Modelle sein und hier wüsste ich nicht, wie ich sie an ein UI anhänge, da dieses Menü auch auf dem Bildschirm verschiebbar ist. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 Aber eben, das 3d Modell ist ja vorhanden, da müsstest du ja nichts neues machen und per render to Texture kann man das doch auf die UI bringen, oder verstehe ich dich falsch? https://unity3d.com/de/learn/tutorials/topics/graphics/render-textures-and-ui Wenn du das mit Sprites lösen möchtest, kannst du doch auch die Sprites austauschen je nach Rotation der Kamera? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Juli 2018 Autor Melden Share Geschrieben 20. Juli 2018 Denk mal Render to Textur wäre schon die beste Idee. Müsste nur überlegen wie ich es anstelle. Die Charaktere sind in einer "Black Box" unter der Spielfläche in einer Warteposition bis sie auf das Spielfeld gesetzt werden. Überlege mir gerade wie ich da unten die Charaktere rendere. Mit der Hauptkamera wäre dies nicht möglich. Alternativ müsste ich 6 Nebenkameras machen, was wieder ganz schön Performance verbrauchen würde. Zudem, ich würde immer alles mit der Kamera aufnehmen, also nicht nur den Charakter. Mehrere Spries wären auch möglich, aber da könnte ich entweder die Sprites aller 90° wechseln oder mit abständen. Das wäre aber auch nur eine sehr ungünstige Lösung. Zudem wird das auch wieder eine ganz schöna Abfragerei. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 vor 59 Minuten schrieb Kojote: 6 Nebenkameras machen, was wieder ganz schön Performance verbrauchen würde. Zudem, ich würde immer alles mit der Kamera aufnehmen, also nicht nur den Charakter. 4 wüden ja ausreichen? 90 Grad um den Char herum. Das kann auch um den gerade aktiven Character sein, einfach den Character in ein separates Layer packen und den 4 Cams sagen sie sollen nur dieses Layer rendern und die MainCam kann ja weiterhin alles rendern. Edit: Darf ich mal fragen wie genau das den gedacht ist mit der Steuerung? Du könntest ja z.B. auch einfach 4 Pfeile um den Character herum machen die man dann anklikt? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Juli 2018 Autor Melden Share Geschrieben 20. Juli 2018 Es sind aber bis zu 6 Charaktere auf der Spielfläche, von daher bräuchte jeder eine eigene. OK stimmt, müsste man ma ausprobieren, in wie weit die Kameras dann Performance saugen. Also hätten wir da zwei möglichkeiten: 1. Mit Sprites und aller 45,25° ein neues Laden. Wäre Scripttechnisch recht aufwendig, da ja die Startbilder immer in eine andere Richtung schauen und ich dann aufwendig umrechnen muss, welches Bild als nächstes dran wäre. 2. Render Kamera, 6 Stück und mit Layern versehen. Vom Scripttechnischen her am wenigsten aufwendig und ich könnte es recht einfach in das bisherige Script implementieren. Schau ich mir dann mal an, was der Resourcenunterschied ist. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 vor 13 Minuten schrieb Kojote: Es sind aber bis zu 6 Charaktere auf der Spielfläche, von daher bräuchte jeder eine eigene. Achso, und entsprechend werden immer alle im UI angezeigt, nicht nur die Figur die gerade bewegt/ bzw. am Zug ist? 1. Denke ist eher der Auwand die ganzen Sprites zu machen und den Überblick zu behalten. Vom Script her wäre man ja mit 4 Abfragen dabei (<0<90<180<270). Könnte man auch für alle Chars das gleiche anwenden und einfach die Sprites entsprechend reinsetzen. 2.Ja wie das Performance technisch aussieht weiss ich leider nicht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Juli 2018 Autor Melden Share Geschrieben 20. Juli 2018 Zitat Achso, und entsprechend werden immer alle im UI angezeigt, nicht nur die Figur die gerade bewegt/ bzw. am Zug ist? Es werden alle angezeigt die nicht auf dem Spielfeld oder tod sind. Zitat Denke ist eher der Auwand die ganzen Sprites zu machen und den Überblick zu behalten. Vom Script her wäre man ja mit 4 Abfragen dabei (<0<90<180<270). Könnte man auch für alle Chars das gleiche anwenden und einfach die Sprites entsprechend reinsetzen. Stimmt, da wäre das einzige da nicht durcheinander zu kommen. Und das ist das Problem.^^" Obwohl nunja ganz so einfach ist es nicht der erste Char hat Rotation 0, nächste Drehung wäre 90. Zweiter Char wäre Rotation 90, nächste Drehung wäre 180. Das muss man ja auch mit abfragen. Zitat Ja wie das Performance technisch aussieht weiss ich leider nicht. Habs gerade mal probiert. 6 Kameras alle auf Minimaleinstellung. Einzig, in den Blackbox müsste ich für Licht sorgen. Bisher merkt man es Performancemässig nicht, da ich aber nen sehr leistungsstarken Rechner habe, kann ich nicht von mir auf andere schließen. EDIT: Habs gerade mal auf nem alten Laptop von mir getestet, also etwas mehr an Resourcen frisst er schon, denke ich werde mal die Spritvariante ausprobieren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 @Kojote Hast du dir das so vorgestellt? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Juli 2018 Autor Melden Share Geschrieben 20. Juli 2018 Nicht so ganz, ich mach morgen mal nen Video. Ich hab mir nun mal beide Varianten vorgenommen, einmal als Sprite, hab ich aber aufgegeben, da das Scripten ins Chaos ausartete. Dann hab ich mal die Kameraversion probiert. Zwear Scripttechnisch sehr einfach umzusetzen, aber auch nicht gerade toll, ich hab zwar die Kameras auf Minimaleinstellungen gestellt, jedoch kostet mich jede Kamera knapp 20 Drawcalls. Bei 6 Kameras macht das 120 Drawcalls. Meine Scene hat an sich um die 100 - 120 DC, mit 6 Kameras wäre ich schon bei 250 DC. Wenn ich noch mal 3 Charaktere rein nehmen würde, wäre ich schon bei 310 DC. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 vor 6 Minuten schrieb Kojote: Nicht so ganz Ok dann versteh ichs nicht 🙃 vor 6 Minuten schrieb Kojote: 250 DC Kommt auf die Platform an, für Mobile ist das natürlich zu hoch. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Juli 2018 Autor Melden Share Geschrieben 20. Juli 2018 Wäre für PC und Linux. Frames drückt es mir auch etwas von 240 auf 210 Frames. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 Meinte mal gelesen zu haben für Mobile liegt so die Grenze bei 100-200 drawcalls und bei PC 1000-2000 drawcalls je nach Rechner. Spielen natürlich auch andere Faktoren wie Polycount und Script-Performance eine Rolle, sowie Texturauflösung, echtzeit Licht und Schatten, Reflextionen, Global Illuminatin usw. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Juli 2018 Autor Melden Share Geschrieben 20. Juli 2018 PC Spiele arbeiten so um die 500 - 5000 DC hab ich gerade gelesen. Mobile zwischen 40 - 60 DC. Moderne Handys schaffen schon bis zu 160 DC. Glaub da muss ich mich wegen den paar DC nicht verrückt machen oder? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 Würde ich auch meinen, vorallem am Anfang bei der Entwicklung wenn du noch nicht genau weisst wo die Reise hin geht. Performance ist eine Sache die man eigentlich macht wenn das Spiel soweit ist wie es sein soll, dann kannst du dir gedanken machen wie man was Batchen kann oder wo man was Baken kann. Dazu gibts auch jede menge Tuts z.B. auf YT. Natürlich wenn man von Anfang an drauf achtet, hat man später weniger Arbeit. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 20. Juli 2018 Autor Melden Share Geschrieben 20. Juli 2018 Ich bin schon am Ende der Reise, dass sind gerade letzte Korrekturen. ^^ Sag mal kannst du mir verraten wie viel Batches gut sind? Was mir jetzt einfällt, ich könnte die Kamera auch nur dann anschalten, wenn die Kamera gedreht wird, so würde ich auch DCs sparen, zumindest zeitweise. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 Also Batches sind eigentlich Drawcalls, kannst also von den selben Werten ausgehen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 20. Juli 2018 Melden Share Geschrieben 20. Juli 2018 @Kojote So? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 21. Juli 2018 Autor Melden Share Geschrieben 21. Juli 2018 Jop genau so. Darf ich mir den Code mal ansehen, würde mich mal interessieren! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 21. Juli 2018 Melden Share Geschrieben 21. Juli 2018 Ich denke am einfachsten gebe ich dir gleich das Package, dann siehst du auch wo was ist. Ist jetzt alles Sprite basiert. Den MSAdvancedCameraController Ordner kannst du ignorieren, ist nur ein gratis orbit Kamera controller Asset. Mit gedrückter rechten Maustaste kannst du die Kamera rotieren, mit Pfeiltaste links/rechts kannst du den Player drehen. Mit dem Wert Offset kannst du die Blickrichtung ändern, wenn du z.B. die Blickrichtung von Hinten statt von Vorne haben möchtest, ist aber im Script beschrieben. Ob das Script was taugt garantiere ich natürlich nicht, wie immer gilt: viele Wege führen nach Rom. Edit:https://www.dropbox.com/s/2k6jqqsojm42wpn/SpriteUI2.unitypackage?dl=0 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 21. Juli 2018 Autor Melden Share Geschrieben 21. Juli 2018 Super, danke dir, schau ich mir gleich mal an! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 21. Juli 2018 Melden Share Geschrieben 21. Juli 2018 @Kojote Verwende das neue package, hab noch was angepasst. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.