IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Conception] Jeu en ligne (augmenter les ressources automatiquement) [Fait]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [Conception] Jeu en ligne (augmenter les ressources automatiquement)
    Bonjour,
    avec des copains nous nous sommes décidés à faire un jeux en ligne en php (du type ogame ou travian pour ceux qui connaissent).

    Mais nos maigres connaissances butent déja pour la mise à jour des ressources à chaque actualisation de la page par l'utilisateur.

    Je m'explique, pendant l'inscription les ressources sont définies à 800 (pour les 4 types de ressources), mais nous cherchons à ce que ces ressources augmentent en fonction du temps (et que l'UPDATE se fasse au chargement de la page par l'utilisateur).

    Je pense qu'il faudrait utiliser la commande "date" avant et apres et augmenter les ressources en fonction du temps passé entre les deux actualisations , mais ca m'a l'air bien compliqué. Connaissez vous plus simple ?



    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Citation Envoyé par oklama
    Bonjour,
    avec des copains nous nous sommes décidés à faire un jeux en ligne en php (du type ogame ou travian pour ceux qui connaissent).

    Mais nos maigres connaissances butent déja pour la mise à jour des ressources à chaque actualisation de la page par l'utilisateur.

    Je m'explique, pendant l'inscription les ressources sont définies à 800 (pour les 4 types de ressources), mais nous cherchons à ce que ces ressources augmentent en fonction du temps (et que l'UPDATE se fasse au chargement de la page par l'utilisateur).

    Je pense qu'il faudrait utiliser la commande "date" avant et apres et augmenter les ressources en fonction du temps passé entre les deux actualisations , mais ca m'a l'air bien compliqué. Connaissez vous plus simple ?



    Merci d'avance

    Soit tu a un programme sur le serveur qui se charge d'actualiser la base de donnée, et fait donc evoluer les resources même quand tu n'est pas connecter (Ex : Ogame)

    Soit tu fait apelle à un script qui recalcule les resources à chaque actualisation/Interraction(si les autres joueurs veulent récupèrer des informations sur un autre joueur) avec le compte en vérifiant une diférence de date (On peut dire que c'est actualiser toute les heures?) et si la diférence dépasse une certaine valeur, alors on effectu une mise à jour (et on stoque le moment présent)
    Dans ce cas un timestamp est ce qu'il me semble le plus adapter.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Citation Envoyé par oklama
    commande "date"
    la fonction date() n'est utilisé que pour transformer un timestamp, donné par time().

    C'est donc beaucoup plus simple pour vous de travailler directement sur la valeur du time() sachant qu'elle s'exprime en seconde.

    Bonne chance pour votre projet.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci à vous pour vos réponses rapides et précises.

    Je pense que dans ma situation, comme le dit SpiritOfDoc, il serait plus adapté de faire un programme qui se charge d'actualiser ma base de donnée, mais je ne sais pas comment m'y prendre , alors je vais me rabattre vers time().

    Je vous tient au courant, merci de votre soutient.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    J'ai rien dit de telle :p.

    Par contre tu peux très bien utiliser les sessions, ça devrait te permettre de bien gérer les temps sans utiliser (de trop) ta BDD.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut


    Excuse mon manque de connaissance, mais que veus tu dire par la ? J'utilise les sessions pour transmettre les variables, tu penses qu'il serait préférable de stocker les valeures des ressources dans les variables sessions ? parce que ca me parait plutôt difficile, il faudrait alors que l'UPDATE se fasse quand l'utilisateur appuie sur "deconnecter", ce qui entrainerai pas mal de contrainte au niveau du jeux.
    J'ai cherché si il y avait une fonction time() spécifique aux sessions, mais je n'ai pas trouvé.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Les sessions ne sont pas utiliser que pour garder un login en mémoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['time'] = time();
    Ceci te met en variable session le timestamp.

    Et je ne vois pas vraiment le rapport entre le lien déconnexion et les sessions (comme dit plus haut, ça n'a pas d'utilisation spécifique :p).

    Bonne soirée.

    [EDIT] : Une belle FAQ et des beaux tutoriaux

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    J'ai compris, merci de ton aide !!
    je vais essayer de faire quelques chose de propre avec les sessions.

    Et je ne vois pas vraiment le rapport entre le lien déconnexion et les sessions (comme dit plus haut, ça n'a pas d'utilisation spécifique :p).
    En fait, je pensais que tu me conseillais de stocker les ressources dans les variables sessions pour économiser ma bdd, et que la mise à jour avec la bdd se ferai lors de la déconnexion de l'utilisateur.

    Bonne soirée à toi aussi.

  9. #9
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    salut,
    je suis pas sur de ce que j'avance :

    si j'ai bien compris, tous les changements des stats de ton perso, ressources... sont stocké dans tes variables de session et quand on clique sur "déconnexion", ca met a jour la bdd...
    mais si c'est comme ca que tu fais, il y aura un soucy si le user quit la fenetre sans cliquer sur "déconnexion" nan ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  10. #10
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Citation Envoyé par DEMMOTTE
    salut,
    je suis pas sur de ce que j'avance :

    si j'ai bien compris, tous les changements des stats de ton perso, ressources... sont stocké dans tes variables de session et quand on clique sur "déconnexion", ca met a jour la bdd...
    mais si c'est comme ca que tu fais, il y aura un soucy si le user quit la fenetre sans cliquer sur "déconnexion" nan ?
    Non SpiritOfDoc à dit d'utiliser els session pour mémoriser un timestamp et ainssi mêtre à jour les resources en temp voulut.

    mais je rajouterait que dans le cas de l'intervention d'un autre utilisateur sur ce compte de cette utilisateur (exemple : vole de resource d'un autre joueur) cette technique pose certains problèmes.

    Pour un programme qui met à jour ta base de donnée, c'était de moi l'idée ^^ Seulement bien qu'aillent de meilleures performances, la réalisation peut s'avèrer plus complexe que celle en PHP si tu n'a pas déjà quelques bases en un langage adapter.

    Moi ce que je te conseille (Oui je sais je me répète) c'est de créer une fonction prenant le nom d'un compte qui se charge d'actualiser les resources du comtpe en question et ajoute un timestamp du moment de la mise à jour. par la suite tu fera apelle à elle :
    A la connection
    Toute les N secondes via un le dernier timestamp de mise à jour que tu a récupèrer dans tes sessions à ta conection et que tu modifira à chaque mise à jour
    Durant une interaction sur le comtpe d'un autre utilisateur.
    Mes articles Développez | Dernier article : Raytracer en haskell
    Network library : SedNL | Zenol's Blog : http://zenol.fr

    N'oubliez pas de consulter la FAQ et les cours et tutoriels.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    On m'avait proposé de réaliser une presque copie de Ogame...je me suis pas lancé parce que c'était vraiment trop de la copie.

    Pour en revenir à l'automatisation: executer CRON sur le serveur pour qui recalcule les ressources toutes les 10secondes...à voir ... heu prévoir un gros serveur ;-)
    Gaétan

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour à tous et bienvenue parmis vous !!!
    Je me présente, j'ai 15 ans, bientôt 16.
    Moi-même, je suis en train de créer un jeu. Je te le dis honnêtement : je ne suis pas un grand programmeur. Voila tt d'abord l'adresse de mon site (qui risque de changer) :
    http://samax69.free.fr/site/login.php
    Bon... Il semble encore y avoir du travail, mais vu de loin, je pense qu'il devrait être terminé avant les vacances d'été...
    Va jeter également un oeil au forum à cette adresse :
    http://zellios-empire.forumactif.com

    Comment ais-je fait pour les ressources : je t'envoie directement mon script si tu veux (allez, je suis sympa!!!)

    Bien sûr, ma solution est loin d'être la meilleure, mais ça semble fonctionner...

    <?php

    session_start();

    $pseudo=$_SESSION['login']; <------ la tu prends le pseudo du joueur qui vient de de logguer
    $pass=$_SESSION['password']; <------son mot de passe


    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>

    <head>
    <title>ZellioS EmpireS</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_reloadPage(init) { //reloads the window if Nav4 resized
    if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
    else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
    }
    MM_reloadPage(true);
    //-->
    </script>
    </head>


    <body>


    <div align="center">
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p><a href="Champs.php"><img src="select_chps.gif" width="92" height="92" border="0"></a>_ <a href="Nveau-Site.php"><img src="select_city.gif" width="92" height="92" border="0"></a>_ <img src="select_chps.gif" width="92" height="92">_ <img src="select_chps.gif" width="92" height="92"> <br/>
    </p>
    </div>

    <div align="center"></div>
    <div align="center"></div>
    <div align="center">
    <?php


    mysql_connect("http://sql.free.fr", "*****", "*****"); // Connexion à MySQL
    mysql_select_db("*****"); // Sélection de la base coursphp
    $reponse111 = mysql_query("SELECT * FROM $pseudo WHERE id=25"); // Requête SQL
    $données111 = mysql_fetch_array($reponse111);
    $nivo_bois = $données111['contenu'];

    $reponse112 = mysql_query("SELECT * FROM $pseudo WHERE id=26"); // Requête SQL
    $données112 = mysql_fetch_array($reponse112);
    $nivo_terre = $données112['contenu'];

    $reponse113 = mysql_query("SELECT * FROM $pseudo WHERE id=27"); // Requête SQL
    $données113 = mysql_fetch_array($reponse113);
    $nivo_fer = $données113['contenu'];

    $reponse114 = mysql_query("SELECT * FROM $pseudo WHERE id=28"); // Requête SQL
    $données114 = mysql_fetch_array($reponse114);
    $nivo_céré = $données114['contenu'];

    $reponse115 = mysql_query("SELECT * FROM $pseudo WHERE id=29"); // Requête SQL
    $données115 = mysql_fetch_array($reponse115);
    $time_bdd = $données115['contenu'];

    $reponse116 = mysql_query("SELECT * FROM $pseudo WHERE id=1"); // Requête SQL
    $données116 = mysql_fetch_array($reponse116);
    $bois = $données116['contenu'];

    $reponse117 = mysql_query("SELECT * FROM $pseudo WHERE id=2"); // Requête SQL
    $données117 = mysql_fetch_array($reponse117);
    $terre = $données117['contenu'];

    $reponse118 = mysql_query("SELECT * FROM $pseudo WHERE id=3"); // Requête SQL
    $données118 = mysql_fetch_array($reponse118);
    $fer = $données118['contenu'];

    $reponse119 = mysql_query("SELECT * FROM $pseudo WHERE id=4"); // Requête SQL
    $données119 = mysql_fetch_array($reponse119);
    $céré = $données119['contenu'];

    mysql_close();

    $bois=$bois/1000000;

    $fer=$fer/1000000;

    $terre=$terre/1000000;

    $céré=$céré/1000000;

    $timestamp_actuel=time();

    $temps_ecoule = $timestamp_actuel - $time_bdd;

    $prod_bois=$nivo_bois*$nivo_bois*$nivo_bois*2;

    $prod_terre=$nivo_terre*$nivo_terre*$nivo_terre*2;

    $prod_fer=$nivo_fer*$nivo_fer*$nivo_fer*2;

    $prod_céré=$nivo_céré*$nivo_céré*$nivo_céré*4;

    $bois_produit= $prod_bois / 3600 * $temps_ecoule;

    $terre_produit=$prod_terre/3600*$temps_ecoule;

    $fer_produit=$prod_fer/3600*$temps_ecoule;

    $céré_produit=$prod_céré/3600*$temps_ecoule;

    $boisnv=($bois+$bois_produit)*1000000;

    $terrenv=($terre+$terre_produit)*1000000;

    $fernv=($fer+$fer_produit)*1000000;

    $cérénv=($céré+$céré_produit)*1000000;



    mysql_connect("http://sql.free.fr", "*****", "*****"); // Connexion à MySQL
    mysql_select_db("*****"); // Sélection de la base coursphp
    mysql_query("UPDATE $pseudo SET contenu=$boisnv WHERE id=1"); // Requête SQL
    mysql_query("UPDATE $pseudo SET contenu=$terrenv WHERE id=2"); // Requête SQL
    mysql_query("UPDATE $pseudo SET contenu=$fernv WHERE id=3"); // Requête SQL
    mysql_query("UPDATE $pseudo SET contenu=$cérénv WHERE id=4"); // Requête SQL
    mysql_query("UPDATE $pseudo SET contenu=$timestamp_actuel WHERE id=29"); // Requête SQL

    mysql_close();

    mysql_connect("http://sql.free.fr", "*****", "*****"); // Connexion à MySQL
    mysql_select_db("*****"); // Sélection de la base coursphp

    $reponse196 = mysql_query("SELECT * FROM $pseudo WHERE id=1"); // Requête SQL
    $données196 = mysql_fetch_array($reponse196);
    $boisnv = $données196['contenu'];

    $reponse197 = mysql_query("SELECT * FROM $pseudo WHERE id=2"); // Requête SQL
    $données197 = mysql_fetch_array($reponse197);
    $terrenv = $données197['contenu'];

    $reponse198 = mysql_query("SELECT * FROM $pseudo WHERE id=3"); // Requête SQL
    $données198 = mysql_fetch_array($reponse198);
    $fernv = $données198['contenu'];

    $reponse199 = mysql_query("SELECT * FROM $pseudo WHERE id=4"); // Requête SQL
    $données199 = mysql_fetch_array($reponse199);
    $cérénv = $données199['contenu'];

    mysql_close();

    $boisnv=$boisnv/1000000;

    $terrenv=$terrenv/1000000;

    $fernv=$fernv/1000000;

    $cérénv=$cérénv/1000000;

    echo "<p align=\"center\"><img src=\"wood.gif\" width=\"29\" height=\"22\"> $boisnv
    <img src=\"2.gif\" width=\"25\" height=\"19\"> $terrenv
    <img src=\"3.gif\" width=\"26\" height=\"21\"> $fernv
    <img src=\"e53.gif\" width=\"34\" height=\"29\"> $cérénv<br/></p>";

    ?>
    <p>&nbsp;</p>
    <div id="Layer1" style="position:absolute; width:200px; height:207px; z-index:1; left: -17px; top: 405px;"><a href="Champs.php"><img src="Login.gif" width="146" height="40" border="0" usemap="#Map">
    <map name="Map">
    <area shape="rect" coords="2,4,143,38" href="login.php" target="_blank">
    </map>
    <img src="Inscription.gif" width="146" height="40" border="0" usemap="#Map2">
    <map name="Map2">
    <area shape="rect" coords="1,2,147,42" href="Form_inscr.php">
    </map>
    <img src="mode-d'emploi.gif" width="146" height="40" border="0" usemap="#Map3">
    <map name="Map3">
    <area shape="rect" coords="1,2,147,41" href="http://www.zellios-empire.forumactif.com" target="_blank">
    </map>
    <img src="Forumb.gif" width="146" height="40" border="0" usemap="#Map4">
    <map name="Map4">
    <area shape="rect" coords="2,2,146,39" href="http://www.zellios-empire.forumactif.com" target="_blank">
    </map>
    </a></div>

    </div>
    </body>
    </html>


    Te pose pas de questions sur tt ce qui est images et autre, mais je t'envoie ce script à titre d'exemple, pour que tu visualises. D'après moi, la bdd c'est ce qu'il y a de mieux : aucun risque d'erreur, de bug ou autre, aucune perte de données, l'utilisateur n'a pas à cliquer sur le lien "déconnection" avant de quitter le jeu...

    Tu te créés une page php "ressources.php", par exemple, dans cette page, tu fais tout ce dont il y a besoin au niveau des ressources, et ensuite, sur chacune des pages de ton jeu (enfin... pas pr l'index et tt, tu gères comme un grand), tu inclus cette page ressources avec la balise include().

    PS: tu remarqueras que j'ai fait des divisions et multiplications qui pourront te paraître inutiles (genre /1000000000) mais j'ai eu un p'ti pb avec ma base de données. En effet, j'arrivais pas à enregistrer des nombres décimaux (avec la catégorie "float", ds ma bdd, il ne garde que le premier chiffre après la virgule) alors j'ai arrangé ça en mettant des nombres conséquents ds ma bdd, puis en les divisant pour que l'utilisateur aie un nombre résonnable de ressources.

    Bon... J'espère que mon aide saura te satisfaire. Sur ce, slt et à bientôt.

    Re-PS : Si ça vs intéresse, toi et tes copains pourriez même vous joindre à moi pour la création du jeu : moi-même, je suis nul en programmation, ce jeu me prend à plein temps et je suis seul pour le créer. Pour me contacter, tu peux m'envoyer un MP de le forum de mon jeu (cf l'adresse plus haut).

  13. #13
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    salut,
    les balise CODE auraient été le bienvenue...
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

Discussions similaires

  1. Augmenter les ressources utilisées par le navigateur
    Par SirJAH dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/01/2015, 14h17
  2. création de lignes et les supprimer automatiquement
    Par dev2010 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/09/2010, 15h17
  3. [Projet en cours] Conception jeu en ligne
    Par Flavius35 dans le forum Projets
    Réponses: 5
    Dernier message: 09/02/2010, 22h07
  4. augmenter les ressources processeur
    Par Phiss dans le forum IIS
    Réponses: 8
    Dernier message: 29/10/2007, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo