CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[SQL] Executer un script toutes les heures

re_cybergladia
re_cybergladia
Niveau 19
13 janvier 2021 à 21:29:54

Salut :hap:

ça fait des années que je me pose la question, mais vous voyez dans les jeux (que ce soit par navigateur ou autre) quand par exemple on a une barre d'energie qui se régénère avec le temps, comment est-ce que ça marche ?

Par exemple si j'ai une table "joueurs" contenant les colonnes "ID" ; "Pseudo" ; "Energie"
J'imagine que si je voulais augmenter de +1 l'energie de tous mes joueurs à chaque heure, je ferais un script qui update chaque entrée de ma table en allant rajouter +1 au champ "energie"
... mais comment est-ce que je fais pour executer ce simple script à chaque heure ?

J'espère être assez clair, merci d'avance :hap:

PS : Je ne sais pas si c'est pertinent, mais je pose la question parce que je suis sur un projet en ce moment et mon site est hébergé sous OVH, au cas où ça change quelque chose

Nuagedecube
Nuagedecube
Niveau 25
13 janvier 2021 à 22:07:02

Si la recharge s'effectue toutes les heures fixes exemple:

  • 12:00:00
  • 13:00:00
  • 14:00:00

Travaillez sur une function en PHP qui prend en compte l'heure annoncée en effectuant une action précise.

Pseudo supprimé
Pseudo supprimé 14 janvier 2021 à 10:21:15

En utilisant cron

infireman
infireman
Niveau 9
16 janvier 2021 à 09:35:30

il ne faut pas faire comme ça, les trucs qui marchent avec le temps ce qu’il faut faire c’est regarder la date de déconnexion quand le joueur se reconnecte, et en déduire le nombre d’heures écoulées et lui ajouter son énergie. Si par contre c’est un monde persistant multijoueur, alors dans ce cas le serveur est censé tourner H24, donc là c’est directement dans le code du jeu qu’il faut mettre en place des timers etc, pas besoin de cron puisque le jeu tourne en permanence

Scorpionnocrag
Scorpionnocrag
Niveau 9
16 janvier 2021 à 19:25:20

Le 16 janvier 2021 à 09:35:30 infireman a écrit :
il ne faut pas faire comme ça,

Pourquoi?

ScientistLambda
ScientistLambda
Niveau 10
16 janvier 2021 à 19:36:09

Le 16 janvier 2021 à 19:25:20 Scorpionnocrag a écrit :

Le 16 janvier 2021 à 09:35:30 infireman a écrit :
il ne faut pas faire comme ça,

Pourquoi?

Car si tu fais un script qui ajoute +1 d'énergie à tout tes joueurs chaque heure tu vas utiliser constamment beaucoup de ressources

Si tu fais un script qui calcule le nb de points à ajouter lors de la connexion d'un joueur t'utiliseras moins de ressources et ça soulagera ton serveur

Par contre dans le cas des jeux tournants H24 comme les MMO ça m'intéresserait de savoir comme le tout est géré

Apochaos
Apochaos
Niveau 79
17 janvier 2021 à 04:08:57

Le 16 janvier 2021 à 19:36:09 ScientistLambda a écrit :
Par contre dans le cas des jeux tournants H24 comme les MMO ça m'intéresserait de savoir comme le tout est géré

Avec des cronjob.

Y'a pas d'autres solutions magiques. Et celles à base de "tu prends en compte l'heure de dernière connexion du joueur tu la soustrais par la masse du soleil et tu multiplies par la vitesse du friesbee de Titouan" c'est pas précis, ne faites surtout pas ça.

Il existe plusieurs méthodes pour utiliser des cronjob :
- en utilisant le package cron du serveur https://www.digitalocean.com/community/tutorials/how-to-use-cron-to-automate-tasks-ubuntu-1804-fr
- en utilisant un service comme setcronjob https://www.setcronjob.com/
- certains framework (je pense notamment à Laravel) peuvent gérer des cronjob. https://laravel.com/docs/8.x/scheduling Je sais que ça existe mais je sais pas ce que ça vaut, j'ai toujours utilisé les deux méthodes au dessus.

Scorpionnocrag
Scorpionnocrag
Niveau 9
17 janvier 2021 à 17:19:43

Wut? C'est littéralement UNE requête sql... Comment ça peut utiliser constamment "beaucoup de resource" oO?

boucif
boucif
Niveau 24
17 janvier 2021 à 17:32:00

Perso j’utilise pas un cron qui me semble une mauvaise idée pour ce genre de cas.
Si t’es dans le cas d’un mmo et que le joueur est connecté, normalement le joueur communique régulièrement avec le serveur tu peux en profiter pour intégrer un service qui s’occupe de ça

ApoloJvc
ApoloJvc
Niveau 4
26 janvier 2021 à 23:12:01

Je ne suis pas pour un job SQL ou autre dans ce cas
C'est une règle fonctionnelle de ton application "rendre de la vie toutes les heures"
Je préfère éviter d'avoir ce genre de règle dans la base de données, sinon ça peut vite devenir la foire entre ton code + ta base de données

Et puis là on parle d'une heure, mais si ta règle est de "toutes les 3 secondes" et que ton jeu a beaucoup de joueurs, ça commence à faire

Je ne suis pas spécialiste des jeux mais je suppose que ce genre de règle ne s'applique qu'aux joueurs connectés , et est optimisée avec des calculs en local au lieu de faire des requêtes en continue

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment