Ich bin gerade dabei, ein Spiel zu planen, das mit JavaScript und HTML5 erstellt wurde.
Ich habe Probleme zu verstehen, wie Sie verhindern können, dass jemand einfach das JavaScript vom Webserver kopiert und entweder ein eigenes Spiel damit erstellt (nicht meine größte Sorge) oder seine eigenen JavaScript-Funktionen ersetzt und damit die Hoffnung auf verlässliche Kunden aufgibt wild, wenn das Spiel irgendwann Multiplayer unterstützen sollte.
Kann irgendetwas getan werden, um zu verhindern, dass irgendjemand das JavaScript liest?
Wenn nicht, sollte die gesamte Spielverarbeitung irgendwo auf einem Server stattfinden, wobei der Kunde nur für die Erfassung von Benutzereingaben und das Zeichnen von Grafiken verantwortlich ist?
html5
javascript
client-server
Christian
quelle
quelle
Antworten:
Behalten Sie alle Ihre Spieldaten und -logiken auf dem Server. Ein Teil des Spiels, der sich auf der Clientseite befindet, kann ohnehin mit geeigneten Tools kopiert werden (auch wenn es sich um Flash oder Java handelt). Akzeptieren Sie es also einfach und kümmern Sie sich nicht zu sehr darum.
Damit Ihr Javascript aufgrund der schlechten Lesbarkeit weniger kopierbar ist, können Sie es verkleinern . Das ist sowieso eine gute Praxis, da die Spieleseite dadurch schneller heruntergeladen werden kann.
quelle
Hier hilft das Gesetz. In der Praxis scheint dies nicht sehr oft zu passieren.
Aus genau diesem Grund gibt es keine zuverlässigen Kunden in freier Wildbahn. Gib diesen Traum jetzt auf. :)
quelle
Genau wie alle anderen empfohlen haben; Behalten Sie so viel Code wie möglich serverseitig bei.
Eine Methode, mit der ich mich mit dem Kopieren von Code befasst habe, ist etwas seltsam, hat aber bisher gut funktioniert.
Jetzt wird Ihr Geheimcode clientseitig ausgeführt und wird nicht in der Ansichtsquelle oder in Inspektoren / Konsolen angezeigt. Es gibt immer noch Möglichkeiten, an den Code zu gelangen, aber es ist etwas schwieriger.
quelle
Der einzige Weg, um einigermaßen sicher zu sein, dass Ihr Spielcode sicher ist, besteht darin, einen Client / Server-Spieltyp zu erstellen und so viel Code wie möglich auf dem Server zu speichern. Und natürlich machen Sie diesen Server sicher!
Das Hauptproblem ist, dass ich auf meinem Computer laufenden Code untersuchen, dekompilieren und herausfinden kann, wie er funktioniert. Dies gilt für JavaScript, Flash, C ++ und alles andere. In der MMO-Entwicklung (wo der Großteil meiner beruflichen Erfahrung liegt) wurde von Anfang an davon ausgegangen, dass der Kunde kompromittiert ist: Was immer Sie für den Kunden geschrieben haben, liegt bereits in den Händen derjenigen, die es wollen, böswillig oder böswillig nicht.
Das Minimieren von Code bietet einen winzigen Schutz vor Leuten, die zu faul sind, um die Minimierung mit einem der vielen Tools aufzulösen. (Der Produktionscode sollte jedoch minimiert werden, um den Daten-Footprint zu verringern.)
Aber wenn Sie sich in einer Situation befinden, in der Ihr Chef beispielsweise eine Art Codeschutz wünscht, können Sie "Javascript obfuscator" (JavaScript-Verschleierer) googeln. Es gibt eine Menge kostenloser und kostenpflichtiger Software, die JS mindestens so undurchlässig macht zu dekompilieren wie Flash ist.
quelle
Stellen Sie sicher, dass neben all dieser Rede von Code-Verschleierung eine sehr klare Copyright-Erklärung am Anfang jeder Datei steht, und machen Sie deutlich, dass die Lizenz keine Änderung oder kommerzielle Nutzung zulässt. Dies gibt Ihnen Rechtsbehelf, wenn jemand versucht, es zu kopieren. Wenn Sie nicht bereit sind, darüber vor Gericht zu gehen, dann ist diese ganze Frage meist akademisch.
quelle
Ich denke, wenn Sie Ihr Spiel zu einem Multi-Player machen, was bedeutet, dass Ihre Spielelogik auf dem Server bleibt, würden Sie es wahrscheinlich zumindest weniger attraktiv machen, zu stehlen. Man kann dem Kunden nicht wirklich vertrauen. Wie bereits erwähnt, gibt es Tools für sogar kompilierte Sprachen wie Java und Flash, mit denen der Code-Text aus dem Byte-Code rekonstruiert werden kann.
quelle
Sie benötigen einen Javascript Minifier. Es stehen viele Optionen zur Verfügung, zögern Sie nicht, eine zu finden, die Ihnen gefällt. Um Ihnen hier einige Nachforschungen zu ersparen, können Sie Yahoo Minifier ausprobieren . Ich habe das nicht selbst gemacht, aber ich gehe davon aus, dass es das tut, was Sie brauchen. Das Ziel besteht darin, 1) die Dateigröße zu verringern und 2) den Code zu verschleiern. Dies wird erreicht, indem alle Leerzeichen, Kommentare und Variablennamen durch kürzere, unsinnige ersetzt werden.
Die meisten Webanwendungen verfügen heutzutage über eine erhebliche Menge an Javascript und verwenden Tools wie diese, um ihre IP-Adresse zu schützen. Wie andere gesagt haben, sollten Sie immer fragen: "Kann ich das auf dem Server tun?" für wichtige oder sensible Operationen, aber ich glaube, dies sollte einen gewissen Schutz bieten.
quelle
Verwenden Sie den Google Closure Compiler http://code.google.com/closure/compiler/ Es ist nicht nur ein Js-Minimierer;)
Was sind die Vorteile von Closure Compiler?
Effizienz. Der Closure Compiler reduziert die Größe Ihrer JavaScript-Dateien und macht sie effizienter, sodass Ihre Anwendung schneller geladen werden kann und weniger Bandbreite benötigt wird.
Code-Überprüfung. Der Closure Compiler bietet Warnungen für illegales JavaScript und Warnungen für potenziell gefährliche Vorgänge, damit Sie JavaScript erstellen können, das weniger fehlerbehaftet und einfacher zu warten ist.1.
quelle
Oder Sie könnten etwas wie Game Maker HTML5 verwenden, um Ihr Spiel zu erstellen, das den Code für Sie verschleiert. Das bedeutet, dass der Code für Menschen unlesbar wird. Und es wird fast unmöglich sein, sie zu bearbeiten.
quelle
Alles, was Eigentum ist, sollte serverseitig aufbewahrt werden. Clientseitig stellen Sie nur so viel zur Verfügung, dass die Verwendung des Spiels erleichtert wird.
quelle
Wenn Sie alles auf den Server stellen, kann dies zu Leistungsproblemen führen, und Sie können möglicherweise nicht das gesamte Potenzial des Web nutzen, wie wir es heute kennen.
Sie können Ihren Code in c ++ schreiben und in Binärdateien kompilieren.
Native Client (NaCl).
Siehe https://stackoverflow.com/questions/9018537/how-to-run-c-programs-on-the-web-inside-a-browser
quelle