Jump to content
Unity Insider Forum

Tiwaz

Members
  • Content count

    950
  • Joined

  • Last visited

  • Days Won

    32

Tiwaz last won the day on January 10 2017

Tiwaz had the most liked content!

Community Reputation

231 Excellent

About Tiwaz

Contact Methods

  • Skype
    Auf Anfrage

Profile Information

  • Gender
    Male
  • Location
    Bayern
  • Interests
    Programmieren, Klettersport, Gaming

Recent Profile Visitors

5,497 profile views
  1. Zockt eigentlich jemand aktiv Rainbow Six Siege auf PC? 

    1. Lars

      Lars

      Ich nicht...

  2. Tiwaz

    Was studiert ihr so bzw. habt ihr studiert?

    Kann ich bestätigen, kenne viele Kommilitonen aus der Wirtschaftsinformatik und auch wie das so von den Informatik-Professoren gehandhabt wird ist das Niveau in informatischen Modulen dort nicht so hoch wie beispielsweise allgemeine oder technische Informatik. Ich studiere btw (allgemeine) Informatik und mache aktuell meinen Master in Software Engineering (bin bald mit meiner Masterarbeit fertig) Ich hab meine Bachelorarbeit über ein Unity Projekt beschrieben und schreibe meine Masterarbeit aktuell über von mir abgewandelte Version des Dual Contouring Algorithmus in einem Voxel-Framework, ich denke mehr muss ich nicht sagen ^^ (Die MA allerdings nicht in Unity, aber ist auf jeden Fall auch Game Programming) Mein Rat wäre so allgemein wie möglich anzufangen also im Grundstudium/Bachelor eben zum Beispiel Informatik oder Software Engineering oder sowas in die Richtung und dann mit der Zeit weiter spezialisieren. Ich hab zumindest noch kein Stellenausschreiben eines Entwicklerstudios oder so gesehen wo explizit ein Game Design/Programming Studium oder ähnliches vorausgesetzt wird, auf der anderen Seite wenn du dich aber mal dazu entschließt vielleicht doch nicht mit Spiele programmieren deine Brötchen verdienen zu wollen, bist du aber mit einem allgemeineren Studiengang deutlich flexibler. Deswegen hab ich auch allgemeine Informatik angefangen und nicht Game Programming oder sowas und ich bin ganz froh drüber, weil ich seit einer Weile eher von der Idee abgekommen bin als Game Developer arbeiten zu wollen und spiele mit dem Gedanken eher in die IT-Security zu gehen. Viel Erfolg noch beim Abitur btw
  3. Ja oder ein Dictionary<Vector2, PixelInformation>
  4. Blöd gefragt.. fehlt nach using UnityEngine ein ; ? Wäre immer gut wenn du auch die Fehlermeldung posten würdest, idealerweise auch mal einen Screenshot von MonoDevelop wenn der Fehler auftritt
  5. Tiwaz

    Alternative zu Windows 10

    Kann zu deiner eigentlichen Frage bezüglich Unity/Cinema4D/etc nichts sagen, ich benutze selber keine anderen Betriebssysteme als Windows. Aber zum PS: Habe seit letztem Jahr Juni auf meinem PC Windows 10 und hatte seitdem auch wirklich keine Probleme. Updates mache ich grundsätzlich manuell, weil ich das ganze automatische geupdate sowieso blöd finde. Keine Lust in Spielen oder so zu sterben weil sich grade irgendein Update einschaltet und meine komplette Bandbreite aufbraucht, aber wenn ich dann immer Update habe ich auch nie Probleme. Lediglich die Realtek Treiber wollen sich irgendwie nicht installieren lassen aber da denke ich ist nicht Windows Schuld, auch wenn ich die manuell von der Herstellerseite runterlade und installiere funktionierts nicht und ohne Treiberupdate läuft ohnehin alles super, von daher egal. Weil du sagst du hast immer 100% Auslastung.. Du könntest ja mal schauen, welcher Prozess das verursacht und mal bisschen im Internet recherchieren, ob du den Dienst nicht ausschalten kannst. Win10 übermittelt zum Beispiel auch gern mal Telemetrie-, Feedback-, Diagnosedaten etc und das frisst sich dann teilweise auch auf 100% Auslastung hoch. @edit: finde halt an Windows ziemlich cool, dass es so viel von selber regelt. In gefühlt 99.9% aller Änderungen funktioniert mittlerweile einfach alles reibungslos und wenn ich dann mal Probleme habe gibt es zig Lösungsansätze und Anlaufstellen wo man sich easy Infos holen kann wie man es trotzdem zum laufen kriegt. Denke das kommt aber auch einfach daher, dass Windows wahrscheinlich auf mehreren hundert Millionen Endgeräten läuft (wenns reicht..) und es bei geringsten Fehlerquoten halt trotzdem entsprechend viele Fehler gibt. Bei 100 Mio Endgeräten und einer 0.001% Chance, dass etwas nicht hinhaut sind immerhin 100.000 Geräte betroffen.
  6. Tiwaz

    NavMesh Agent - die Technik dahinter

    Wie bewegen sich die Hindernisse denn? Sind es Spieler/NPCs die über Rigidbodys oder CharacterController oder so hin und hergehen? Oder sind es tatsächlich Gegenstände die z.B. der Spieler verschieben/platzieren kann? Falls letzteres der Fall ist, würde ich denke ich die Bewegung an die Tilemap knüpfen. Gegenstand wie nach XY verschoben -> Gridposition XY wird belegt (und die Ursprungsposition jeweils wieder freigegeben) Grundsätzlich könntest du bei Bewegungen von Hindernissen auch immer die Position prüfen und die auf die TileMap mappen und dann updaten So etwa if(wasMoved){ Vector2 newGridPosition = ConvertGlobalPositionToGridPosition(transform.position); grid[(int)newGridPosition.x][(int)newGridPosition.y] = TileState.Occupied; grid[(int)previousGridPosition.x][(int)previousGridPostion.y] = TileState.Free; previousGridPosition = gridPosition; } Theoretisch dürfte das mit quasi allem gehen, sofern die Position in eine TileMap/Grid Position konvertiert werden kann.
  7. Tiwaz

    First Person Shooter - Zoom Umsetzung

    Jap. Das ist auch nicht so beabsichtigt, deswegen habe ich es gepostet, um Anregungen zu kriegen wie man das verhindern kann Das hat sich eben darauf bezogen und wie gesagt, auf dem Screen wird NICHT Dual Rendering benutzt, sondern die Main Camera herangezoomed. Die Lösung zu dem ganzen ist, wie ich jetzt dank deiner Posts rausgefunden habe, dass ich die Waffenkamera auf Original-FOV lasse, also ungezoomed, weswegen es dann extrem gestreckt gerendert wird. Benutze ich bei Main und Waffenkamera dasselbe fov ist das nicht mehr der Fall und es passt alles ^^ Denke damit ist das Thema erledigt und werde das mal aus dem Eingangspost entfernen. Das hatte allerdings mit der Umfrage selbst nichts zu tun, daher bitte noch abstimmen welchen Ansatz fürs Zooming ihr besser findet, falls noch nicht geschehen. Danke
  8. Tiwaz

    First Person Shooter - Zoom Umsetzung

    Hm.. tatsächlich habe ich immer vergessen das FOV der Waffenkamera mit anpassen.. stupid me.. Habe mich schon gefragt warum mir das bisher noch nie aufgefallen ist, damals habe ich aber auch alles mit der Main Camera gerendert, wenn das FOV beider Kameras gleichermaßen angepasst wird passts wieder Was meinst du im PS mit dem großen schwarzen Rand meiner Beispielbilder? Meinst du das: ? Das ist nämlich eben NICHT Dual Rendering. So sieht es aus, wenn man eben das FOV der Waffenkamera nicht mit anpasst
  9. Tiwaz

    First Person Shooter - Zoom Umsetzung

    Ich denke, dass es tatsächlich ein Modell ist und keine UI, da auch das Scope im anvisierten Zustand und die Waffe die man vorne noch sieht von Belichtung beeinflusst wird. Außerdem hat man einen "sway" also wenn man sich dreht zieht sich die Waffe nach und auch beim Recoil verändert sich der Blickwinkel. Da sieht man deutlich, dass es noch 3D ist. Entweder also tatsächlich Modelle oder extrem geschickte UI Effekte aber das denke ich wie gesagt nicht wirklich (wobei ich mich natürlich auch irren kann, intuitiv wäre es für mich jedenfalls mit 3D Modelle leichter umzusetzen). Ich teste das mal später, vielleicht würde es ja z.B. auch reichen das Scope (sollte es sich tatsächlich um ein Modell und nicht um UI handeln) in der z-Achse zu stauchen. Das wäre dann auch ohne Zusatzaufwand mit eigentlich jedem Visier möglich. Deine zweiten Punkt mit dem Rendern der Waffe mit einer zweiten Kamera hab ich auch schon umgesetzt btw ^^
  10. Hat jemand Erfahrungen mit Multicoptern, vorallem mit dem Bau von Quadrocoptern?

  11. Tiwaz

    First Person Shooter - Zoom Umsetzung

    Ja du beschreibst den Dual Render Ansatz, der funktioniert auch schon sehr gut in meinem Projekt, ich lasse allerdings die RenderTexture auf der Linse im Scope rendern (also über ein Material), dann habe ich das Scope als 3D Objekt, das auch von Licht und Schatten beeinflusst wird + eben die RenderTexture. Weißt du, oder auch gerne jemand anders, auch wie man das ranzoomen mit der Main Camera richtig umsetzen kann? Vllt suche ich einfach nach den falschen Dingen (oder google zeigt mir alles andere nur nicht mehr an, weil ich schon mal so intensiv nach Dual Rendering gesucht habe ^^) aber mir wird kein Tutorial oder sowas mehr gezeigt, wie man eben einfach durch ein Scope schaut.. Wie in meinem Anfangspost im Screen gezeigt sieht man einfach die komplette Innenseite des Scopes und das weiß schraffierte sollte durchsichtig sein, weiß aber nicht wie ich das machen könnte. Meine Vermutung wäre, dass Spiele wie Battlefield 4 das Scope beim Zoomen austauschen, sodass zwar noch ein Modell angezeigt wird, das aber sehr verzerrt/gestaucht ist, um das oben beschriebene/gezeigte Problem nicht zu haben. Habe in Battlefield 4 mal ein Video vom Anvisieren gemacht und meiner Einschätzung nach genau den Frame ausgemacht wo es getauscht wird. Man sieht die Überblendung zwischen zwei Frames, das noch deutlich besser zu erkennende Scope ist das Scope, das man die ganze Zeit sieht wenn man nicht anvisiert hat. Viel interessanter finde ich aber das Scope, das gerade reinfaded. Wenn man mal die Regler am Scope betrachtet sollte der Regler oben am Scope überhaupt nicht mehr sichtbar sein wenn man sein Auge ans Visier hält, im "neuen" Scope das gerade eingeblendet wird, ist es mehr als deutlich zu erkennen, man kann sogar die Ziffern erkennen. Der Regler rechts an der Seite ist von der normalen Sicht aus ebenfalls nicht zu erkennen und wird erst sichtbar wenn man komplett rangezoomed hat. Auch den dürfte man mit dem Auge direkt am Visier nicht sehen, da er schlichtweg vom Visier selbst verdeckt wird. Wie schätzt ihr das ein? Was man btw auch sehr schön an den Betonwänden rechts über/neben dem Visier sehen kann ist, dass sich die verschieben, das passiert durch das verringern des FoV bei der Main Camera, also man merkt (wenn man mal darauf achtet) einen deutlichen Zoom der Main Kamera, das ist nicht Dual gerendert.
  12. Moin, kurze Frage: Wie findet ihr (sofern ihr Ego Shooter spielt) das Zoomen besser? In fast allen Spielen (CS:GO, Battlefield, PUBG, ...) wird einfach die Kamera rangezoomed (das fov verringert) und wenn der Zoom relativ groß ist (alles über ~6x Zoom) wird ein Scope Overlay angezeigt, das alles um das Sichtfeld schwarz rendert. Eine andere Möglichkeit wäre Dual Rendering also, dass tatsächlich nur das Scope zoomed und man die Szene außenrum ansonsten ganz normal sieht. Spiele wie Red Orchestra, Insurgency und Call of Duty: Ghost benutzen den Ansatz. Dazu wird eine zweite Kamera mit niedrigem fov benutzt und mithilfe einer RenderTexture über die normale Kamera gezeichnet. Beides hat natürlich seine Vor- und Nachteile. Vorteile des Dual Renderings gegenüber dem Overlay: (- Es ist einfach realistischer) <- Ist ja nicht zwingend besser, in einem halbwegs realistisch angehauchten Shooter aber imho ein Vorteil, daher mal in Klammern - Man sieht wie gesagt die Szene außenrum ebenfalls noch, wodurch man zum Beispiel von der Seite kommende Gegner sehen kann - Man kann jedes beliebige Scope nehmen, eine RenderTexture Linse reinschieben und man kann es benutzen Nachteile des Dual Renderings gegenüber dem Overlay: - Die zweite Kamera muss zusätzlich gerendert werden, erhöht den Rechenaufwand - Manche Leute kommen damit nicht zurecht und sind (zumindest anfangs) irgendwie desorientiert beim Zielen - Man hat einen zusätzlichen Verwaltungsaufwand wegen der Dual Render Kamera (z.B. wenn man weggesteckte Waffen noch auf dem Rücken rendern will, dann darf die Kamera natürlich nicht aktiv sein) Vorteile des Overlays gegenüber dem Dual Rendering: - Man spart sich Render Performance, da nur die eine main camera rendern muss - Es ist recht intuitiv damit zu zielen, da viele andere bekannte Spiele das so machen und "man" sich daran gewöhnt hat Nachteile des Overlays gegenüber dem Dual Rendering: - Es ist unrealistisch, dass alles andere auch rangezoomed wird - Man bekommt auf kompletter Kamerasicht einen Tunnelblick, also sieht man auch nicht mehr was neben einem passiert @edit: Hier wurde ein Problem beschrieben, das bereits gelöst wurde. Habe es hier entfernt damit es nicht weiter stört, die Posts zum Problem und der Lösung befinden sich trotzdem noch in den folgenden Antworten. Daher mal eine kleine Umfage: Welche der beiden Ansätze findet ihr persönlich besser in einem Spiel? Vielen Dank Tiwaz
  13. Moin, ich bastel zur Zeit an einem First Person Shooter - bzw. an einem Toolkit dafür - und möchte den auch Multiplayerfähig machen, kenn mich allerdings noch nicht wirklich mit Unet oder Networking in Unity allgemein aus. Ich hab mir zwar schon ziemlich viel zu dem Thema durchgelesen und mir diverse Tutorials angeschaut aber es macht irgendwie jeder anders und viele bewegen sich sehr nah am Unity Tutorial, das quasi nur die absoluten Basics abdeckt und man nicht mal transform Movement interpolieren kann. Deswegen mal ein paar Fragen wie man das wohl am besten umsetzen würde was ich vorhabe, mit dem Hintergedanken, dass das Spiel in einem kompetitiven Umfeld genutzt werden können sollte. Sprich: Spielern sollte es so schwer gemacht werden zu cheaten, wie es mit vernünftigem Aufwand nur möglich ist und Delays und Lags sollten ebenfalls mit vernünftigem Aufwand so gering wie möglich gehalten werden. "Der Netcode soll gut werden" wie man heutzutage vielleicht sagen würde ^^ Ich habe oft gesehen, dass auf dem Player die Position und Rotation genommen wird und die wird dem Server dann mitgeteilt, der das Update dann an alle anderen Clients überträgt. Der Ansatz hat natürlich einige Vorteile. Der Code ist total unkompliziert und kurz und funktioniert unabhängig von Input/AI oder dem Controller (Rigidbody, CC, CustomCC, ...) und man kann sehr einfach eine Sendrate einstellen, die eben besagt, dass der Spieler alle x Millisekunden ein Positionsupdate machen soll/darf. Nun hat der Ansatz aber auch zumindest einen sehr offensichtlichen Nachteil: Als ambitionierter Spieler mit schlechten Absichten kann man das System unglaublich einfach ausnutzen, es werden einem keine Steine in den Weg gelegt Teleporthacks oder Speedhacks zu benutzen. Das kann man zwar wohl abschwächen indem man den Server die Updates validieren lässt, allerdings hilft das nur sehr begrenzt. Angenommen ich möchte da Fahrzeuge reinbringen oder eine Teleportation (was ich tatsächlich auch schon drin habe) gibt es zig Spezialfälle und 100%ig korrekt kann ich das nie auswerten. Der andere Ansatz wäre dem Server (fast) komplette Autorität zu gewähren und die User schicken nur ihren Input und der Server berechnet dann alles und schickt die Resultate an alle anderen Spieler. Das ist was ich so gelesen habe und auch wenn man mal logisch überlegt der sinnvollere Ansatz, allerdings auch der deutlich kompliziertere. Wie wird dann zum Beispiel eine Sendrate umgesetzt? Irgendwie müsste der User dann sämtlichen Input sammeln und im nächsten Sendframe an den Server schicken, der den Input dann mit zumindest derselben Reihenfolge abarbeiten sollte oder? Angenommen mein Server läuft aber jetzt mit 60fps und ein Spieler hat jetzt zum Beispiel 28fps während ein anderer 104fps hat. Wie führe ich da das ganze dann zusammen? Ich denke zum Senden selbst wäre FixedUpdate nicht verkehrt oder eine Coroutine, die nach Ablauf von (1 / sendrate) Sekunden den Input losschickt, richtig? Aber welchen Input schicke ich denn dann überhaupt los? Denn der Spieler mit 104fps hat u.U. viiel mehr Input angesammelt als der mit 28fps? Schaue ich dann quasi jeden Frame an und speichere mir alle Aktionen dazu ab und sage "Frame 1 hat 16.32ms gedauert, Frame 2 hat 15.87ms gedauert, Frame 3 hat 17.28ms gedauert" und rechne dann auf dem Server mit den abgespeicherten deltaTimes vom Client? Könnte das nicht ebenfalls potenzielles Cheaten ermöglichen? Wenn der User den Input manipulieren kann und sagt jeder Frame indem Movement getätigt wurde ist jetzt 3x so lange, dann würde der Server den Player auch 3x so weit bewegen als er es eigentlich dürfte. Wobei der Server eigentlich relativ einfach überprüfen könnte, ob die angegebene Gesamt-deltaTime mit der vergangenen Zeit seit dem letzten Tick übereinstimmt. Wenn es länger ist kann das nicht stimmen und den Input verwerfen oder anders behandeln. Und wie werte ich das dann am besten auf dem Server genau aus? Das leichteste wäre wahrscheinlich den Input zu cachen und dann in FixedUpdate (oder einer Coroutine, die auf den Tick eingestellt ist) einfach der Reihe nach im gleichen FixedFrame abzuarbeiten und nach Abarbeiten allen Inputs den Clients ein Update zu schicken. Und als zweites: Wie könnte ich einen Dedizierten Server aufsetzen? Einfach einen Host starten, der selbst keinen Player spawnt oder ist da noch mehr dahinter? Schon mal im Voraus vielen Dank für Antworten, bin um jede Hilfe froh Grüße, Tiwaz
  14. Tiwaz

    Kamera Steuerung

    Weil ich grade erwähnt wurde, ich hab gestern mal kurz eine freie Kamera für einen Map Editor geschrieben, damit kann man sich in alle Richtungen bewegen und rumschauen (ohne Kollisionen etc natürlich, wäre für einen Editor ein bisschen dumm) aber vielleicht hilft dir das was: void Update () { Vector3 movement = cameraTransform.TransformDirection(new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"))); if (Input.GetKey(KeyCode.Space)) { movement.y = 1; } else if (Input.GetKey(KeyCode.LeftControl)) { movement.y = -1; } transform.position += movement * Time.deltaTime * speed; if (Input.GetMouseButton(1)) { transform.Rotate(new Vector3(0, Input.GetAxis("Mouse X") * Time.deltaTime * rotationSpeed, 0)); cameraTransform.Rotate(new Vector3(-Input.GetAxis("Mouse Y") * Time.deltaTime * rotationSpeed, 0, 0)); } } Bezüglich der kameraBewegungRandPosition könntest du die transform.position auch einfach clampen? Mit Mathf.Clamp könntest du den Wert auf einen Minimal und Maximalwert beschränken, wäre vielleicht angenehmer als die ifs da noch rein zu bauen.
  15. Das ist zwar richtig, allerdings muss man auch sehen mit welchem Aufwand man sich die Optimierung leistet. Natürlich könnte ich jetzt herkommen und alle built-in Funktionen bis auf Anschlag optimiert reimplementieren. Allerdings ging eure Diskussion damals schon über 2 Tage hinweg und dabei handelt es sich um 1mio Aufrufe mit einem Performancegewinn von ~55% Wie oft hat man Vector3.Distance schon in einem Update Zyklus? Mich würde es wundern wenn man überhaupt 100x im gesamten Programm Vector3.Distance benutzen würde und das wäre dann (runtergerechnet von den Testergebnissen) ein Performancegewinn von 5,1 Nanosekunden auf 2,3 Nanosekunden. Das ist echt nicht der Rede wert. Wenn ich meinen Profiler anwerfe, mich mal 2 Stunden hinsetze und eine der teureren Methoden auch nur 5% schneller machen kann würde das wahrscheinlich mehrere Millisekunden rausholen. Was ich damit sagen will: Häng dich nicht mit sowas auf, sondern optimiere lieber das was wirklich Zeit frisst. Solange du dein FPS Ziel erreichst ist doch alles gut und falls nicht gibt es wahrscheinlich 1000 Methoden, bei denen es sich eher lohnt mal ein paar Stunden zu investieren und zu optimieren. Es sei denn natürlich du musst Vector3.Distance tatsächlich mehrere zehntausend Mal pro Update benutzen - warum auch immer. Aber dann ist im Zweifelsfall auch irgendwas am grundlegenden Design des Programms komisch/optimierbar, statt an der Methode selbst.
×