JeuWeb - Crée ton jeu par navigateur
Projet de jeu php: problème de carte - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Projet de jeu php: problème de carte (/showthread.php?tid=342)

Pages : 1 2


Projet de jeu php: problème de carte - Helifyl - 19-10-2006

Bonjour !

Je suis encore (pour ceux qui m'ont déjà vu) sur mon projet de jeu gestion/stratégie/JDR en php. Une description rapide s'impose:

Il s'agirait donc d'un jeu se déroulant dans un univers fantastique mais réaliste (fantastique parce que ce n'est historique, et réaliste parce qu'il n'y aura pas de dragons, elfes, magie, etc), le tout inspiré de la période historique de la fin de l'antiquité (Perse, conquêtes hellénistes et Rome).

Chaque joueur jouerait donc initialement l'équivalent d'un noble devant gérer ses terres. Les joueurs seront regroupés par nations, plus ou moins ennemies (dépendant initialement du background puis des évolutions du RP).

Mon idée serait de réaliser un système basé sur une carte divisée en case: ainsi chaque joueur, suivant ses conquêtes, ses alliances ou ses complots pourrait contrôler plus ou moins de cases, et les ressources qui y sont associées. Ce système de cases servirait aussi de base aux déplacements des troupes et aux lieux des affrontements.

On arrive au problème, à savoir la représentation de la carte, ce que le joueur verra: comment la réaliser? J'aimerai recueillir les témoignages de gens ayant déjà eu à réaliser une carte plus ou moins semblable: comment s'y sont-ils pris? Quel expérience avaient-ils? Cela a-t-il été gourmand niveau serveur, etc...

J'ai besoin de définir précisément les outils avant de me lancer dans la conception proprement dite (puis le code). A votre avis ce projet est-il réalisable ? Oui? Non? Difficilement?

J'attends vos commentaires ou vos questions. :heuu:


RE: Projet de jeu php: problème de carte - Globe - 20-10-2006

Ceci n'est pas une question relative à l'illustration, je déplace en partie dévellopement.

Je pense que si tu veux définir une notion d'appartenance ta carte devra être geré par BDD bien que celà puisse être une ânerie, avec par exemple selon chaque joueur une étendue d'influence, pour faire du basique par exemple le carré définis entre [X1;Y0] [Y1;X0] [X1;Y-1]

Aucune idée de si ce que j'ai dis est compréhensible [vive la fillière littéraire] mais en gros définir la carte via une BDD et gérer l'influence des seigneurs via des étendues rectangulaires de cartes pouvant changer selon les assauts sur les fronts... Ce n'est qu'un début de rélfexion mais un autre dévellopeur t'aidera surement mieux.


RE: Projet de jeu php: problème de carte - Maegia - 20-10-2006

Un bon exemple de carte prédéfinie se trouve ici : www.terres-perdues.com/carnage

Autrement, tu peux aussi avoir recours à une carte "virtuelle", bref, une table superposée à une image de ton choix (Ta carte). Il te suffit d'attribuer à chaque joueur une position $x et $y... Tu peux ensuite créer chacune des cases de ta carte de la manière de ton choix, tel que, par exemple :

// largeur de la carte (x)
$largeur = 1000;
// hauteur de la carte (y)
$hauteur = 1000;
// coordonné de mon personnage, de mon item, etc...
$coord_x = ...;
$coord_y = ...;

echo '<table style="width: 100%;">';

for ($y=1; $y<=$hauteur; $y++){

    echo '<tr>';

    for ($x=1; $x<=$largeur; $x++){

        echo '<td>';
        
        // Si mon personnage se trouve sur cette case, on l'affiche !
        if ($coord_x == $x && $coord_y == $y){
            echo 'ICI';
        }

        echo '</td>';

    }

    echo '</tr>'

}

echo '</table>';

Comme tu l'auras sans doute deviné, du moment que la carte devient grosse, ce genre de truc devient pratiquement irréalisable (Juste dans cet exemple, on exécute une boucle de 1000 X 1000... Bref, la plupart des jeux on recours à des cartes sous-divisée, ou, par exemple, chaque personne ne peut voir que les 10 X 10 cases l'entourrant.


RE: Projet de jeu php: problème de carte - Loetheri - 20-10-2006

Une très belle carte avait été créée pour un jeu basé sur l'époque antique. Les cases/régions n'étaient pas carrés. Si j'ai bon souvenir, cela s'appellait Rome. Je ne sais malheureusement, comme ils ont fait.

Sinon il y a les fameux tableaux.


RE: Projet de jeu php: problème de carte - Helifyl - 20-10-2006

@ Globe: Je comptais bien gérer la carte à l'aide d'une BDD, vu que je ne vois pas vraiment d'autres solutions.

@Maegia: Ce système est ce qui me semble le plus simple niveau code, mais est-ce que ça ne manque pas de flexibilité? Par exemple si on veut définir une couleur par nation, il faudra créer autant d'images de chaque type (par exemple: ville, fort, mine, etc) qu'il y a de nations non? (encore que ce n'est pas trop compliqué)
Enfin c'est tout de même ce qui me semble le plus réalisable (surtout si je considère mes compétences actuelles). Je vais y réfléchir pour voir ce que je peux faire avec.

@ Loetheri: Le jeu existe encore? Et si oui tu as le lien?


RE: Projet de jeu php: problème de carte - gtsoul - 20-10-2006

avec un fond de carte, tu évites le système de case
mais le concept de cases est nécessaire pour les enregistrements dans ta bdd.

essaye de décomposer tes éléments par motifs élémentaires (=1 unités) et tu les colles sur ton fond de carte grâce aux infos (coordonnées x et y) contenues dans ta bdd.

Pour éviter de consommer inutilement des ressources, pense à afficher des éléments réccurrents, (surtout ne pas utiliser gd ou créer des images à la volée). Les navigateur chargera les images, si bien qu'un fond de carte fixe de 100ko pose peu problème.


RE: Projet de jeu php: problème de carte - Maegia - 20-10-2006

En voulant rester strictement dans le php sans autres codes, tu n'auras probablement pas le choix de procéder ainsi. Cela dit, le tout reste assez simple, même selon ce que tu me dis... Suffit de bien construire les arrays avec lesquels tu vas travailler, ensuite ça s'intègre bien dans les deux boucles for.

for(){
for(){
if (isset($coord[$x][$y])){
}
}
}

Tout se joue sur la manière donc tu vas construire tes arrays. Et oui, je te suggère fortement d'éviter le 1 image/case à moins de limiter énormément ta map. Autrement, tu peux mettre une image en arrière plan et, avec tes deux boucles for, procéder à la construction d'une "map" (<map name="">) par dessus ton image de fond.


RE: Projet de jeu php: problème de carte - Helifyl - 20-10-2006

Pas mal le système de fond de carte. Par contre comment je fais pour afficher d'autres images par dessus? Je me sers de format qui gère la transparence (.png ou .gif) ou il y a une autre solution ?

Le seul problème (et il est de taille) de ce système, c'est qu'il n'accepte qu'un nombre limité de joueurs: plus de joueurs que prévu et la carte est complète, moins ça fait vide.

Et comme dans un jeu de ce type les joueurs vont et viennent, cela peut être ennuyeux non ?


RE: Projet de jeu php: problème de carte - Michu - 20-10-2006

Pour afficher une image par dessus il faut que tu déclare ton image de fond en background.
Tu fais 2 tableaux , 1 avec une seule cellule contenant ton image en background et l'autre contenu dans cette même cellule contenant tes x cases.

Pour le format, tout dépend si tu veu voir ce qu'il y a dérrière mais il ne faut pas oublier que IE gère mal la transparence...


RE: Projet de jeu php: problème de carte - Maegia - 20-10-2006

IE gère bien la transparence, il suffit de savoir s'y prendre. Je suis Québécois et je déteste cette mode européenne de détester tout ce qui est Made by Microsoft au profit des Mozillas, Firefox et autre fouillis du genre... Enfin, autre sujet, autre débat ! Wink

Pour ce qui est du nombre limité de joueur, oui. Ce pourquoi la majorité des jeux possédant une carte du genre sont dans le style "Star Wars", donc, dans l'espace, donc, dans un univers infini. De cette manière, on élimine le problème puisqu'on a qu'à faire varier les proportions de la carte en fonction du nombre de joueurs. Maintenant, avec une map de type "fini", tu te frotteras toujours au problème, à moins que tu la fasses immense, en ne débloquant certaines parties qu'une fois un nombre X de joueurs atteints, etc.