Kilometerstand von Fahrzeugen

  • Moin,


    ich frage mich wie man den Kilometerstand von Fahrzeugen berechnen kann :/

    Im Moment fehlen mir die Ideen.

    Ich hoffe das ihr mir weiter helfen könnt.


    Mit freundlichen Grüßen,

    Chris <3

    Mit freundlichen Grüßen

    Chris • HighLiVe Projektleiter

  • Ich hab es Client Seitig so gemacht!


  • Clientside ist scheiße ;). Sorry aber wenn du auf Perfomance aus bist besonders. Ebenfalls kannst du die Daten nicht wirklich validieren. Und Parameter auf Deutsch?

    Sincerely | Mit freundlichen Grüßen,

    ipadmini22

  • Natürlich, aber sie gehören eigentlich wirklich auf Englisch ;).

    Der Satz ist jetzt naja, grammatikalisch ungünstig.


    Exakt. Server können wir ganz simpel hochskalieren und optimieren. Derzeit sind clientseitige Timeouts einer der Hauptursachen von Kopfschmerzen. Daher sollte jegliche mögliche Last serverseitig abgearbeitet werden. Außerdem kannst du die clientseitigen Daten zusätzlich null validieren.

    Ebenfalls ist clientside derzeit die Resource single-threaded, auf dem Server können wir, wenn wir es können, alle Threads ansprechen. Immer noch sicher, dass clientside sowohl Performance als auch sicherheitstechnisch besser ist ;)?

    Sincerely | Mit freundlichen Grüßen,

    ipadmini22

  • Natürlich, aber sie gehören eigentlich wirklich auf Englisch ;).

    Der Satz ist jetzt naja, grammatikalisch ungünstig.


    1. Lass ihn seine Parameter heißen so wie er es will. Wenn du das auf Englisch für besser bzw. verständlicher empfindest schön.

    2. Deutschlehrer machen sich hier unbeliebt. Kappa

    3. Hast du Recht das es über den Server laufen sollte.


    Also im Moment ist es wegen der schlechten Performance gerade wenn es um den Client geht sowieso schwer..

  • 1. Lass ihn seine Parameter heißen so wie er es will. Wenn du das auf Englisch für besser bzw. verständlicher empfindest schön.

    2. Deutschlehrer machen sich hier unbeliebt. Kappa

    3. Hast du Recht das es über den Server laufen sollte.


    Also im Moment ist es wegen der schlechten Performance gerade wenn es um den Client geht sowieso schwer..

    So wie ich das aufgefasst habe, weniger um den grammatikalischen ausdruck oder auch, wie er jhetzt seine Variablen genau gennant hat. Es gibt sogenannte "Prinzipien der Softwaretechnik", welche man auch als Normen verstehen kann. Diese regeln, wie Variablen genannt werden etc.. Besonders bei größeren Projekten ist es wirklich sehr zu empfehlen, sich auch an diese algorithmischen Strukturen zu halten.


    Wie bereits erwähnt wurde, kann man Serverseitig extrem viel performant lösen. Dazu gehören aber auch die nötigen Kenntnisse in Multithredding etc.. So etwas Clientseitig zu lösen. Vorallem, da der Server durch das Event eh dauernd getriggert wird...



    Ich meine er widerlegt, seine eigene Aussage, dass Clientseitig performanter ist, aber dennoch dauernd der Server angesprochen wird durch die Events?

  • 1. Lass ihn seine Parameter heißen so wie er es will. Wenn du das auf Englisch für besser bzw. verständlicher empfindest schön.

    2. Deutschlehrer machen sich hier unbeliebt. Kappa

    3. Hast du Recht das es über den Server laufen sollte.


    Also im Moment ist es wegen der schlechten Performance gerade wenn es um den Client geht sowieso schwer..


    1) Schließe ich mich Lenon an. Ich habe noch kein großes kommerzielles Projekt gesehen, was keine englischen Camel/Pascal Case Variablen genutzt hat (dabei konnte er sich noch nicht mal zwischen den beiden entscheiden und mischt dann noch Englisch mit Deutschem).

    2) Ich habe halt nicht verstanden, was er von mir will. Also bekommt er den Deutschlehrer zu hören ;). Sonst kann jeder bauen, was er will, aber man muss es verstehen.

    3) Sag ich ja.


    Besonders Performance, aber eben auch Sicherheit


    Ich meine er widerlegt, seine eigene Aussage, dass Clientseitig performanter ist, aber dennoch dauernd der Server angesprochen wird durch die Events?

    Der Server muss eh immer angesprochen werden. Allerdings ist die Last (der Berechnung) dann nicht mehr serverside, dass ist korrekt. Insgesamt kann aber über eine stark optimierte Resource und einem guten Server, dieser Mehraufwand geduldet werden.

    Zukünftig wird es die Option geben, C# clientside zu nutzen, aber selbst dann muss man aufpassen, dass keine Pakete injected werden. Mir ist es dort nicht Wert, diese Dinge an den Client abzugeben.

    Sincerely | Mit freundlichen Grüßen,

    ipadmini22

  • Mööööp Ja gut ich sage mal so jedem das seine und von Kommerziel und groß war glaube ich keine Rede....


    Nennen wir es einfach mal ein Kleines bsp. zu der Berechung von Meter/n pro Sekunde worauf man die zurück gelegten Kilometer berechnen kann.


    Wie und wo sie/er es nutzen möchte und wie sie/er seine Variablen nennt ist dem jeniegen überlassen. (Ich bin ja nicht der jeniege der Vorschreibt wie er seine Variablen zu nennen hat. Ps. von CP halte ich auch nicht viel!)


    Es ging ja nicht direkt um Performenz sondern die Berechnung der zurück gelegten Km.


    MfG

  • Es ging ja nicht direkt um Performenz sondern die Berechnung der zurück gelegten Km.


    Mmmh, weiß nicht. Finde es nahezu immer um Performance. Besonders bei Beispielen (man muss ja nicht direkt die Debatte führen, aber wenn man jemanden das Beispiel clientside gibt und der gegenüber nicht so viel über die Performance weiß, ist das auch doof.)

    Sincerely | Mit freundlichen Grüßen,

    ipadmini22

  • Das war die Frage!

    Und meine Antwort soll nur als Bsp. dienen wie man es berechnen Könnte ob das jetzt Server Side oder Client Side geschieht und in wieweit das Performanz beinträchtigt kann man so nicht direkt sagen.


    Es handelt sich schlieslich in dem Bsp. um die berechnung auf dem Clienten der dann ein Ergebnis an den Server sendet in eine Liste. Was dann mit dem Letzen eintrag der Liste mit der DB per EF(Async) abgeglichen/gespeichert wird.


    Und bei mir habe ich dadurch keinerlei einbußen. Ich Fahre Schlieslich nur 1 Auto pro Client.


    Aber gut ich wurde sagen back to Topic und meine Antwort lediglich als Beispiel ansehen.


    MfG

  • Der Ansatz deiner Antwort ist gut aber SyncedData zu nutzen ist allgmein das größte vergehen in GT-MP welches man begehen kann und davon mal ab ist die Last vom Server selbst bei 200+ Fahrzeugen geringer als vom jedem Fahrzeug die daten geschickt zu bekommen via SyncedData welches nicht nur an den Server sondern an alles geht Spieler und Fahrzeuge und Peds halt an alles was gerade auf dem Server befindet..


    Dann triggert man lieber ein Event welches.

    1. Schneller ist
    2. Performanter ist
    3. Nicht vom Client Modifiziert werden

    Hier noch nen Beispiel für die Server seite in einem API.startTimer() auf bsp 5 sekunden



    Gruß

  • Generell ja. Aber auch die Pakete können injected werden ;)

    Was meinst du mit dein Injecten? Meinst du da macht sich einer die mühe den Kilometer Stand Runter oder Höher zu setzten?

    Oder kann man seit neusten per intenger Commands auf dem Server ausführen?


    Es geht hier da drum wie die KM/h InGame Berechnet werden können!?!?

    Und DaNeo ob jetzt SynctData oder Data ist auch erstmal nicht relevant es handelt sich um eine Zahl die einmalig aus der DB geholt wird und auf dem Jeweiligen Client Berechnet wird, was dann wiederum irgentwann mit der DB Abgelichen wird!


    Also eine Liste mit den Karren und den ihren Ständen die Geupdatet wird anhand der ID ich sehe da keine bedenken.

    Wenn ein Server 200 zahlen pro Sekunde bekommt.

    Und auch nein zu dem Syncen mit allen Spielern, es ist Only für den Fahrer ersichtlich und das auch nur wenn er im Auto sitzt als Fahrer. Sonst ist das alles unberührt. Ein stehendes Auto muss ja nichts an den Ständen ändern, nur der Tank wenn die Karre an ist und nicht in der Garage steht!

    Das ist aber wiederum auf deiner Basis wo ein Timer das Regelt!

  • Es geht (also gefälschte Pakete zu senden), Grund genug für mich es zu verhindern ;)


    Naja, synced data wird aber wirklich zu jedem client synchronisiert (egal ob nötig oder nicht), was extrem performance zieht. SetData ist serverside und nur serverside in nem Dict. Das ist nicht das Problem

    Sincerely | Mit freundlichen Grüßen,

    ipadmini22

  • Es geht (also gefälschte Pakete zu senden), Grund genug für mich es zu verhindern ;)


    Naja, synced data wird aber wirklich zu jedem client synchronisiert (egal ob nötig oder nicht), was extrem performance zieht. SetData ist serverside und nur serverside in nem Dict. Das ist nicht das Problem


    Da sollte man zum einen mal sein Cliente besser aussortieren.

    Und zum anderen kann man auch gegen Falsche Pakete Vorgehen.


    Wie ist den deine Server IP? Dein GameMode müsste ja rennen wie Sau...


    Ps:
    Nutze Sogar API.WorldSyncedData :-O und in meinen Chars sind auf Char.SyncedData ist das jetzt eine Sicherheitslücke? Sorry für die Fragen bin mit Security im Internet nicht so bewandert!


    P.P.s:
    Achso zum Thema wie genau würdest du es den machen ipadmini22 ? Hab hier noch keine Antwort auf das eigentliche Thema von dir gesehen!

  • Also, aufm Client ist bei mir nahezu gar nichts. Der kriegt nur den JSON mit den Inhalten für die Menüs (die auch sehr stark optimiert wurde ^^). Ebenso für Browser etc. Der Rest davon wird direkt von Server berechnet und gesendet.


    Ja kann man, aber der Aufwand ist viel größer, als es direkt auf dem Server zu berechnen.


    Meine Resource ist nur closed ^^. Kannst dich gerne whitelisten lassen, sobald der Server public geht.


    Sicherheitslücke ja, aber noch nichtmal das Problem: Performance dabei ist grauenvoll.


    Wie ich das machen würde? Es läuft nen Timer aufm Server, der alle X Sekunden die Berechnung vornimmt (wie bereits gezeigt). Die Distanz wird dann einfach in meinem Wrapper-Objekt vom Fahrzeug gespeichert.

    Unabhängig davon ist es so, dass so sich ein Fahrer auf den Fahrersitz setzt. Dann bekommt er alle 2 Sekunden die neueste Distanz als direkten Method Call auf den Browser. Der gibt also nur Daten durch.

    Dadurch hängt meine Clientseitige Resource quasi nie hinterher.

    Sincerely | Mit freundlichen Grüßen,

    ipadmini22