Raydium 3D Game Engine

Official forum for everything about Raydium, ManiaDrive, MeMak, ...
It is currently Tue Mar 19, 2024 6:08 am

All times are UTC




Post new topic Reply to topic  [ 66 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next
Author Message
 Post subject:
PostPosted: Tue Nov 15, 2005 12:03 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Quelles que soient les protections que l'on place devant, il va toujours y avoir quelque part dans mania_drive.c une belle fonction "post_score(...)" qu'il sera très simple de bricoler. Même calculer une MD5 sur le binaire ne va pas nous aider, puisque ça interdit aux gens de compiler ManiaDrive eux même ! (et il est facile là encore de bricoler la fonction pour lui faire envoyer la MD5 du bon fichier). Enfin bref, j'ai du mal à voir une solution intéressante au problème de la triche :)

Et à quoi servent les webservices dans le nouveau site alors ? :)


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 15, 2005 6:39 pm 
Offline
User avatar

Joined: Sun Mar 23, 2003 12:01 am
Posts: 27
Location: Puteaux
Pour l'instant ils fond la même chose que la gestion des scores que tu as fait , c'est à dire poster et récupérer le classement :-)

Mais on peut y ajouter facilement d'autres méthodes, comme l'enregistrement des users qui sont en train de jouer sur le serveur.

L'avantage des webservices c'est que cela t'évites de bricoler avec des | pour chopper tes données ;-), du coup tu as juste à coder le traitement métier de la fonction.

Sinon, j'ai modifié la fonction d'envoi de score, elle retourne directement la position du joueur, cela permettra de l'afficher à la fin de sa partie pour avoir un classement de son score.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 15, 2005 7:03 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
C'est bien ce que je pensais : comment on appelle les webservices depuis le jeu ? :) Quand est-ce qu'on programme tout ça ? :)


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 16, 2005 6:22 pm 
Offline
User avatar

Joined: Sun Mar 23, 2003 12:01 am
Posts: 27
Location: Puteaux
Via du php :
Coté client :

Code:

// Webservice WSDL URL
$url = "http://dev.geeek.org/maniadrive/ecrire/tools/maniadrive/WSManiaDrive.php?wsdl";

// Create the client instance
$client = new soapclient($url ,true);

// Parameters
$parameters = array(
  'track' => $track
);

// Call the SOAP method
$result = $client->call('ScoreGetTop', $parameters);

$str=explode(":",$result["score"]);
$score=$str[0]*3600 + $str[1]*60 + $str[2] + $str[3]/1000;
   
$player = "{$result["nickname"]}";



Coté serveur :

Code:
$ns="http://maniadrive.raydium.org/schema/";

// Initialize the Soap Server
$server = new soap_server();
$server->wsdl->schemaTargetNamespace=$ns;

// Configure the WSDL
$server->configureWSDL('ScoreAddNew',$ns);

/**
 * Add a new Score inside the database
 *
 * @param nickname - the gamer's nickname
 * @param track - the track's name
 * @param score - the gamer's score
 * @param version - the Maniadrive's version
 *
 * @return level - the gamer's level in the game
 */
 
$server->register('ScoreAddNew',          // method name
    array('nickname' => 'xsd:string',     // input parameters
     'track' => 'xsd:string',
     'score' => 'xsd:string',
     'version' => 'xsd:string'),       
    array('level' => 'xsd:int'),          // output parameters
    $ns."ScoreAddNew",                    // namespace
    '#ScoreAddNew',                       // soapaction
    'rpc',                                // style
    'encoded',                            // use
    'Add a new score inside the database' // documentation
);


function ScoreAddNew($nickname,$track,$score,$version){

    global $con;
    $con->execute("INSERT INTO `dc_maniadrive_score` (`nickname`, `track`, `score`, `version`) VALUES ('".$nickname."', '".$track."', '".$score."', '".$version."');");
   
    $recordset = $con->select("SELECT count(id) FROM `dc_maniadrive_score` WHERE score > '".$score."'");
    $level = $recordset->f(0);
    return $level;
}



ou alors via du C++ ..

En générant dynamiquement un client Webservice grace à GSOAP à partir du WSDL :-)

Bon je reconnais que ça fait un peu usine à gaz .... Mais c'est simple à développer et à faire évoluer.

J'ai codé la gestion des score et ce week-end, je réserve quelques heures
pour coder le reste et le faire fonctionner correctement avec Maniadrive.

Si cela te convient ?

Et sinon avec mon login je n'ai pas accès à /home/cqfd pour récupèrer le score.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 16, 2005 7:54 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Oui, mais point de Webservices avec PHP4, et faut pas prendre la migration de PHP4 vers PHP5 à la légère ! Faut migrer les versions Linux et windows, vérifier les scripts RayPHP, ...

Et il faut que le systéme de score soit fiable à 100% (ce dont on est quasi sûr avec l'actuel, il tourne depuis plusieurs mois).

Il est clair qu'on va dans cette direction (PHP5) à terme, mais je t'avoue que l'ampleur du boulot me fait peur à 3 jours de la release publique, surtout vu la masse de boulot à réaliser ce week end :)

Mon avis à moi, c'est qu'il faut attendre la première release avant de changer les échanges client/serveur. Maintenant, c'est ta partie, c'est toi qui décide :)

PS : les accès dans tes messages privés.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 16, 2005 8:47 pm 
Offline
User avatar

