Jump to content
Unity Insider Forum

Shalafi

Members
  • Content Count

    26
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Shalafi

  • Rank
    Member

Recent Profile Visitors

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

  1. Shalafi

    BCrypt Login

    Hi, danke für die Antworten. Vielleicht hab ich mich falsch ausgedrückt. Es handelt sich nicht um eine HTTP-Anwendung. Die Kommunikation findet über TcpClient und TcpServer statt. Wie kann ich die Kommunikation am besten schützen, wenn ein Passwort übermittelt wird? Zu meinem BCrypt Problem: Irgendwie lieftert die HashPassword für das gleiche Password immer unterschiedliche Hashes. Deshalb funktioniert der Login nicht. Kann mir jemand sagen was ich falsch mache? Gruß
  2. Shalafi

    BCrypt Login

    Hi, Ich bastle an einem kleinen Login-System auf Basis von TcpClient und TcpServer. Bei der Registrierung wird ein Salt und das mit BCrypt gehashtes Passwort in die Datenbank gespeichert. Meine Encryption-Klasse seiht so aus: public class Encryption { public static string PasswordSalt(int length = 6) { string salt = BCrypt.Net.BCrypt.GenerateSalt(12); salt = salt.Substring(0, length); return salt; } public static string HashPassword(string password, string salt) { try { string hash = BCrypt.Net.BCrypt.HashPassword(password, salt); return hash; } catch (Exception e) { return (string)null; } } public static bool ValidatePassword(string password, string salt, string correcthash) { try { return BCrypt.Net.BCrypt.Verify(password, correcthash); } catch { return false; } } } Das Problem ist, dass die ValidatePassword-Methode immer False zurück gibt. Wenn ich das gleiche Password durch die HashPassword-Methode schickt, kommt immer ein anderer Hash raus. Wo liegt mein Denkfehler? Ist es üblich, dass Passwort erst am Server zu hashen, oder sollte das der Client schon machen? Der kennt ja eigendlich den Salt aus der Datenbank nicht. Kann man die Kommunikation zwischen Client und Server irgendwie per SSL oder so schützen? Brauch ich dafür ein eigenens Zertifikat? Gruß
  3. Hi, ich bastle seit kurzen an einem Multiplayer Spiel (Kein Shooter, eher Aufbau). Die Verbindung und der Datenaustasch zwischen Client und Masterserver funktioniert. Jetzt steh ich vor der Frage, wie ich am Besten die Worldserver entwickle. Muss pro Map-"Instanz" ein eigener Server (in Unity entwickelt) gestartet werden, oder kann ein Server auch mehrere Instanzen einer Map verwalten? Die müssten ja dann alle getrennt von einander behandelt werden. Hat da jemand Tipps für mich? Gruß
  4. Hi, also für die Entwicklung werde ich natürlich erstmal selber nen Server hosten. Ich möchte auch erstmal die Machbarkeit meiner Idee ausprobieren und nen kleinen Prototypen entwickeln. Ich arbeite hauptberuflich auch bei einem großen deutschen ISP, deshalb sollten später auch gemietete Root-Server möglich sein. Aber wie gesagt, erstmal möchte ich ausprobieren, ob das technisch überhaupt machbar ist. Gruß
  5. Hi, also ich gedenke das Serversystem so aufzubauen, dass es einen Masterserver gibt, der die ganzen Login-Prozesse übernimmt und die Spieler auf die gewünschten World-Server weiterleitet. Jeder World-Server (eine Unity-Instanz) ist dann für ein Dorf zuständig. Was genau meinst du mit "mehrere Server in einem Prozess"? Meinst du damit das mehrere Server auf einem Rechner laufen? Oder kann man mit einer Unity-Instanz mehrere Server simulieren? Gruß
  6. Hi, danke für die Antwort. Mir schwebt so eine Art Minecraft vor, wo eine Gruppe von Spielern einen eigenen Bereich hat, auf dem sie bauen können. Dafür wäre dann wohl für jeden Bereich eine Server-Instanz nötig, oder?
  7. Hi, danke für die ausführliche Antwort. Wenn man zB mehrere Dungeons hat, muss man dann für jeden Dungeon einen Server starten, oder kann man auch mehrere Maps mit einem Server arbeiten lassen? Gruß
  8. Hi, ich denke an ein Spiel Richtung Minecraft (Citybuild). Das heißt es gibt verschiedene Zonen, die Spieler bebauen können. Muss ich da für jede Zone eine eigene (World-)Server Instanz starten? Ich überlege noch wie ich die ganze Server-Architektur aufbaue.
  9. Hi, ich möchte ein kleines 3D Multiplayer Spiel erstellen, was mit deinem dedicated Server arbeiten. Ich hab mir einige Guides angesehn, allerdings hab ich eine Sache noch nicht verstanden. Eigendlich habe ich gedacht, dass der Server doch die Daten der Clients immer gegenprüfen muss. Wenn der Client zB eine Positions-Angabe schickt, muss der Server prüfen ob der Spieler da überhaupt sein darf. Sonst konnte doch jemand einfach falsche Positionsangaben verschicken und sich so durch Wände teleportieren oder ähnliches. Dazu muss der Server ja dann auch die Unity-Map kennen. Dazu hab ich bisher noch keine Informationen gefunden. Wie wird sowas in der Praxis umgesetzt? Gruß
  10. Hi, danke für deine Antwort. Da sich die Spitze der Waffe nicht genau in der Bildschirm-Mitte befindet, würde ein Raycast aus der Waffe recht ungenau sein, oder? Dass das Projektil dahin fliegt, wo der Raycast trifft, das hatte ich schon so eingebaut. Das Problem war allerdings, dass das Projektil falsch fliegt, wenn der Raycast nichts trifft. Ich hatte dann die Projektil in Richtung der Kamera-Rotation fliegen lassen. Dann hatte ich allerdings das Problem, dass wenn ich knapp neben ein Objekt schieße, der Raycast also nichts trifft, das Projektil trotzdem das Objekt trifft, da sich die Spitze der Waffe ja nicht in der Mitte der Kamera befindet. Ich suche eine Lösung des Problems. Gruß
  11. Hi, ok danke. Wir geht man dann mit diesem Problem um? Garkein Raycast nutzen und die Bullet-Collision nutzen? Gruß
  12. Oder ist ein Bullet-Objekt mit Trail-Renderer für diese Sache besser geeignet? Ich hatte das schonmal ausprobiert, und es hat eigendlich auch gut funktioniert. Das Problem war allerdings, dass der Raycast des Schusses von der MItte der Kamera ausgeht, das Projektil allerdings aus der Spitze der Waffe kommt. Das hat dazu geführt, dass das Projektil unter Umständen ein Objekt trifft, was der Raycast nicht getroffen hat. Wie löst man die Situation mit Bullet-Tracers am besten? Gruß
  13. Hi, ich möchte ein ParticleSystem als BulletTracer für ein FPS benuzten. Dazu hab ich das ParicleSystem direkt an der Spitze der Waffe platziert. Das Particle-System ändert auch die Rotation zusammen mit der Kamera bzw. dem Fadenkreuz, damit die Schüsse immer in die richtige Richtung gehn. Der Renderer hat den Render-Mode Streched-Billboard und eine Length-Scale von 20. Das Problem ist jetzt, dass die Particle anscheinend ihren Mittelpunkt an der Position des ParticleSystems haben und somit der halbe Particle durch die Waffe und den Spieler nach hinten gerendert wird. Wie kann ich das verhindern? Die Particle sollen immer direkt vor der Waffe anfangen. Gruß
  14. Hi, ich versuche mich an einem FPS. Ich hab ein Modell mit MakeHuman erstellt und eingebunden, so dass man die Arme sieht und wenn man an sich runter guckt die Beine. Nun möchte ich das gerne mit Waffen aus dem Asset-Store kombinieren, so dass man sie in die Hand nehmen und animieren kann. Ich hab im Moment keine Ahnung, wie ich sowas machen kann. Hat jemand ein gutes Tutorial als Einstiegspunkt für mich? Gruß
  15. Hi, hier ist es: public class Grenade : MonoBehaviour { public float Explosiontime { get; set; } public float Countdown = 5f; public float BlastRadius = 5f; public float ExplosionPower = 100f; public float MaxDmg = 100f; void Start() { this.Explosiontime = -1; } void Update() { if (this.Explosiontime > 0 && Time.time >= this.Explosiontime) { this.Explode(); } } //Countdown beginnt public void Throw(float throwtime) { this.Explosiontime = throwtime + this.Countdown; } //Explosion private void Explode() { Explosion.Explode(this.transform.position, this.BlastRadius, this.ExplosionPower, this.MaxDmg); Destroy(this.gameObject); } } Und das Skript für die Explosion auch noch: public static class Explosion { public static void Explode(Vector3 explosion_position, float BlastRadius, float ExplosionPower, float MaxDMG) { Collider[] hitColliders; hitColliders = Physics.OverlapSphere(explosion_position, BlastRadius); foreach (Collider hitcol in hitColliders) { if (hitcol.GetComponent<Rigidbody>() != null || hitcol.GetComponent<GaW.Player.PlayerStats>() != null) { //Gucken, das nix im Weg RaycastHit hit; bool wallhit = false; if (Physics.Raycast(explosion_position, hitcol.transform.position - explosion_position, out hit, BlastRadius)) { if (hit.transform.GetComponent<Rigidbody>() == null && hit.collider != hitcol && hit.transform.tag != "Player") { wallhit = true; } } if (wallhit == false) { if (hitcol.GetComponent<Rigidbody>() != null) { hitcol.GetComponent<Rigidbody>().AddExplosionForce(ExplosionPower, explosion_position, BlastRadius, 1, ForceMode.Impulse); } if (hitcol.GetComponent<GaW.Player.PlayerStats>() != null) { Vector3 closespoint = hitcol.ClosestPoint(explosion_position); float dmg = MaxDMG * (1 - (Vector3.Distance(explosion_position, closespoint) / BlastRadius)); hitcol.GetComponent<GaW.Player.PlayerStats>().Damage(dmg); } } } } } } Gruß
×
×
  • Create New...