Gamux Game Entwicklung  
     

Left Nav Mit Facebook verbinden Registrieren Lexikon Lexikon Interessengemeinschaften Suchen Heutige Beiträge Alle Foren als gelesen markieren Right Nav

Left Container Right Container
 
Alt 06.01.2010, 17:31   #1 (permalink)
Benutzer
 

Standard Spiel in C++ / Server in PHP

Hallo,
ich bastel gerade an einem kleinen Computerspiel, welches über eine Highscoreliste verfügen soll. Allerdings möchte ich mir nur ungern einen teuren vServer kaufen um dort ein C++-Highscoresystem zu installieren.
Da ich bereits einen Webspace habe, habe ich mir überlegt das Highscoresystem in PHP umzusetzen und eine Highscoreliste als XML-Datei zu parsen.

Was sagt ihr dazu? Ist das ratsam?
Mifa ist offline   Mit Zitat antworten An Facebook senden
Werbung
Alt 08.01.2010, 16:12   #2 (permalink)
Erfahrener Benutzer
 

Standard

Einen Versuch ist es doch auf jeden Fall wert. Das einzige, was du brauchst ist ne gute Verschlüsselung, die unter PHP & C++ läuft und deine Daten zu verschlüsseln. Ich würde das ganze dann so aussehen lassen:
Username | Punkteanzahl
Das ganze verschlüsselst du dann und schickst es als Post an serverurl.de/highscore-send.php.
Wenn der Highscore angezeigt werden soll, kannst du einfach eine XML laden, die so aufgebaut ist:
Zitat:
<daten>
<position>1</position>
<name>Phybot</name>
<punkte>2316</punkte>
</daten>
<daten>
...
</daten>
...
Viel Spaß beim ausprobieren.

MfG
Phybot

Phybot ist offline   Mit Zitat antworten An Facebook senden
Alt 08.01.2010, 17:05   #3 (permalink)
Benutzer
 

Standard

Danke, ich denke ich werde das schon hinbekommen. Das größte Problem wird wohl leider sein, eine vernünftige Verschlüsselung zu finden, welche sowohl von PHP als auch von C++ unterstützt wird.

Kennst du zufällig eine?
Mifa ist offline   Mit Zitat antworten An Facebook senden
Alt 09.01.2010, 16:18   #4 (permalink)
Neuer Benutzer
 

Standard

Die Frage ist eher ob eine Verschlüsselung überhaupt sinnvoll ist, um zu verhindern das falsche Highscorewerte gesendet werden können. Schließlich kann man z.b. durch Reverse Engineering einfach die Punktzahl verändern, bevor sie gesendet wird. Besser wäre vielleicht eine Userverwaltung auf dem Server, sodass man sich erst registrieren muss bevor man dann seine Highscores hochladen kann. Damit wird schonmal verhindert das man unter dem Namen jemand anderes falsche Werte senden kann. Und auffällige User kannst du dann einfach löschen.

Eine einfache Verschlüsselung, die viellecht nicht besonders sicher ist, ist RC4:
PHP
PHP-Code:
<?php
function rc4($pwd$data$ispwdHex 0)
{
    if (
$ispwdHex)
        
$pwd = @pack('H*'$pwd); // valid input, please
    
$key[] = '';
    
$box[] = '';
    
$cipher '';

    
$pwd_length strlen($pwd);
    
$data_length strlen($data);
    for (
$i 0$i 256$i++)
    {
        
$key[$i] = @ord($pwd[$i $pwd_length]);
        
$box[$i] = $i;
    }
    for (
$j $i 0$i 256$i++)
    {
        
$j = ($j $box[$i] + $key[$i]) % 256;
        
$tmp $box[$i];
        
$box[$i] = $box[$j];
        
$box[$j] = $tmp;
    }
    for (
$a $j $i 0$i $data_length$i++)
    {
        
$a = ($a 1) % 256;
        
$j = ($j $box[$a]) % 256;
        
$tmp $box[$a];
        
$box[$a] = $box[$j];
        
$box[$j] = $tmp;
        
$k $box[(($box[$a] + $box[$j]) % 256)];
        
$cipher .= chr(ord($data[$i]) ^ $k);
    }
    return 
$cipher;
}
?>
C/++
PHP-Code:
#define S_SWAP(a,b) do { char t = S[a]; S[a] = S[b]; S[b] = t; } while(0)

