Java geeignet für folgendes Programm? CounterStrike Screenshot + Log

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java geeignet für folgendes Programm? CounterStrike Screenshot + Log

    Moin,

    es geht um ein Tool, das bei Counterstrike-Spielern alle X min ein Screenshot macht, logs der prozesse, und alle *.cfg und *. rc dateien aus bestimmten ordnern an uns sendet.

    Ich habe von nem Kumpel ein Tool in VB6 coden lassen und es funktioniert auch, nur gibts alle paar sek. lags und fps-drops. Obwohl das Programm nur alle 4 min eine Aktion ausführt.

    Was das Tool macht in kurzform: Alle 4 min ein screenshot (nicht per konsole ingame); logs aller Prozesse mit CRC-Summe; findet alle .cfg und .rc files im cstrike und cstrike_german ordner.
    Wenn hl.exe beendet wird, werden alle Screens + logs + cfg und rc files an unseren FTP gesendet.

    Per Webpanel können wir bestimmen wer dieses Toll anhaben muss um bei uns spielen zu dürfen, oder per amxx befehl ingame können wir das auch bestimmen. Datanbank ist eine MySQL. Die DB steht schon und auch die Abfrage ob das Tool läuft per amxx Plugin.

    Also im Grunde steht Die Idee und die Art der Umsetzung ... oder so..Ich müsste nur wissen ob sowas in Java gut zu coden ist, oder ob da C++ besser geeignet ist.


    Thx
    Rene
  • Grundsätzlich solltet ihr rechtlich eines bedenken: Der, bei dem das Programm läuft, muss genau wissen, was für Informationen zu euch gesendet werden und er muss dem ausdrücklich zustimmen (an eurer Stelle würde ich das gern auf nem Blatt Papier mit einer klassischen Unterschrift stehen sehen). Weiterhin seit ihr verpflichtet die Daten vertraulich zu behandeln. FTP ist da schon mal das falsche Protokoll. Ihr solltet euch mal über SFTP schlau machen.

    Wenn ihr Performanceprobleme habt, dann geht ihr den falschen Weg, wenn ihr euch eine neue Sprache sucht. Es mag sein, dass Java vielleicht etwas schneller als VB ist und C++ ist (weil es nicht wie Java eine interpretierende Sprache ist) noch etwas schneller. Das ist aber nicht das Problem. Euer Problem ist der Algorithmus und dieser wäre in allen Sprachen gleich und würde nahezu gleiche Wartezeiten ergeben.
    Ich an eurer Stelle würde bei VB bleiben und das bestehende Programm verbessern anstatt das Selbe noch einmal in Java/C++ zu programmieren.

    Ich gehe davon aus, dass ihr die Berechnungen und den Datenversand parallel macht, während der Spieler sein Spiel fortsetzt (wenn nicht, solltet ihr das tun). Ich denke mal, dass euer Zeug zu viel Prozessorlast frisst und/oder das Netzwerk beim Upload auslastet.

    Prozessor:
    Wenn ihr den Thread während der zeitraubenden Berechnung (meist in Schleifen) für ein paar Millisekunden kurzzeitig pausiert, so braucht er zwar länger aber verbraucht nicht die gesamte Rechenleistung für sich allein.
    Unter Windows (unter Linux auch?) haben die Prozesse auch eine Priorität. Vielleicht könnt ihr euer Zeug immer mit einer geringeren Priorität laufen lassen als das Spiel. Dann könnt ihr euch den 1. Vorschlag sparen.
    Netzwerk:
    Ihr solltet den Netzwerktraffic so niedrig wie möglich halten. Ich hoffe mal ihr übertragt den Screenshot nicht als BMP. Wenn ja, dann solltet ihr ihn vorher z.B. in JPG umwandeln (hohe Kompression). Achtung Prozessorlast!
    Wenn die Logs eine relevante Größe haben (glaube eher nicht bei 4 Minuten), dann kann man sie auch zipen.
    Wie schon bei der Prozessorlast solltet ihr versuchen das Netzwerk lieber etwas länger zu nutzen und dafür nicht voll auszulasten. Müsst ihr euch mal informieren wie so etwas geht.

    Zur Analyse wo das Problem ist, solltet ihr einen Profiler verwenden.
  • Also:

    -Wie gesagt, alle 4 min werden Die Screens in jpg gemacht und auch gleich crypted, damit keiner die screens sehen kann. zudem werden sie in einem bestimmten ordner abgelegt, auf den man nicht so schnell kommt.
    -hochgeladen werden die ganzen Daten erst, wenn hl.exe beendet wurde. Dann erscheint ein Ladebalken (Daten werden verifiziert) und die Daten werden encrypted und an uns gesendet.

    Rechtlich: Es müssen ja nur die Leute das Tool zum spielen verwenden, die wir für suspect halten. Wir werden Sie dann auf status "watched" setzen. Sie koennen nun nicht mehr auf den Server connecten und bekommen eine Nachricht das sie unser Anti-Cheat Tool nutzen müssen um bei uns zu spielen. Bei dem Download wird dann stehen das sie sich damit einverstanden erklären, das dieses Tool auf Daten auf ihrem PC zugreift und auch Screenshots erstellt, welche wir zugesandt bekommen.
    -> Der Spieler hat nun 2 Möglichkeiten. 1. er akzeptiert und darf spielen, oder 2. er akzeptiert nicht und wir gebannt bleiben.

    Profiler: Hab ich bereits drüberlaufen lassen und die Fehler von ca. 120 auf 50 minimiert, aber da ich es nicht gecoded habe und der coder sich nich mehr online blicken lässt, komm ich nicht weiter. Bin leider nicht in der Lage VB zu coden...noch nich t ;)

    Ich vermute es liegt daran, wie das Tool die Zeit berechnet, bis es wieder nen Screen und logs machen muss. Da ja iwie alle paar sekunden laggs sind, obwohl das tool an sich nur alle 4 min was machen soll.

    THX
  • Abgesehen davon, dass ich nichtmal wüsste, wie man mit Java Screenshot einer Direct3D Anwendung macht, die die Grafik direkt in dem Videopuffer schreibt, ist C++ (wie jede andere native Sprache) deutlich performanter als Java und deswegen vorzuziehen. Können mir alle erzählen wieviel besser Java geworden ist, der Kram is immernoch langsam und wenn Framedrops euer Problem sind, wird das mit Java nicht besser. Lags müssen nicht durch Traffic/Upload entstehen, sonbdern können auch durch CPU-Last enstehen. Also Java würde ich dir nicht empfehlen, wirklich nicht. Ich würde nicht gucken ob du Cheater nicht anders, einfacher entlarven kannst.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]