Schönen guten Tag,
Ich programmiere seit ein paar Wochen an einem kleinen Online-Game.
Ich verwende die Blender Game Engine und programmiere darin in Python.
Das Game soll eine Art Deathmatch in 3D werden.
Der Server ist ein von mir kleines Programmiertes Python Script, welches mit UDP Sockets (sowie der Client) kommuniziert.
Die Spieler können sich bis jetzt einloggen(Username/Password), spawnen und können sich bewegen.
Die Player Synchronisation ist fertig. (Location + Rotation) ( Animation Sync fehlt noch )
Mein Problem jetzt ist das ich gerne einen Gegner im Form eines Bäres auf die Karte setzen möchte.
=> Der Bär soll bei allen Spieler auf der GENAU GLEICHEN POSITION sein und GENAU DAS GLEICHE TUN.
Sprich also eine "NPC Synchronisation".
Mein Problem ist jetzt das ich theoretisch im Serverscript erkennen könne wenn jetzt z.B ein Spieler zu nah am Bär ist
dementsprechend den Bär langsam zu der X / Y / Z Achse des Spielers zu bewegen.
Das Problem ist das mein Serverskript nicht weiss wo die Erhöhungen sich auf der 3D Map befinden (Der Bär "schwebt" also durch z.B Bäume und Berge)
Wie lösen das Games wie WoW / Rift / Tera usw. ?
Diese Games sind ja MMORPGS und übertragen anmassen an Mobs!
Meine Ideen wären dazu:
1.) Das Serverskript in Form einer Blender Executable zu erstellen die genau die gleiche Map enthält wie die Clienten.
Vorteile:
- Sicherer gegen Cheats (Teleport Hacks) X/Y/Z Achse wird selb berechnet! ( der Player sendet nurnoch in welche Richtung er läuft)
Nachteile:
- Performance!
- Verschiedene Games gleichzeitig sind schwer umsetztbar.
2.) Einen zufälligen Clienten bestimmen der den Bär steuert und die Logik behandelt.
Vorteile:
- Einfach programmiertechnisch durchsetztbar
Nachteile:
- Disconnect?
- Cheat?
Was würdet Ihr mir vorschlagen? Bin sehr begeistert von dieser Thematik und freue mich auf JEDE Antwort! =)
Ich bedanke mich im Voraus für alle Antworten. =)
Mit freundlichen Grüssen,
the greedy Pancake-Cat aka. _Pancakes_ ^^
Eine neue Idee meinerseits:
3.) Server vergibt Spawnpoint des Bärens und schickt dann einfach nurnoch in welche Richtung er läuft.
Vorteil:
- X/Y/Z Achse vollkommen richtig.
- Programmiertechnisch einfach
Nachteil:
- Bär hat eine sehr sehr geringe Logik ( Da ich nicht mit Blender arbeite sondern nur per Skript ) ( -> Blender kann Steering, Distance usw -> kleine KI möglich)
- Cheats?
Mit freundlichen Grüssen,
_Pancakes_






