13-04-2020, 04:23 AM
(Modification du message : 13-04-2020, 04:47 AM par L'Omniscient.)
Wahou merci pour tout ce contenu de réponses ^^
Alors ok pour l'attente active, j'oublie, et puis c'est vrai que c'est méga lourd.
Concernant le long-polling, est-ce que ça ça en est :
Si oui, je crois que ça peut provoquer des Race condition... En tous cas mon code ci-dessus semble en provoquer. J'ai l'impression, mais peut-être que je me trompe, que les connexions performantes empêchent les connexions plus faibles d'accéder aux données durant la boucle (dans le code ci-dessus, le joueur B n'arrive à rentrer dans la boucle que quand le joueur A en est sorti, mais ce problème n'a pas lieu pour tous les joueurs, par contre il a toujours lieu avec les mêmes duos de joueurs, et seul un joueur du duo est affecté, toujours le même, et toujours quand il attaque en deuxième. Quand il attaque en premier il n'a pas de soucis et l'autre joueur arrive à rentrer correctement dans la boucle).
Du coup je penche pour les tunnels bidirectionnels. Les tunnels bidirectionnels nécessitent l'installation de librairies ?
(D'ailleurs je lis ça pour les tunnels bidirectionnels : Ouvre un socket vers un hôte/port arbitraire via un serveur connecté SSH. C'est pas du websocket ?)
Xenos je préfère pas me risquer à tes expériences d'apprenti sorcier xD Je ne suis pas assez compétent pour ça :p
Ah les websockets c'est pour ça que j'avais lâché l'idée, le serveur dédié. Je peux avoir une partie de mon jeu hébergé sur un mutualisé et l'autre sur un dédié ?
Si j'ai bien compris, le serveur dédié doit être en NodeJS. Ca me fait un peut chier de repayer un serveur 30 ou 40 euros. Par contre Sephi si on a un serveur commun Jeuweb je veux bien participer au prix si yen a pas de gratuits (divisé entre le nombre d'utilisateurs ?). Ca me dérange pas de payer 10, 15, voire aller 20€ sur l'année si ya vraiment un avantage à avoir un truc aussi cher ^^ (Mais je vous fais toute confiance sur le choix).
En plus moi qui voulait me lancer sur NodeJS c'est parfait ^^ (Bon par contre j'espère que je vais pas trop galérer pour faire mon multi parce que j'ai quand même un temps limité).
Par contre, si le serveur ne peut pas être dispo dimanche max, je vais peut-être pas pouvoir attendre (2 semaines ça va faire cours).
Par contre j'ai un autre soucis si ça passe par un second serveur, il faut que mes données de placement des joueurs soient sur ce serveur. Comment je relie les données de ma base de données avec la base de données de cet autre serveur ? Je pourrai faire une simili jointure entre une table dans mon serveur SQL et une table dans le serveur NodeJS ?
Voilà j'attends encore un peu vos réponses et d'en savoir un peu plus pour choisir la technologie appropriée (et pour spammer plein de forums pour récolter plein d'infos sur cette technologie )
Alors ok pour l'attente active, j'oublie, et puis c'est vrai que c'est méga lourd.
Concernant le long-polling, est-ce que ça ça en est :
Code :
/* Fonction recherche de l'attaque de l'adversaire */
function search_attaque() {
global $bdd;
global $qui;
$bdd->beginTransaction();
if ($qui['IDCombattantActif'] == $_SESSION['ID']) {
$attaque=$bdd->query('SELECT AttaquePassif FROM z_erentis_combats_jcj WHERE IDCombattantActif = "'.$_SESSION['ID'].'" ');
} else if ($qui['IDCombattantPassif'] == $_SESSION['ID']) {
$attaque=$bdd->query('SELECT AttaqueActif FROM z_erentis_combats_jcj WHERE IDCombattantPassif = "'.$_SESSION['ID'].'" ');
}
$bdd->commit();
$attaque = $attaque->fetch();
return $attaque[0];
}
/* Trop tard pour l'attaque de l'adversaire */
function cherche_et_toolate() {
global $bdd;
global $qui;
$time = 0;
$attaque = search_attaque();
/* On cherche l'attaque du joueur adverse jusqu'à ce qu'on la trouve */
while ($attaque == "?" AND $time < 30) {
$attaque = search_attaque();
if ($attaque == "?") {
sleep(2);
}
$time = $time + 2;
}
if ($time >= 30) {
$attaque = "X";
if ($qui['IDCombattantActif'] == $_SESSION['ID']) {
$use = $bdd->prepare('UPDATE z_erentis_combats_jcj SET AttaquePassif = "X", AttaqueActif = "?", TooLatePassif = "Yes", Tour = Tour + 0.5 WHERE IDCombattantActif = ?');
} else if ($qui['IDCombattantPassif'] == $_SESSION['ID']) {
$use = $bdd->prepare('UPDATE z_erentis_combats_jcj SET AttaqueActif = "X", AttaquePassif = "?", TooLateActif = "Yes", Tour = Tour + 0.5 WHERE IDCombattantPassif = ?');
}
$use->execute(array($_SESSION['ID']));
$aten['Nom'] = "X";
}
return $attaque;
Si oui, je crois que ça peut provoquer des Race condition... En tous cas mon code ci-dessus semble en provoquer. J'ai l'impression, mais peut-être que je me trompe, que les connexions performantes empêchent les connexions plus faibles d'accéder aux données durant la boucle (dans le code ci-dessus, le joueur B n'arrive à rentrer dans la boucle que quand le joueur A en est sorti, mais ce problème n'a pas lieu pour tous les joueurs, par contre il a toujours lieu avec les mêmes duos de joueurs, et seul un joueur du duo est affecté, toujours le même, et toujours quand il attaque en deuxième. Quand il attaque en premier il n'a pas de soucis et l'autre joueur arrive à rentrer correctement dans la boucle).
Du coup je penche pour les tunnels bidirectionnels. Les tunnels bidirectionnels nécessitent l'installation de librairies ?
(D'ailleurs je lis ça pour les tunnels bidirectionnels : Ouvre un socket vers un hôte/port arbitraire via un serveur connecté SSH. C'est pas du websocket ?)
Xenos je préfère pas me risquer à tes expériences d'apprenti sorcier xD Je ne suis pas assez compétent pour ça :p
Ah les websockets c'est pour ça que j'avais lâché l'idée, le serveur dédié. Je peux avoir une partie de mon jeu hébergé sur un mutualisé et l'autre sur un dédié ?
Si j'ai bien compris, le serveur dédié doit être en NodeJS. Ca me fait un peut chier de repayer un serveur 30 ou 40 euros. Par contre Sephi si on a un serveur commun Jeuweb je veux bien participer au prix si yen a pas de gratuits (divisé entre le nombre d'utilisateurs ?). Ca me dérange pas de payer 10, 15, voire aller 20€ sur l'année si ya vraiment un avantage à avoir un truc aussi cher ^^ (Mais je vous fais toute confiance sur le choix).
En plus moi qui voulait me lancer sur NodeJS c'est parfait ^^ (Bon par contre j'espère que je vais pas trop galérer pour faire mon multi parce que j'ai quand même un temps limité).
Par contre, si le serveur ne peut pas être dispo dimanche max, je vais peut-être pas pouvoir attendre (2 semaines ça va faire cours).
Par contre j'ai un autre soucis si ça passe par un second serveur, il faut que mes données de placement des joueurs soient sur ce serveur. Comment je relie les données de ma base de données avec la base de données de cet autre serveur ? Je pourrai faire une simili jointure entre une table dans mon serveur SQL et une table dans le serveur NodeJS ?
Voilà j'attends encore un peu vos réponses et d'en savoir un peu plus pour choisir la technologie appropriée (et pour spammer plein de forums pour récolter plein d'infos sur cette technologie )