Jump to content
Unity Insider Forum

Leaderboard


Popular Content

Showing content with the highest reputation since 09/13/2019 in all areas

  1. 3 points
    Moin, ich wollte hier mal kurz mein Spiel vorstellen an dem ich seit 1,5 Jahren arbeite. Das Spiel ist ein sogenanntes "Fast Pace" Racing Spiel im Weltraum. In dem Spiel gibt es aktuell 4 Planeten und eine Raumstation von der aus man startet. Diese Station ist die Basis für den Spieler. Dort kann man das Leaderboard ansehen, sein Schiff wählen, seine Statistik ansehen etc.. Es soll eigentlich alles ingame stattfinden ohne auf irgendeine Webseite gehen zu müssen. Das Spiel hat ein 6DoF physikbasiertes Flugmodel und ist Open World, so dass später auch neue Sonnensystem möglich sind. Am Anfang wollte ich die Rennstrecken in einzelne Szenen packen, konnte aber das Wechseln von einer Szene zur anderen nie ohne kleine Lags hinbekommen. Deshalb habe ich dann alles auf Open World umgebaut, was im Nachhinein eine gute Entscheidung war, denn jetzt gibt es keine Grenzen mehr in der Größe. 🙂 Desweiteren benutze ich ein für mein Spiel angepasstes floating origin system mit double precision. Das Sonnensystem hat aktuell einen Durchmesser von ca. 160000 Km mit Planeten die einen Durchmesser von 400 - 500Km haben. Die Rennstrecken befinden sich auf den Planeten oder im Weltraum, z.B. im Asteroidengürtel. Die Rennstrecken sind verschieden schwer und können auch mal auf der Nachtseite liegen. Außerdem muss man bevor man ein Schiff betritt auswählen welchen Controller man benutzt (Joystick, Maus / Tastatur oder Gamepad). Das Leaderboard ist dann nach Rennstrecke und Controller aufgeteilt. Das mache ich deshalb, weil ich aus anderen Spielen die ständigen Diskussionen kenne, das man diesem oder jenem Controller im Vorteil ist. Das Spiel ist als Single Player geplant mit einem Leaderboard in dem alle Spieler ihre Rennzeiten vergleichen können. Development Progress Unity Connect So genug gelabert, hier was zum gucken zeitlich geordnet. 🙂 Hier ein erstes Video wo ich die Machbarkeit getestet habe. Ein Video zur Autolanding Mechanik Character Test Video Trailer für ein Schiff Video zur Überarbeitung der Planeten
  2. 2 points
    So, die erste Testrennstrecke ist fertig und der RaceController funzt auch so weit ganz gut. Endlich wieder racen. 😎
  3. 2 points
    An sich ist die Update Methode ja genau dafür da, um in jedem Frame etwas zu machen oder wenigstens abzufragen. Natürlich summiert sich alles, was in all den Update Methoden gemacht wird. Genauso summiert sich auch alles was mit der Physik zu tun hat. Also z.B. auch die OnTrigger Events. Aber eine If Abfrage ob etwas nun eingetreten ist, oder nicht, kostet so gut wie gar nichts. Du solltest dir jetzt vielleicht überlegen, ob es gut ist, dass jedes interagierbare Objekt ständig überprüft ob der Player im Trigger ist und dann selber etwas ausführt. Oder ob es vielleicht besser ist, dass nur der Player triggert und erkennt, ob da ein Interagierbares Objekt ist. Wenn er das macht, dann kann er auch gleich die Tasten abfragen. Aber wie auch immer: Wenn jetzt das eine oder andere Objekt triggert und dann erkannt wird, dass der Player einem interagierbaren Objekt nahe ist, solltest du einfach eine entsprechende Variable auf true setzen. Und sobald sich der Player aus dem Trigger raus bewegt sollte diese Variable wieder auf false gehen. In der Update Funktion würde dann ein Abfrage auf die Trigger-Variable sein. Und nur wenn diese Variable true ist, würde auch ein Tastendruck der Taste E abgefragt werden. Ist die Variable nicht true, wird eben nichts weiter gemacht. Ganz einfach und kostet fast keine Leistung. Es gäbe auch die Möglichkeit innerhalb der OnTriggerStay Funktion die Taste E abzufragen. Aber das würde ich eigentlich nicht machen, weil diese TriggerEvents mit der FixedTime ausgeführt werden und das kann viel öfters sein, als es in der Update gemacht würde. (Je nachdem, was für ein Wert in der FixedTime steht und mit welcher Framerate dein Spiel läuft) Auf jeden Fall kannst du die Tastenabfrage nicht in der OnTriggerEnter machen, denn dann müsstest du E genau in dem Moment drücken, in dem dein Player in das Triggerobjekt eindringt. Das wirst du nur ganz selten mal schaffen.
  4. 1 point
    Eben und mit der Idee kann ich auch das Problem des speicherns von Wetterdaten und Uhrzeit umgehen, wenn er schlafen geht kann sich alles verändern. Uhrzeit und Wetter werden dann beim Spielstart per Zufall generiert. Die Idee is denke ich sehr passend und spart an vielen Punkten sehr viel Arbeit. 😀
  5. 1 point
    Die Idee finde ich gut. Oder dein Charakter geht in eine Höhle, Schlafplatz oder was auch immer. So wie viele andere Spiele das auch machen. Damit verhinderst du auch ohne viel Denken, dass in deinem Charakter irgendwas dummes spawned.
  6. 1 point
    Du kannst Areale für Tiere machen, aus denen diese nicht herausdürfen. Beim "hetzen" laufen sie an der Grenze dann eben wieder zurück oder schon vorher in eine andere Richtung. Und dann kannst du die Entfernung vom Spieler zum Areal-Spawner messen oder so. Wozu ist es denn zwingend nötig, die Tierpositionen zu speichern? Du kannst ja auch einfach sowas wie "Menge an getöteten Tieren" pro Spawner speichern. Ist es für das Gameplay nötig, jedes Tier im Detail persistent zu speichern? Genau. Und da gibt es viele Ansätze. Aber um eine Art level of detail für die Messung wirst du wahrscheinlich nicht herumkommen. Du kannst aber die Abfragen der Messung in eine Queue packen und diese werden dann jeden Frame abwechselnd abgefragt. Also Update Frame 1 = Tier 1 - Tier 10 misst, Update Frame 2 = Tier 11 - 20 misst. Oder so in der Art.
  7. 1 point
    Nur ein paar Anregungen: Tiere kannst du mMn problemlos despawnen, wenn der Spieler z.B. weiter als x Meter entfernt ist und das vielleicht noch über eine Dauer von x Minuten Für das spawnen von Tieren und prüfen, ob diese schon oder noch da sind bzw. leben, brauchst du keinen Collider. Du packst dir einfach Referenzen in eine Liste oder so und kannst jederzeit abfragen, ob dein Tier schon oder noch lebt. Hierfür bekommt jedes Tier eine Eigenschaft Health. Wenn diese 0 ist, ist das Tier tot. Prozentualen Kram kannst du mit https://docs.unity3d.com/ScriptReference/Random.html machen Das mit der Entfernung messen kann komplexer werden. Aber grundsätzlich kannst du das Distanz messen für Spawner auf verschiedenen Frames ausführen und/oder erst pro Areal (1km² z.B.) prüfen, ob der Spieler darin ist und dann nur darin alle Prüfungen pro Spawner machen oder oder oder, nicht ganz trivial.
  8. 1 point
    Du hast lediglich dein Array mit einer Größe von 5 Feldern erstellt. In diesen 5 Feldern sind aber überall NULL-Verweise, weil hinter dem jeweiligen Feld kein Spieler-Objekt existiert. Du musst also für alle Felder einen Spieler instanzieren. Ist Spieler eine normale Klasse, oder erbt diese von MonoBehaviour? Davon hängt ab, wie du die Felder initialisierst. Wenn die Klasse nicht von MonoBehaviour erbt, geht das z.B. so for(int i=0; i<spielerListe.Length; i++) { spielerListe[i] = new Spieler(); }
  9. 1 point
    Wenn ich jetzt gerade mal so in meine magische Glaskugel schau, dann sehe ich, dass du einen Fehler gemacht hast! Denn wenn nicht, würde es genauso funktionieren, wie bei dem Tutor aus dem Video. Hilft dir das? Nö? Schade, aber ich (wir) kann (können) dir nicht helfen, wenn du uns lediglich erzählst was passiert und dann ein Bild zeigst, wie deine Szene aussieht. Stell dir mal vor, ich würde dir erzählen, dass bei mein Auto immer eine Warnleuchte im Armaturenbrett leuchtet. Und dann zeige ich dir zusätzlich ein hübschen Foto, wie mein Auto auf einem Parkplatz steht. Jetzt müsstest du mir doch eigentlich sagen können, was mit meinem Auto los ist! Nein? Ist doof, oder? Aber so ist das nunmal wenn man nur irrelevante Infos bekommt. Also geh mal in dich und überlege dir, was wir uns anschauen sollten um dir helfen zu können. Kleiner Tipp: Ein Screenshot von der Szene ist es nicht!
  10. 1 point
    Hi @TheOnlyOne. Dankeschön. Ja das Terrain auf den Planeten wird generiert mit LOD Levels die man selber festlegen kann. Ich benutze dafür Space Graphics Toolkit. Da ich keine 500 Mann habe wie Star Citizen wäre ich wahrscheinlich noch nicht mal damit fertig wenn ich das alles selber machen würde. 😂 Ich passe in dem Asset halt die Planet Shader und Scripte so an wie ich es brauche.
  11. 1 point
    Wow hast verdammt viel ereicht in diesen 1,5 Jahren, mega Respekt! Sieht wie ein kleinder Bruder von Star Citizen aus ^^ das Gebirge auf riesigen Planeten hast du vermutlich generiert? Hast du dafür ein Tool entwickelt? Freut mich auch, dass Unity mit solchen Arealen zurecht kommt
  12. 1 point
    Klar, geht alles. Musst halt nur schauen, wie viel Aufwand das ist. Wenn du statt RBG HSV nimmst, kannst du mit dem H-Wert den Farbton bestimmten, S steht für Sättigung und V sozusagen für die Helligkeit. Du baust also einen Farbwert mit einem H-Wert zwischen Gelb und Braun. Du kannst auch den S-Wert vom H-Wert abhängig machen, um da eine Linie mit einem anderen Winkel durch das Farbspektrum durchzuziehen. Am Ende generierst du den Farbwert dann mit Color.HSVToRGB.
  13. 1 point
    Zum einen gibt's natürlich den stinknormalen Test, dass du das Spiel laufen lässt und schaust, wie gut das geht. Dann gibt's aber noch Unitys Profiler, mit dem man Frame für Frame schausn kann, was wieviel gekostet hat. Und zuletzt kannst du noch die Performance von zwei Dingen, die dasselbe auf unterschiedliche Art tun, mit einem Benchmark testen. Dafür hab ich mal eine kleine Klasse geschrieben, die man dafür benutzen kann. Und weil ich vergessen habe, den Post auch abzusenden, war malzbie jetzt schneller
  14. 1 point
    Es gibt den Profiler, der dir richtig viele Informationen bieten kann. https://docs.unity3d.com/Manual/Profiler.html Schau dir das und die die nachfolgenden Kapiten einfach mal an.
  15. 1 point
    Das hier ist kein Whatsapp, du darfst gerne beliebig lange mit deinen Beiträgen brauchen xD
  16. 1 point
    Wir reden hier von zehn mal "ein paar", sagen wir nochmal 10 Statements, mal 60 pro Sekunde. Mach von mir aus 144 draus. Das wären 14.400 Statements. Weißt du, wie viele Milliarden heutige Durchschnittsprozessoren davon pro Sekunde raushauen können? Mach dir mal keinen Stress. Faustregel ist: Performance ist erst dann dein Problem, wenn es überhaupt ein Problem ist. Wenn du performante Dinge schreibst ist das nicht schlecht, aber wenn du die Dinge erstmal zum Laufen kriegst ist das eben auch nicht schlechter. Bin mir nicht sicher, ob ich dich richtig verstehe, aber ja. Objekte sollten sich so viel es geht um sich selbst kümmern. Objekte, die andere Objekte so richtig vollständig kontrollieren, sind keine gute Idee.
  17. 1 point
    Ja, da ist Pooling super.
  18. 0 points
    Nein. Schau mal, da sind so Überschriften. Package Manager Editor Player Unter jeder dieser Überschriften ist eine Tabelle, die die Pfade auflistet, unter denen du beim jeweiligen Betriebssystem die Log File findest. Du bist mit Windows unterwegs. Also schaust du bei "Player" in der Tabelle unter "Windows".

Announcements

Hy, wir programmieren für dich Apps(Android & iOS):

Weiterleitung zum Entwickler "daubit"



×
×
  • Create New...