Jump to content
Unity Insider Forum

Authoritative server Physic engine


BennIY

Recommended Posts

Guten Abend,

 

mich beschäftigt schon lange eine Frage.

Ich möchte in meinem Spiel Hackern keine Chance geben und den Gameserver voll autoritär halten.

 

Dazu muss natürlich auch die Physik auf dem Server gesteuert werden.

Mein Server ist ein C# Server aus Net Framework Elementen aus dem Namespace System.Net und System.Net.Sockets

 

Dabei habe ich einige Fragen und Gedankengänge.

 

Ich brauche eine Physik Engine unabhängig von XNA oder anderen Game Engines rein für NET, DigitalRune habe ich gesehen kann allerdings nicht damit um gehen und verstehe es wenig.

Was biete sich da für mich an?

 

Des weiteren habe ich die Möglichkeit eine Unity Instanz als Server Laufen zu lassen und die Unity eigene Physik zu nutzen, das ist das einfachste für mich jedoch glaube ich nicht, Performance technisch das Beste.

 

Ich lese mich da gerade viele Englische Texte. Mein Englisch ist nicht schlecht doch bei fachlichen Themen die man auf deutsch erstmal verstehen muss ist das einlernen in einer Fremdsprache noch eins oben drauf.

 

Was könnt ihr mir noch für Tipps geben zum Thema autoritärer Server.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten Abend,

 

mich beschäftigt schon lange eine Frage.

Ich möchte in meinem Spiel Hackern keine Chance geben und den Gameserver voll autoritär halten.

 

Dazu muss natürlich auch die Physik auf dem Server gesteuert werden.

Mein Server ist ein C# Server aus Net Framework Elementen aus dem Namespace System.Net und System.Net.Sockets

 

Dabei habe ich einige Fragen und Gedankengänge.

 

Ich brauche eine Physik Engine unabhängig von XNA oder anderen Game Engines rein für NET, DigitalRune habe ich gesehen kann allerdings nicht damit um gehen und verstehe es wenig.

Was biete sich da für mich an?

 

Des weiteren habe ich die Möglichkeit eine Unity Instanz als Server Laufen zu lassen und die Unity eigene Physik zu nutzen, das ist das einfachste für mich jedoch glaube ich nicht, Performance technisch das Beste.

 

Ich lese mich da gerade viele Englische Texte. Mein Englisch ist nicht schlecht doch bei fachlichen Themen die man auf deutsch erstmal verstehen muss ist das einlernen in einer Fremdsprache noch eins oben drauf.

 

Was könnt ihr mir noch für Tipps geben zum Thema autoritärer Server.

 

Würde Unity Instance laufen lassen. Guck dir doch als Beispiel mal Rust an wurde auch so Programmiert. (Mit Unity)

Da es auf Linux zB. auch läuft seh ich da überhaupt kein Problem. Man lässt das die Unity Server Instance ohne Grafiken starten, und fertig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mach dir keine sorgen über Performance.. was Unity Instance angeht. Ich finde es super, dass es so möglich ist. Ist klar, wenn man Physik mit berechnen lassen willst, dass es auch bissel mehr Performance drauf geht.

 

Rust ist ein Beispiel allerdings benutzt Rust RakNet von scratch aus - also selbst programmiert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mach dir keine sorgen über Performance.. was Unity Instance angeht. Ich finde es super, dass es so möglich ist. Ist klar, wenn man Physik mit berechnen lassen willst, dass es auch bissel mehr Performance drauf geht.

 

Rust ist ein Beispiel allerdings benutzt Rust RakNet von scratch aus - also selbst programmiert.

 

Ja Klar das Rust, RakNet benutzt. Nur steht das glaub ich in keiner Relevanz. Aber ich denke, jedoch das MaZy damit meinen wollte. Wenn man ein sehr komplexe Network API benutzt sagen wirs mal so. Und diese dann doch recht verbuggt ist und tausend mal mit der Kirche ums Kreuz läuft wirds sicher weit aus mehr Performance fressen, als wenn du nur die Physiks berechts.

 

Du musst ja auch die Physiks berechnen, da man immer davon ausgeht das Jeder Spieler der Dein Spiel oder dein Programm benutzt hackt und somit ja.

 

(Man beachte meine Rechtschreibung und dann kann man sich ausmalen wie der Montag so läuft.)

:D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe das mit Rust gesagt, weil Unity RakNet auch benutzt hatte und nicht denken soll, dass Rust immer noch das alte Network System von Unity benutzt :D. Die habe deswegen eigenes mit raknetgeschrieben.

Ich meine eine Zeitlang testeten sie auch uLink, aber war wohl doch nicht so toll, weil der Service bzw. Support einfach kacke sein soll.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Unity instance fällt mir ein, ist nur bedingt möglich aber nicht die beste lösung. Ich brauche unbedingt double precision space game und so. Die hoffnung, dass Unity das einestages unterstützt habe ich auf gegeben und mir schon viele Gedanken zum Wechsel der Engine gemacht. Doch für C# ist es die beste Wahl. Das Problem mit der Genauigkeit konnte ich Clientseitig für jeden einzelnen lösen doch auf dem server wo alle Spieler zusammen kommen bietet unity keine Individuallösung.

 

Ich habe nun lange geschaut nach Alternativen für C# doch habe massive Probleme mich in andere Librarys einzuarbeiten wie z.B. OpenTK oder SharpDx. Da die meisten dokumentationen nach dem "Wie zeichne ich ein dreieck/2d game" enden.

Auch der Büchermarkt sei es deutsch oder englisch finde ich sehr rar

 

Ich habe mir ein Konzept ausgedacht bei dem jeder Client seine eigene Physik berechnet und die positionsdaten aller spieler an den server sendet. Der Server macht dann ein abgleich ob die jeweiligen informationen übereinstimmen. Der Hackende Spieler wird dadurch enttarnt indem die Menge der Clients etwas anderes behaupten.

Die umsetzung ist allerdings nicht so einfach allein schon bei den Daten die Asynchron eintreffen. Kann man zu obriger Idee referenzen finden ob diese so angewendet wird?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich verstehe nicht warum du überhaupt mehr Präzision braucht, sieht man doch vom Prinzip her eh nicht oder?

 

Und wenn du es Clientseitig lösen kannst, kannst du es auch übertragen also seh ich keine Problem woran es scheitern sollte mit Unity zu arbeiten.

 

Ich habe mir ein Konzept ausgedacht bei dem jeder Client seine eigene Physik berechnet und die positionsdaten aller spieler an den server sendet. Der Server macht dann ein abgleich ob die jeweiligen informationen übereinstimmen. Der Hackende Spieler wird dadurch enttarnt indem die Menge der Clients etwas anderes behaupten.

Die umsetzung ist allerdings nicht so einfach allein schon bei den Daten die Asynchron eintreffen. Kann man zu obriger Idee referenzen finden ob diese so angewendet wird?

 

Natürlich geht das, mit UNet. Wenn du dich mit UNet einarbeitest siehst du das dieses eigentlich nicht so extrem schwer ist.

Jedoch muss der Server riesen Arrays speichern. Da frag ich mich aber ob es dann doch nicht besser ist wenn du den Server alles berechnen lässt oder meinst du damit das der Client dann den Unterschied kennt ob selbst oder Serverseitig berechnet.

 

Vom Grundsatz her sag ich immer lass den Client nur das berechnen, wo es dir nicht weh tut das er diese Werte verändert. Bzw den Server und die Stats nicht manipulieren kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...