Jump to content
Unity Insider Forum

Shalafi

Members
  • Posts

    61
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Shalafi's Achievements

Advanced Member

Advanced Member (3/3)

0

Reputation

  1. Hi, ich habe eine Tilemap in der Art von Terraria/Starbound. Diese möchte ich jetzt gerne mit 2D-Lights ausstatten. An der Oberfläche soll das Licht normal scheinen und im Untergrund soll es dunkel werden. Wie kann ich das am Besten erreichen? Ich hab bisher keine Directional-Lights in 2D gefunden. Point-Lights (zB Fackeln) für den Untergrund sollten kein Problem sein. Hat jemand ein paar Tipps für mich? Gruß
  2. Hi, danke für die Antwort. Wie genau funktioniert das mit den BoxCollidern zu Poolen? Gruß
  3. Hi, ich hab mal wieder Probleme mit meiner Tilemap Ich habe ein Tilemap-Streaming, bei der über einen Server die Tilemap vor dem Spieler geladen - und hinter dem Spieler wieder gelöscht wird. Das funktioniert auch alles wunderbar. Mein Problem ist jetzt der Collider. Wenn ein neuer Bereich der Tilemap geladen wird, dauert es immer > 1 Sekunde bis der Collider neu erstellt ist. Wenn ich testweise den Collider abschalte, dauert das Rendern an sich nur wenige Millisekunden. Hat jemand eine Lösung, wie ich die Zeit auf ein vertretbares Maß runterbekomme? Ich hab schon mit diversen Eintellungen am TilemapCollider2D rumgespielt und auch den CompositeCollider2D ausprobiert. Meine Idee war, dass man beim Laden der Map vielleicht jeder Tile nur nen Collider gibt, wenn in einem angrenzenden Feld keine Tile ist. Kann mir jemand weiterhelfen? Gruß
  4. HI, danke für die Antwort. Das ist schon alles bekannt und wird später auch so gemacht. Im Moment soll der Map-Generator eine Map erstellen, die man dann bearbeiten kann und dann auf dem Server speichern. Das Streamen der Map wird dann so wie bei dir beschrieben passieren. Es geht mir im Moment nur darum, dass das Generieren der Map 2-3 Sekunden dauert, aber das Löschen vielfach länger. Gruß
  5. Hi, Ich habe einen Map-Generator geschrieben, der mir eine (riesen) Tilemap generiert. (~1 Mio. Tiles) Das funktioniert ohne Probleme und ist in 2-3 Sekunden getan. Mein Problem ist es, dass wenn ich das Spiel beende (oder die Map anderweitig lösche) es dann ewig dauert, bis Unity wieder reagiert. Das kann dann schon mal ne Minute dauern. Kann man das irgendwie beschleunigen, bzw. woran kann das liegen? Vielleicht noch zur Info: die Map an sich ist in verschiedene GameObjects mit Tilemap-Components unterteilt (Chunks, um nach Bedarf einen Teil der Map zu deaktivieren). Könnte es daran liegen? Gruß Shalafi
  6. Hi, ich habe ein Skript geschrieben, mit dem ich eine 2D Tilemap in Unity generiere. Wenn die Welt etwas größer wird, hab ich zB mehr als 120000 Tiles gleichzeitig in der Scene. Das Generieren der Tiles ist nicht das Problem, das ist in knapp einer halben Sekunde getan. Das Problem ist dann der TilemapCollider. Der braucht dann immernoch ein paar Sekunden, bis er fertig ist. Kann man den Collider für einzelne Tiles ausschalten? Oder muss ich die Tilemap in kleinere Tilemaps unterteilen (die Generierung funktioniert schon in Chunks, die Tiles werden allerdings in ein einziges Tilemap-Objekt geschrieben), und dann für alle Tilemaps, die nicht in der nähe des Spielers sind, deaktivieren? Oder gibts da noch eine bessere Lösung? Gruß
  7. Hi, ich möchte ein 2D Terrain erstellen, so in die Richtung Terraria. Wie erstelle ich am Besten das Terrain? Kann ich dafür die Unity Tilemap nehmen, oder doch lieber selbst Meshes generieren, wie man es in 3D macht? Es geht mir hauptsächlich um die Performance, da ja mit unter viele Tiles/Blöcke/wie auch immer, angezeigt werden müssen. Gruß
  8. Hi, das Socket.ReceiveFrom() läuft bei mir in einem extra Task. Zwischen den beiden ReceiveFrom() kopiere ich die Daten einfach nur in ein anderes Byte-Array, welches im Mainthread dann verarbeitet wird. Das sollte eigentlich keine Probleme machen, dass da zu viel verlohren geht, oder? Gruß
  9. Hi, mir ist schon klar, dass es bei UDP auch zu Packet-Loss kommen kann. Reliable UDP hab ich bereits eingebaut. Allerdings wollte ich wissen, ob das auch ein Grund für verlorene Packets sein kann, oder ob die Socket da schon was buffert oder nicht. Gruß
  10. Hi, ich hab wieder eine Frage zu Sockets: Kann es passieren, dass bei einer Socket (UDP) zwischen Socket.ReceiveFrom(), dem Abarbeiten des Empfangenen, und dem nächsten Socket.ReceiveFrom() Daten ankommen, die dann verloren gehn? Wenn bei einem Server mehrere Clients gleichzeitig Senden, kann das zu Problemen führen? Wenn Ja, wie kann man das am Besten verhindern? Gruß
  11. Hi, danke für die Antwort. Ich wollte wissen, ob das was ich mit Stream.BeginWrite() verschicke, auch in einem Stück bei Stream.BeginRead() ankommt. Wenn das so ist brauch ich mir ja darum keine Gedanken zu machen. Gruß
  12. Hi, ich habe folgende Frage: Kann es beim Empfangen per TCPClient vorkommen, dass die gesendeten Daten in mehreren Stücken ankommen? Oder verhindert das der Client automatisch? Wenn es zum splitten kommt, wie geht man am Besten damit um? Muss man da als erstes die Größe des Packets übertragen und dann mit dem Verarbeiten warten bis alles da ist? Gruß Shalafi
  13. Shalafi

    Tageszeiten

    Hi, danke für die Ausführung Ich denke faken reicht fürs erste aus. Meine Idee war anfangs, die Rotation in den Nacht-Stunden etwas zu beschleunigen, und am Tag etwas zu reduzieren (damit man wieder aut 360° pro Tag kommt). Kann man das so umsetzen, bzw. wie müsste das aussehn? Oder geht es mit einer Sinus-Kurve einfacher? Gruß
  14. Shalafi

    Tageszeiten

    Hi, ich habe ein Skript, das je nach Tageszeit das directional Light in der Scene anpasst, quasi die Sonne. public class LightingManager : MonoBehaviour { //Scene References [SerializeField] private Light DirectionalLight; [SerializeField] private LightingPreset Preset; //Variables [SerializeField, Range(0, 24)] private float TimeOfDay; [SerializeField, Range(-10, 10)] public float speedMultiplier;//Here you adjust the value private void Update() { if (Preset == null) return; if (Application.isPlaying) { //(Replace with a reference to the game time) TimeOfDay += Time.deltaTime * speedMultiplier; TimeOfDay %= 24; //DO NOT MODIFIED UpdateLighting(TimeOfDay / 28f); TimeOfDay %= 24; } else { UpdateLighting(TimeOfDay / 24f); } } private void UpdateLighting(float timePercent) { //Set ambient and fog RenderSettings.ambientLight = Preset.AmbientColor.Evaluate(timePercent); RenderSettings.fogColor = Preset.FogColor.Evaluate(timePercent); //If the directional light is set then rotate and set it's color, I actually rarely use the rotation because it casts tall shadows unless you clamp the value if (DirectionalLight != null) { DirectionalLight.color = Preset.DirectionalColor.Evaluate(timePercent); DirectionalLight.transform.localRotation = Quaternion.Euler(new Vector3((timePercent * 360f) - 90f, 170f, 0)); } } //Try to find a directional light to use if we haven't set one private void OnValidate() { if (DirectionalLight != null) return; //Search for lighting tab sun if (RenderSettings.sun != null) { DirectionalLight = RenderSettings.sun; } //Search scene for light that fits criteria (directional) else { Light[] lights = GameObject.FindObjectsOfType<Light>(); foreach (Light light in lights) { if (light.type == LightType.Directional) { DirectionalLight = light; return; } } } } } Wie kann ich das Skript so ändern, dass es nicht so lange dunkel ist, zB nur von 22 - 06 Uhr? Gruß
  15. Hi, in einem anderen Forum wurde mir der Artikel https://gafferongames.com/categories/building-a-game-network-protocol/ empfohlen, der ist sehr interesant. Allerdings hab ich etwas noch nicht so richtig verstanden. Wie verhindert man, dass ein Reliable Packet 2 mal beim Server ankommt (weil der Sender es nochmal geschickt hat, da die Antwort vom Empfänger zu lange gebraucht hat)? In dem Artikel wird das irgendwie mit Sequence Buffer gemacht, aber das hab ich nicht so richtig verstanden. Im Moment merke ich mir einfach die letzten 1000 Sequenz-Nummern der empfangen Pakete in einer List. Geht das noch performanter? Gruß
×
×
  • Create New...