Jump to content
Unity Insider Forum

MaZy

Members
  • Content Count

    615
  • Joined

  • Last visited

  • Days Won

    25

MaZy last won the day on July 29

MaZy had the most liked content!

Community Reputation

175 Excellent

About MaZy

Profile Information

  • Gender
    Male
  • Location
    Hannover

Recent Profile Visitors

13,636 profile views
  1. Shit, hatte mal eine Seite gefunden, wo steht wie viel du finanzieren musstest oder der Aufwand wäre sowas zu entwickeln. Finde leider nicht, aber die Zahl war in den 6 stelligen bis 7 stellig, wenn man ein Team hatte. Also dafür sind es zu wenig informationen. Eine instanzierte Zone kann auch leer stehen und da könnte man auch mit 100 Euro Server klar kommen. Passiert da aber richtig viel Action z.. die Aufgebauten sind eine Art Simulation -> Physikberechnung usw. dann kann schon teuerer werden weil CPU usw ausgelastet werden kann. Ich nehme mal als Beispiel Just Cause 2 mit einem 60 Euro Server was ich damals hatte und Server Emulator. Dort gab es auch Instanzen (und ich fand das mega geil). Während alle da rum geballert haben konnte man rennen fahren auf der gleichen Server und man hat sich nicht gestört, weil man in eine art Instanz war. Dort gab es bis zu 100 Spielern kaum Probleme. Allerdings war die meiste Physik nicht serverseitig berechnet. Nur einfach Daten wurden hin und her getauscht. Just Cause 2 war heftig mit Action verbunden. Leider aber ist das kein guter vergleich. Aber Zer0Cool sagt da schon richtig. Kann in dem bereich beim Anbieter so viel kosten. Was du machen kannst für testzwecke Amazon server holen. da wird ja nur dann teuere, wenn du auch mehr Leistung brauchst.
  2. Benutzt du wirklich UNet oder Mirror (nachfolger)? UNet ist nämlich veraltet. Würde empfehlen Mirror zu benutzen, weil es wirklich gut verbessert wurde. Daher kann nun sein, dass ich paar Dinge sage, die vllt bei UNet nicht gibt. UNet ist so aufgebaut, dass jedes Client seine eigene Variable verändern kann, allerdings über den Server. Diese Variablen werden über das Netzwerk synchronisiert (also auch andere Clients können das mitbekommen, wenn so eingestellt ist). Das wäre eine Möglichkeit um damit zu arbeiten. Der andere Spieler könnte nun einfach diesen Wert lesen. Möglichkeit zwei. Wenn es nur zwei Clients sein sollen, dann ist das leichter. Du führst ein Command aus. Beispiel CmdSendIntegerToOtherPlayer(int intValue) In der Funktion wird nun der Server den ändern Spieler (ich sage bewusst Spieler und nicht client) finden sein Wert aktualisieren. Wenn es syncvar ist, dann geht es automatisch und wenn normale Variable ist, dann kann man zusätzlich TargetRpc benutzen. Damit kann man gezielt an ein Spieler senden. Es gibt auch kompliziertere Wege mit dem MessageSystem.
  3. Dein Monobehaviour ist nicht farbig. Das bedeutet, dass Unity nicht rein geladen werden konnte, bei der Datei (ich weiß nicht warum es nur manchmal bei einer Datei so ist). Würde mal versuchen Visual Studio neuzustarten und wenn nicht klappt, die Projektdateien von Visual Studio in Unity Ordner mal zu löschen, damit sie neu generiert werden. Danach sollte es gehen. Das hatte ich selbst früher bei jede zweite Script. Heute kommt das seltener vor zum Glück.
  4. Also ich muss hinzufügen, ich hatte auch mal nach dem Upgraden, dass ein Model bzw Prefab nicht mehr angezeigt wurde. Ich hab viel getestet und verglichen.. ist einfach unsichtbar gewesen. Manchmal aber sehr random und selten, war es mal kurz zu sehen in playmode aber dann wieder weg. Der einzige Ausweg war aus dem Model neuen Prefab zu machen oder das Model zu duplizieren (kann leider nicht mehr erinnern, welches ich davon genau gemacht habe).
  5. Ich hab einen riesen Ordner ca mit 600 Dateien und wenn man ein Ordner verschoben, mal ein Script umbenannt hat und wenn man dann ein anderes Projekt damit updaten wollte war es nicht möglich. Da müsste man quasi ganzen Ordner löschen und sonst hatte man manchmal Dinge doppelt. Wenn ich nun ein Projekt A habe und dort diese Sachen benutze und irgendwann Projekt B habe und weil Unity auch updated müsste ich paar Dinge anpassen. Dabei werden auch Ordner umstrukturiert. Nun wenn nun diesen Ordner in den Gitordner schiebe.. dann hab ich Spaß, dann sind da Skripte doppelt vorhanden oder sonst was. Ebenfalls nach Projekt A ist auch wiederum Spaß. Mittlerweile versuche ich mich daran zu gewöhnen extra einen Unity Projekt mit nur diesen Sachen zu öffnen und da immer anzupassen, wo auch git ordner ist. Ich seit dem nur noch unitypackages. Aber das ist auch nicht immer möglich, denn vllt will ich ja nur eine Sache reinladen und habe das mal angepasst. Ist ziemlich nervig. Dazu würde ich auch gerne wissen, wie ich da am besten vorgehen kann. Denn ich starte echt viele Projekte, auch wenn mal kleine oder große sind, dabei sind die meisten Dinge vom Ordner dabei und passe je nach Bedarf an. Das mit Package Manager müsste ich auch mal langsam machen. Hab ja die Sachen vor dem PackageManager gehabt und daher so geblieben ^^.
  6. Sieht bei google link aber falsch aus. Zu mindest zeigt es bei mi reine Welt oder Erde Icon. Richtig ist es das hier: bzw https://github.githubassets.com/favicons/favicon.svg https://github.githubassets.com/favicons/favicon.png Meistens werden sie als example.com/favicon.svg oder png usw gespeichert, aber manche Seiten benutzen noch unterordner sowas wie media oder assets usw. Falls du das automatisieren willst musstes du die seite runterladen also quelltext haben und nach dem favicon verlinkung gucken.
  7. Ist sehr irritierend was da in Awake steht. Die Zeile sagt mir, dass du mehrere gameObjects mit dem Tag Score suchst. Aber meistens sind Scores ein gameObject z.B. da wo der Script ist und die Punkte eingetragen sind oder wie in deinem Fall Text-Component. dann wird objs ignoriert und das getan. Aber was ist this.gameObject? Ist das das GameObject mit dem Text? Steht nirgends. Nichtsdestotrotz wird das glaub ich nicht so, falls es mit Text-Component gemacht werden soll, funktionieren. Dafür müsstest du Canvas selbst immer mitnehmen. Die leichteste Möglichkeit wäre in dein Script static zu benutzen. public static int GlobalScore = 0; Muss jetzt nicht Global heißen. Statics sind immer und überall verfügbar. Jedoch ist die Einschränkung auf ein Variable, da man keine Objekte von der Klasse erstellt. Etwas kompliziert wird als Objekt. Z.B: public class ScoreData : Monobehaviour { public int Score; void Awake() { DontDestroyOnLoad(gameObject); } } Da kannst du dein Score speichern. Das GameObject muss bedacht platziert werden. Wenn du Beispiel in Hauptmenü das hast und immer wieder ins Hauptmenü gehst, wird immer ein GameObject mehr sein. Hab öfters gelesen, dass Unity deswegen bemängelt wird, warum es kein preintro scene gibt genau für solche Dinge. Aber man kann das auch selbe machen. Also eine Scene ganz am Anfang habe und diese Dinge reinpacken und dann zu Hauptmenü wechseln. Problem: Im Editor möchte man nicht immer von der ersten Scene beginnen (darum wollen andere das mit Preintro Scene intrigiert haben). Deswegen kann man dafür wie @chrische5 erwähnt hat ScriptableObjects nehmen. Im Prinzip ist es so ähnlich wie ich das mit ScoreData mache, nur dass Unity die im Hintergrund instanziiert und lädt, wenn man sie braucht und dann ganzes Spiel lang verfügbar bleibt. Und da man als Asset das erstellen kann, kann man sie überall verwenden. Eigentlich perfekt für sowas. Wenn du irgendeine Lösung davon ausgesucht hast kannst du nun weiteren Script schreiben. Und jedes mal, wenn die Scene lädt sucht er nach ScoreData und liest den Score und setzt den Text oder bei ScriptableObject muss du nur den Asset im Inspector reinschieben wie gewöhnlich. Musst dann auch nicht suchen lassen.
  8. Nicht direkt UI Tutorial, aber es wird gezeigt in einem Beispiel wie sowas aufgebaut werden kann bzw. sollte. Als Beispiel wird ein Inventar gezeigt, wie man Inventar UI-Scripte aufbauen kann ohne, dass die Scripte mit einander verbunden werden müssen. Eigentlich wirklich gutes Beispiel. Ich selbst verwende es mal so wie im Video und mal nicht so. Ich mag eher selber Coden und wahrscheinlich mag ich es deswegen manchmal anders, aber wenn es eher um Designer-fragen und Handhabung geht, dann ist das im Video echt gut, denn wenn du was ändern willst, dann kannst du das ohne im Code was zu ändern tun.
  9. Ich habe sowas bei Source 2 Engine (beim Spiel modden von Dota 2) verwenden müssen. Bald soll ja mit 2020 auch sowas kommen. Allerdings frage ich mich, wie es mit externen Frameworks aussieht z.B. animejs ist ein tolles Ding. In einem Kommentar oder Video, weiß nicht genau wo das war, meinte ein Unity Staff nämlich, dass Javascripts schwieriges Thema ist.
  10. Ich wollte jetzt nicht damit dich angreifen bzw. sagen, dass du unter einer Gehirnwäsche leidest oder so. Mit deinem Soda Solution hast du auch ein Video verlinkt, wo ich von anderen Threads teilweise die Argumente von dir gelesen habe wie im Video. Ich meinte damit nicht, dass die Aussagen darauf aufbauen, wenn es so rüber kam. Die Argumente sind auch ja nichts schlimmes, weil sie dort Probleme aufweisen und Lösungswege zeigen. Ich bin daher davon ausgegangen, dass du auch die gleiche Meinung teils ins Sinne von, dass zum Beispiel Singletons usw. die Produktivität in Unity erheblich kompliziert machen können. Aber du sagtest trotzdem auch, dass ICH etwas grundsätzlich Falsch mache, weil ich etwas Manager nenne, ohne eigentlich zu wissen, wie es im Hintergrund tatsächlich abläuft. Und ich finde hier gibt es aber kein richtig oder falsch. Ich habe auch nirgends erwähnt, dass ich überzeugt von meiner Methode bin, sondern nach verschiedenen Ideen Ausschau halt und etwas erklärt wie ich sonst mache bzw. mir vorstelle. Genauso denke ich das bei der Lösung mit Soda oder ähnliches auch. Ist ja nicht so, dass ich das "Falsch" sehe: Ich bin jetzt auch nicht großer Fan von Singletons, wie es gerade in Unity verwendet wird, aber genau deswegen hab ich eine eigene Technik in einem anderen Projekt was das angeht entwickelt. Genau die Probleme, dass ich nicht immer in der ersten Szene starten will, damit alles geladen wird, fehlende Referenzen vermeiden usw., die wollte ich damit eliminieren. Dabei wurden, wenn überhaupt gebraucht wird, die Singletons in ScriptableObjects eingebaut. Das heißt, sie werden nur dann eingesetzt, wenn etwas sie braucht. Egal ob ich ein Prefab in de Scene zum Testen rein schiebe oder nicht. Die waren automatisch da. Und solche Automatisierungen mag ich sehr gerne. Nichtsdestotrotz, ging mir ja hier eher um die Menüs und HUDs zu verwalten. Eine relevante Aussage hast du zu MVC gemacht. Es wird so aufgebaut, dass man von Unity weggehen kann und wo anders weiter machen kann und glaube hat auch mit sowas wenig zu tun und brauche das nicht. Ich hab letztens etwas anderes auch zu UI Sache gelesen und werde mal schauen, ob es eventuell Sinn macht.
  11. Mit Soda oder die ähnlichen Weg gehen konnte ich mich nicht anfreunden. Ich hab schon da einiges ausprobiert und teilweise auch einiges gemacht und benutze paar Techniken davon, aber insgesamt mit dem scriptable floats, ints usw. ist für mich nicht so schön. Allerdings finde ich die events schön mit scriptable objects und damit hab ich auch teilweise die UI geupdatet. Ich hab das so ähnlich, aber mit generic types. Mir geht es allgemein darum, dass ich wenig wie möglich übers Inspector machen möchte, sondern so aufbauen möchte, dass es automatisiert funktioniert. Also sprich Automation soll eher hier sein. Bezüglich der UI Beispiel: Je mehr Einheiten im Spiel vorhanden sind umso mehr sind HP Bars zu sehen. Diese Prozesse dahinter möchte ich sag mal so "perfektionieren". Ja in dem Fall hab ich tatsächlich Manager genannt, aber ich weiß nicht warum das "grundsätzlich" Falsch sein soll. Es ist einer der normalen Methoden die man benutzen kann. Hier geht es mir darum, dass ich direkt etwas aufrufen kann ohne, dass es etwas hier oder da gezogen werden muss (also die Components). Zum Beispiel ziehe ich ein neuen UI Panel rein und es ist automatisch zu finden. Später kann / möchte ich MenuManager.Get("TeamMenuItem") machen und MenuItem zurück geben und kann dann damit direkt arbeiten. Ist nicht mal von MonoBehaviour geerbt. Das ist derzeit so und möchte das aber etwas noch besser handlen. Ich schätze mal du reagierst darauf allergisch, weil in dem Unite Video die Manager bezüglich singletons etwas kritisiert haben und das man auch jedes mal in die Scene die Sachen brauchst damit es funktioniert. Das ist hier nicht der Fall da es singleton frei ist. Hierbei geht es wirklich um großes Spiel, welches in Steam, wenn es Fortschritte macht erscheinen soll. Deswegen möchte die UI Planung gut durchführen. Andere Teile sind schon fortgeschritten.
  12. Hallo ich war mal nach UI Architecture Techniken mal am Googlen um Tipps einzuholen. Dabei hab ich öfters gelesen, das einige von MVC schreiben. Ich verstehe ja grundsätzlich worum es da geht, aber von der Umsetzung her kommt mir das nicht so sinnvoll vor bzw. dass es vllt nicht so mein Ziel entspricht. Ein Beispiel was ich gelesen habe war: https://www.toptal.com/unity-unity3d/unity-with-mvc-how-to-level-up-your-game-development Allerdings bezieht man sich hier nicht um die UIs, sondern um das Konzept selbst. Trotzdem wollte ich mal allgemein Fragen, ob es überhaupt sind macht sowas bei sowas zu verwenden oder gibt es da andere Techniken. Einige andere System wie Doozy UI benutzt da komplexeres, allerdings ist das eher für Menüs gestaltet. Also Animationen, Sounds usw. Mir geht es eher um den Managen von verschiedenen Teilen. Was ich bei MVP gut finde ist, dass man quasi im Core von überall zugreifen kann. app.menuManager.Open("option");. MenuManager würde selber die app kennen und kann von da aus sogar andere Menüs öffnen (ob es machen dürfen sollte, ist ne andere Frage ^^). So ähnlich ist ja bei Components auch, wenn ich entweder Referenz zu dem Hauptteil aufbaue. Also quasi: class UIMenuManager; class UIMenuItem -> Awake -> finde UIMenuManager Jetzt könnte ich bei UIMenuItem beispielsweise Back() benutzen und da wäre sowas wie: Close this -> menuManager.LastMenu -> Open()
  13. Hast du die Beschreibung gelesen? Es steht da deutlich, dass VTRK SteamVR ab version 2 nicht unterstützt. https://assetstore.unity.com/packages/tools/integration/vrtk-virtual-reality-toolkit-vr-toolkit-64131
  14. Immer, ja ist aber immer noch Geschmacksache. Ich habe selbst und habe bis heute noch das Problem sie aufzuteilen, aber derzeit sieht bei mir z.B. so aus. SpaceShip SpaceShipMovement SpaceShipWeapon Ship hat auch ein ScriptableObject, wo ich die Basic Einstellungen wie Geschwindigkeit, Name usw habe. Die Geschwindigkeit könnte man aber ohne ScriptableObject in den ShipMovement packen, denn da ist das eher interessanter. Nun sagen wir mal, dass manche nicht bewegen können und stationär sind. Dann kann ich ShipMovement entfernen und schon können sie sich nicht bewegen. Das ist auf jeden Fall viel besser als alles in einen zu packen. Ich weise die SOs an den Basescript z.B. SpaceShip zu, Die anderen benutzen getcomponent von SpaceShip und da kann ich auf SO zugreifen. Aber da gibt es mehrere Wege.
  15. Ich glaube bei Google's Authentifizierung braucht man keine Angst habe, denn die wollen ja auch sogar callback url haben. Sowohl alles client seitig, aber auch client und server seitige Variante gibt es. Ich hab sowas bei meiner Seite auch vor ein, zwei Monate implementiert, aber musste schon einiges probieren, weil es nicht genau erklärt wird. Vor allem hab ich nicht verstanden, wann man ausgeloggt wird und wie man das checkt. Ich schätze mal du meinst WebGL Version und nicht Windows oder warum zeigst du da PHP-Code statt C# oder ähnliches?
×
×
  • Create New...