void rc4_skip(const char *keysize_t keylensize_t skip,char *datasize_t data_len)
{
    
int ijk;
    
char S[256], *pos;
    
size_t kpos;
    for (
0256i++)
        
S[i] = i;
    
0;
    
kpos 0;
    for (
0256i++)
    {
        
= (S[i] + key[kpos]) & 0xff;
        
kpos++;
        if (
kpos >= keylen)
            
kpos 0;
        
S_SWAP(ij);
    }
    
0;
    for (
0skipk++)
    {
        
= (1) & 0xff;
        
= (S[i]) & 0xff;
        
S_SWAP(ij);
    }
    
pos data;
    for (
0data_lenk++)
    {
        
= (1) & 0xff;
        
= (S[i]) & 0xff;
        
S_SWAP(ij);
        *
pos++ ^= S[(S[i] + S[j]) & 0xff];
    }
}

void rc4(char *buf, const char *key)
{
    
rc4_skip(keystrlen(key), 0bufstrlen(buf));

Allerdings solltest du die verschlüsselten Daten vor dem Senden als POST noch kodieren(z.b. base64).
Um es nicht so einfach zu machen das Passwort auszulesen, könntest du z.b. immer noch das aktuelle Datum anhängen. So ist das Passwort jeden Tag ein anderes.
mfg
satan ist offline   Mit Zitat antworten An Facebook senden
Alt 11.01.2010, 20:51   #5 (permalink)
Benutzer
 

Standard

Dank, ich werde mir deine Verschlüsselung Mal angucken. Eine Userverwaltung wollte ich lieber nicht einbauen, da es Hobbyspieler, die einfach Mal ihren Highscore einsenden wollen, unnötig arbeit machen.
Trotzdem kann ich ja Mal gucken, ob es noch weitere Möglichkeiten gibt, dass cheaten zu verhindern.
Mifa ist offline   Mit Zitat antworten An Facebook senden
Alt 15.01.2010, 17:32   #6 (permalink)
Pixelschieber
Benutzerbild von Sebastian
 

Standard

Hallo,
da ich gerade an einem ähnlichen Thema(möchte Flash und PHP sauber verbinden) stecke, möchte ich dir einen kleinen Lösungsansatz präsentieren.
Und zwar habe ich auf meiner Suche folgendes Projekt entdeckt: PHPRPC - perfect high performance remote procedure call , welches verschiedene Sprachen über RPC miteinander verknüpft. Zwar wird auf der eigentlichen Webseite kein C++ Download angeboten, aber hier( https://php-rpc.svn.sourceforge.net/...pc/phprpc_3.0/ ) kannst du trotzdem einige Dateien dazu finden. Das ganze sieht sehr einfach aus und ich denke, dass ich es auch benutzen werde.

Grüße
Sebastian

http://www.filmeo.de - Kostenlose Filme & Serien finden
Sebastian ist offline   Mit Zitat antworten An Facebook senden
Alt 30.01.2010, 20:11   #7 (permalink)
Neuer Benutzer
 

Standard

Ansich finde ich das auch keine schlechte Idee. Wenn du es geschafft hast, könntes du ja vllt. ein Tutorial davon veröffentlichen. Ich brauche nämlich in nächster Zeit etwas ähnliches.

Allerdings kann man das so wirklich nur für ein Highscoresystem benutzen. Alles andere würde den Server wohl überlasten(Chat, usw...)

I programer ist just a tool which converts coffee into code
FearX ist offline   Mit Zitat antworten An Facebook senden
Alt 02.02.2010, 12:44   #8 (permalink)
Erfahrener Benutzer
 

Standard

Für die Übertragung würde ich auf jedenfall auch ein SSL Zertifikat nutzen, dadurch kannst du das ganze denke ich mal noch weiter absichern.
Zum übertragen von Userdaten sollten ehh immer SSL Zertifikate verwendet werden
Megger ist offline   Mit Zitat antworten An Facebook senden
Antwort

Stichworte
c++, client, highscore, php, server

Themen-Optionen
Ansicht

Forumregeln
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Client zu Server TCP Beispiel Sn0opy FAQ und Tutorials 5 05.11.2008 16:41
Anleitung für P2P und Server Client Netzwerk CompStop Netzwerkprogrammierung 17 13.08.2008 18:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:56 Uhr.


Style Copyright by Wrestling Forum
Content Relevant URLs by vBSEO 3.3.0