Inventar



  • Du kannst am Server als Sprache verwenden was du willst.
    Bei einem Spiel wie WoW wird man aber ziemlich sicher nicht PHP verwenden, zumindest nicht für das Spiel selbst. (Bei Accountverwaltung etc. wäre PHP möglich.)
    Und zwar weil PHP dafür einfach zu langsam ist.

    Es gibt aber vermutlich Spiele wo der Serverteil nicht in C++ geschrieben ist, sondern vielleicht in Java oder C#.



  • tomy86 schrieb:

    Nun ja, ich halte nicht wirklich viel von Cheatern. Und somit ist mein größtes bestreben keine Möglichkeit zu bieten um dies zu ermöglichen!

    Multiplayer != Singleplayer.
    Singleplayer soll ein Spieler doch ruhig machen können was er mag.

    Und sogar bei Multiplayer ist doch nur wichtig, dass für alle Teilnehmer die selben Regeln gelten. D.h. wenn jemand irgendwo privat einen gemoddeten XYZ-Server betreiben mag, mit veränderten Regeln (für alle Spieler), dann würde ich das auch nicht cheaten nennen.



  • Wie kann ich den C++ auf einem Server benutzen? Ich habe davon bis jetzt noch nix gehört. XAMPP hat soweit ich weiß kein Modul um C++ einzubinden?
    Würde es dort auf dem Server große Unterschiede geben, was das Kompilieren an geht?
    Genauso Frage ich mich, wie man sowas realisieren könnte? Also nicht im speziellen, sondern eher obs mans Sinnbildlich 2 Programme schriebt und diese dann von einem Übergeordnetem Programm zusammen gesetzt werden oder wie würde der Server mit dem Client arbeiten?



  • Ein "Server" ist nicht zwingend ein Webserver.
    Irgendein Programm, was auf Input von gewissen Ports wartet und dem man so übers Internet Daten schicken kann, ist ein Server.



  • hustbaer schrieb:

    tomy86 schrieb:

    Nun ja, ich halte nicht wirklich viel von Cheatern. Und somit ist mein größtes bestreben keine Möglichkeit zu bieten um dies zu ermöglichen!

    Multiplayer != Singleplayer.
    Singleplayer soll ein Spieler doch ruhig machen können was er mag.

    Und sogar bei Multiplayer ist doch nur wichtig, dass für alle Teilnehmer die selben Regeln gelten. D.h. wenn jemand irgendwo privat einen gemoddeten XYZ-Server betreiben mag, mit veränderten Regeln (für alle Spieler), dann würde ich das auch nicht cheaten nennen.

    Ja das weiß ich. Aber ohne Multi kommt man heute eh zu nix mehr. Und somit ist es unumgänglich sich damit auseinanderzusetzen.



  • Nathan schrieb:

    Ein "Server" ist nicht zwingend ein Webserver.
    Irgendein Programm, was auf Input von gewissen Ports wartet und dem man so übers Internet Daten schicken kann, ist ein Server.

    Ah ok, habe es jetzt als Webserver verstanden, also den Server allgemein. Danke für die Info.
    Gibt5 es da ein zu empfehlendes Programm mit dem man das local Simulieren kann, wie mit XAMPP?



  • tomy86 schrieb:

    Ja das weiß ich. Aber ohne Multi kommt man heute eh zu nix mehr. Und somit ist es unumgänglich sich damit auseinanderzusetzen.

    Doodle Jump hat soweit ich weiss keinen (online) Multiplayer Mode.

    tomy86 schrieb:

    Gibt5 es da ein zu empfehlendes Programm mit dem man das local Simulieren kann, wie mit XAMPP?

    Du brauchst überhaupt nix spezielles.

    Du schreibst ein Programm, das am Server laufen soll.
    Und du schreibst ein Programm das den Client darstellt.

    Und dann lässt du die beiden einfach auf dem selben PC laufen.
    Das einzige was du dazu anpassen musst, ist die IP-Adresse zu der sich der Client verbindet.
    Die kannst du einfach aus einem externen File einlesen, oder auch im Debug-Mode bei Programmstart vom User abfragen.



  • Ich glaube bei Doodle Jump wäre das auch zu viel des guten 😃

    Aso, klar klingt logisch. Hatte jetzt wieder Webserver und PHP im Kopf, was ja nur auf dem Server läuft. Hat sich sehr fest gesetzt bei mir 😕



  • Bei Webservern geht das ebenfalls. Man kann auch Webserver in C++ schreiben. Die müssen einfach nur über Port 80 HTTP Anfragen verstehen und verarbeiten können.
    Ein Server kann jeder Computer sein, auch der, auf den du gerade Forenbeiträge schreibst.



  • @tomy86
    Wieso sollte ein Webserver oder PHP nur auf nem Server laufen?
    Du kannst Apache, IIS oder welchen Webserver du auch immer verwenden willst auch einfach lokal auf deinem PC installieren.
    Sind schliesslich auch ganz normale Programme.

    (OK, IIS ist ne Windowskomponente, und MS hat die IIS Versionen die auf Desktop-Windowsen laufen etwas kastriert - z.B. dass man nur eine einzige Webseite laufen lassen kann. Aber grundsätzlich geht es und reicht es zum Testen.)



  • Aber zusammenfassend kann man sagen, das nur in Verbindung mit einem Server, der alles interne regelt also Besitz, Schadensberechnungen usw und der Client überwiegend Ausgabe Funktion hat die bestmögliche Sicherheit zu gewährleisten ist?
    Also vergleichsweise wie HTML/JavaScript und PHP vom Prinzip her?



  • hustbaer schrieb:

    @tomy86
    Wieso sollte ein Webserver oder PHP nur auf nem Server laufen?
    Du kannst Apache, IIS oder welchen Webserver du auch immer verwenden willst auch einfach lokal auf deinem PC installieren.
    Sind schliesslich auch ganz normale Programme.

    (OK, IIS ist ne Windowskomponente, und MS hat die IIS Versionen die auf Desktop-Windowsen laufen etwas kastriert - z.B. dass man nur eine einzige Webseite laufen lassen kann. Aber grundsätzlich geht es und reicht es zum Testen.)

    Also soweit ich weiß, kann PHP nur auf einem Server laufen? Bzw auf einer Software die ein Server darstellt? Deswegen benötigt man ja für die Programmierung mit PHP XAMPP o.ä.



  • Also...
    * Du brauchst ein geschlossenes System, also eines das du gegen Modifikationen schützen kannst (Konsole, Dongle der signierten & verschlüsselten Code ausführen kann, Server)
    * Die relevanten Berechnungen müssen auf dem geschlossenes System durchgeführt und auch dort abgespeichert bzw. von dort verteilt werden

    Dann kann das ganze sicher sein.

    Das geschlossene System kann dein Server sein.
    Und wenn die dort laufenden Berechnungen im Prinzip die gesamte Spielmachanik darstellen, und die Ergebnisse auch wieder dort gespeichert bzw. von dort an die Mitspieler verteilt werden...
    Dann kann man das ganze als sicher ansehen.

    WENN das geschlossene System wirklich geschlossen ist. Wenn das "geschlossene System" natürlich voll von Sicherheitslöchern ist, dann ist es natürlich nicht wirklich geschlossen, und damit wird das ganze System wieder manipulierbar.



  • hustbaer schrieb:

    WENN das geschlossene System wirklich geschlossen ist. Wenn das "geschlossene System" natürlich voll von Sicherheitslöchern ist, dann ist es natürlich nicht wirklich geschlossen, und damit wird das ganze System wieder manipulierbar.

    Ja das ist klar. Dinge die vom Client an den Server geschickt werden, wie z.B. Spielerposition usw. müssen Serverseitig auf Richtigkeit geprüft usw werden.

    Jo, dann hab ich ja jetzt einiges, wo ich mich reinlesen darf 😃
    Ich danke herzlichst für die hilfreichen Informationen 🙂



  • tomy86 schrieb:

    Also soweit ich weiß, kann PHP nur auf einem Server laufen?

    PHP gibt's als ganz normales Commandline-Programm. Kann man verwenden wie Batchfiles bzw. Shellskripte.

    php.exe MeinSkript.php Argument1 Argument2 Argument3
    

    ,
    und schon läuft das Ding.

    Etwas genauer: PHP ist einfach nur eine Sprache, genau so wie C, C++, C#, Java, Visual Basic etc.
    Damit kann man ganz normale Programme schreiben. Und genau so wie man C# oder Visual Basic .NET z.B. mit ASP .NET verwenden kann um recht einfach dynamische Webseiten zu entwickeln, kann man halt PHP auch mit Apache o.ä. verwenden um dynamische Webseiten zu entwickeln.

    tomy86 schrieb:

    Bzw auf einer Software die ein Server darstellt?

    Damit kommen wir der Sache schon näher, denn...

    tomy86 schrieb:

    Deswegen benötigt man ja für die Programmierung mit PHP XAMPP o.ä.

    ...was du meinst wenn du PHP schreibst ist nicht PHP, sondern PHP welches über CGI oder als Plugin bei Apache (bzw. einem anderen Webserver) eingebunden wird.
    Wenn du das PHP Programm über einen Browser ansprechen willst, dann brauchst du natürlich irgendwo ein HTTP Server Programm.
    (So ein HTTP Server Programm könnte man natürlich auch direkt in PHP schreiben, aber das tut man einfach nicht, man verwendet dafür fertige Server wie eben z.B. Apache.)



  • Ah super vielen dank. Wieder was gelernt 😃



  • tomy86 schrieb:

    hustbaer schrieb:

    WENN das geschlossene System wirklich geschlossen ist. Wenn das "geschlossene System" natürlich voll von Sicherheitslöchern ist, dann ist es natürlich nicht wirklich geschlossen, und damit wird das ganze System wieder manipulierbar.

    Ja das ist klar. Dinge die vom Client an den Server geschickt werden, wie z.B. Spielerposition usw. müssen Serverseitig auf Richtigkeit geprüft usw werden.

    Nö, den Teil hatte ich ja schon beschrieben, also dass alle relevanten Berechnungen in dem geschlossenen System gemacht bzw. zumindest überprüft werden müssen.

    Was ich hier meine ist ein ganz anderes Problem.
    Es werden ja immer wieder Sicherheitslöcher in diversen Programmen gefunden, darunter auch Serverprogramme.
    Viele dieser Sicherheitslöcher ermöglichen es dem Angreifer ausführbaren Code an den Server zu schicken, und der Server führt den dann einfach aus.

    Das ermöglicht es einem Angreifer dann ... naja, im Prinzip am Server zu machen was auch immer er machen will. Alle Accounts aus der Datenbank auslesen und dem Angreifer zurückschicken. Viel Geld auf sein eigenes Konto zu überweisen. Oder eben auch bestimmte Werte für bestimmte Waffen im Serverprogramm auszutauschen.
    Der Knackpunkt dabei ist: wenn es so ein Sicherheitsloch gibt, dann ist das geschlossene System einfach nicht mehr geschlossen.

    Anhand eines Beispiels...
    Das mit den wichtigen Berechnungen ist wie wenn ich sage: du musst alle deine Wertgegenstände in den Safe legen, sonst sind die nicht sicher.
    Das mit den Sicherheitslöchern ist wie wenn ich sage: wenn der Safe aus Schokolade ist, dann ist er kein Safe sondern ein Scheissdreck 😃
    Und im Shokoladensafe sind deine Wertgegenstände halt einfach nicht sicher, auch wenn du brav alle reingelegt hast.



  • hustbaer schrieb:

    Anhand eines Beispiels...
    Das mit den wichtigen Berechnungen ist wie wenn ich sage: du musst alle deine Wertgegenstände in den Safe legen, sonst sind die nicht sicher.
    Das mit den Sicherheitslöchern ist wie wenn ich sage: wenn der Safe aus Schokolade ist, dann ist er kein Safe sondern ein Scheissdreck 😃
    Und im Shokoladensafe sind deine Wertgegenstände halt einfach nicht sicher, auch wenn du brav alle reingelegt hast.

    Außer der Dieb mag so gern Schokolade, das er hinterher zu satt ist wenn er den Safe aufgegessen hat und nix mehr klauen kann, weil er nix mehr tragen kann 😃

    Aber mal Spaß beiseite. Was wäre den effektiv ein solches Loch? Man kann ja nur über den Port X mit dem Server reden. wenn also alle Dateneingänge usw geprüft werden, dann sollte es doch sicher sein?



  • DER Klassiker ist der "unchecked buffer".

    http://en.wikipedia.org/wiki/Buffer_overflow



  • hustbaer schrieb:

    DER Klassiker ist der "unchecked buffer".

    http://en.wikipedia.org/wiki/Buffer_overflow

    Ja das Problem kenn ich zu gut. Hab schon ein paar mal damit Kämpfen müssen. Aber mit der Zeit lernt man glaub ich, wie man diese Fehler nicht mehr macht.


Anmelden zum Antworten