Joined: Sun Mar 23, 2003 12:01 am
Posts: 27
Location: Puteaux
Ok .. mais c'est du PHP 4 ;-), en fait j'ai utilisé NuSoap (j'ai enlevé les includes oups!) avec Php5 c'est implémenté de base.

Sur la version de maniadrive sur Subversion il y a un petit bug sous Windows lorsque l'on reset la partie en appuyant sur la barre espace en même temps que l'on atteind la ligne d'arrivée, cela freeze l'application.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 16, 2005 9:00 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Ok, c'est sûr que NuSOAP ça simplifie pas mal le problème. Par contre, c'est pas intéressant à long terme (une dépendance de plus) et ça doit donc rester du coté de ManiaDrive, et pas de Raydium. A toi de voir si tu penses avoir un truc en béton (j'insiste) pour samedi ;)

Je vais regarder pour le bug sous windows, mais tu entends quoi par "en même temps" ? Ca dure une frame le passage sous la ligne d'arrivée. Tu es certain que c'était pas un "lag" dû au post du score sur le site web ?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 16, 2005 10:39 pm 
Offline
User avatar

Joined: Sun Mar 23, 2003 12:01 am
Posts: 27
Location: Puteaux
Pour les scores je n'ai pas tout à fait fini :

http://dev.geeek.org/maniadrive/index.php?scores=all

Mais j'y travaille :wink:
J'ai fait en sorte que les fichiers pour Maniadrive soient un thème pour Dotclear et soient facilement exportables/modifiables.

Et pour ce qui est de NuSOAP, je suis d'accord avec toi c'est une dépendance de plus (une petite :roll: ), mais qui sera facilement évoluable avec PHP5.

Voici mes modifs :

http://dev.geeek.org/temp/ManiadriveWs.rar


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 16, 2005 10:54 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Parfait, et la présentation des scores sur le site est pas mal du tout. Peut être un poil plus de couleurs dans les tableaux ?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Nov 16, 2005 11:09 pm 
Offline

Joined: Sun Mar 16, 2003 2:01 pm
Posts: 27
Location: Quelque part sur Terre
Il va peut-être falloir songer à la version française. Ca je ne pige pas : je veux bien que le jeu aille dans d'autres pays mais quand même, on est en France.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 17, 2005 8:21 am 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Ouais alors là par contre mon avis est clair : tout en anglais. Lors de la sortie de NewSkyDiver, il y'avait 50 fois plus de joueurs "internationaux" que de français ... pour le peu de texte présent sur le site et dans le jeu, je ne sais pas si c'est un gros problème. Après, peut-être que DotClear permet de gérer facilement plusieurs langues, mais faut comprendre la masse de boulot en plus pour chaque annonce, chaque news, ...


Top
 Profile  
 
 Post subject:
PostPosted: Thu Nov 17, 2005 12:26 pm 
Offline

Joined: Sun Mar 16, 2003 2:01 pm
Posts: 27
Location: Quelque part sur Terre
Juste un mouais si tu veux fera l'affaire. :)


Top
 Profile  
 
 Post subject:
PostPosted: Fri Nov 18, 2005 7:46 am 
Offline
User avatar

Joined: Sun Mar 23, 2003 12:01 am
Posts: 27
Location: Puteaux
J'ai modifié la function d'envoi de message de maniadrive pour gèrer l'affichage de la position du score, comme ça tu sais en live à quelle position tu te situe :

Code:
int post_score(char *track, char *name, char *score)
{
char ltrack[RAYDIUM_MAX_NAME_LEN];
char lname[RAYDIUM_MAX_NAME_LEN];
char lscore[RAYDIUM_MAX_NAME_LEN];
char lversion[RAYDIUM_MAX_NAME_LEN];
int lposition;

// since PHP will write to variables ..
strcpy(ltrack,track);
strcpy(lname,name);
strcpy(lscore,score);
strcpy(lversion,version);

raydium_register_variable(ltrack,RAYDIUM_REGISTER_STR,"track");
raydium_register_variable(lname,RAYDIUM_REGISTER_STR,"name");
raydium_register_variable(lscore,RAYDIUM_REGISTER_STR,"score");
raydium_register_variable(lversion,RAYDIUM_REGISTER_STR,"version");
raydium_register_variable(&lposition,RAYDIUM_REGISTER_INT,"position");

raydium_php_exec("mania_score.php");

raydium_register_variable_unregister_last();
raydium_register_variable_unregister_last();
raydium_register_variable_unregister_last();
raydium_register_variable_unregister_last();
raydium_register_variable_unregister_last();

raydium_log("Position : %i", lposition);

return lposition;
}


Ensuite je réalise un strcpy sur la variable message pour que la position puisse être affichée sur l'écran. :)


Top
 Profile  
 
 Post subject:
PostPosted: Fri Nov 18, 2005 10:54 am 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
C'est parfait ! On tentera de faire la migration du site ce soir si tu es dispo et que le site est prêt ?


Top
 Profile  
 
 Post subject:
PostPosted: Fri Nov 18, 2005 11:56 am 
Offline
User avatar

Joined: Thu Sep 29, 2005 2:59 pm
Posts: 828
Then tomorrow at 9:00 (french hour) the maniadrive party will start, right?
I hope the channels have some english talking people... : )
I'll prepare the food and things to move the less i can. ; )

Can i try to upload the skysphere this night or it's better if i wait until tomorrow or even after the party?

Onemore thing. Xfennec, do you know talking spanish? The next year we will make a linux party with a few important guests, maybe you could come here to talk about raydium.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 66 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group