MAP ÉDITEUR POKÉMON

Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
- - Dernière réponse : POKS58
Messages postés
1
Date d'inscription
mercredi 28 septembre 2011
Statut
Membre
Dernière intervention
28 septembre 2011
- 28 sept. 2011 à 13:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51778-map-editeur-pokemon

Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
j'ignore si l'enregistrement en BMP est l'ideal...

comment le moteur de jeu parvient-il a exploiter les info ?

a savoir ou le personnage se coogne, etc...
Reacen
Messages postés
284
Date d'inscription
mardi 22 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
-
Mon but derrière cet éditeur été de l'envoyé à des amis intéressé pour qu'une fois le moteur de jeu soit finit, j'aurais assez de MAPs prêtes pour jouer. Donc "BMP" c'était une bonne idée je crois ces jours là.

Pour les collisions (personnages qui se cognent), une fois la map enregistrée avec des "X" grace au dernier bouton en haut de l'éditeur, un fichier .txt s'ajoute automatiquement alors au dossier, qui contient les données d'un Array qui montrent où faut marcher ou pas.

J'aurais dû mettre l'Array en Byte() au lieu de Long pour économiser, mais bon...
Flocreate
Messages postés
307
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
27 mai 2012
3 -
que de nostalgie ^_^ on dira ce que l'on veut de ce jeu mais les graphismes sont quand même agréables à regarder pour un jeu de gameBoy.

Je trouve l'éditeur agréable.
En revanche, comme l'a fait remarquer Renfield, le fichier BMP c'est pas forcement le mieux.
Il serrait plus judicieux de n'avoir que le fichier .txt contenant la liste exaustive de ce qu'il y a exactement sur chaque case.
Savoir si ton personnage peut marcher sur telle ou telle case ne te dit pas sur quel type de terrain il est, donc si il peut rencontrer des bestioles et de quels types...

ton fichier texte pourrait également contenir des nro qui désigneraient spécifiquement les fichiers(la prochaine carte) à charger lorsque tu place le personnage sur telle ou telle case.
la position des PNJ avec leur identifiant.

en tous les cas, bonne continuation.
Reacen
Messages postés
284
Date d'inscription
mardi 22 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
-
Oui c'est vrais, à vrais dire je dois changer la description en: ("Voici un petit éditeur de maps [Pas très] complet")..
Je travaille sur la nouvelle version en ce moment, elle doit déjà gérer pas mal de choses, avec un seul fichier ".map" protégé et compressé en gzip.

Pour le moteur de jeu, j'ai penser à ajouter du PATH-FINDING (pour jouer, se déplacer avec la souris). Pensez vous que ça peut être une bonne idée pour un pti jeu du genre?
Flocreate
Messages postés
307
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
27 mai 2012
3 -
pour ma part, je ne serrais pas contre c'est une micro intelligence artificielle qui donne une plus grande aisance dans le déplacement.

Dans la mesure ou toi tu travailles en Case par case et dans une map bien limitée je te conseillerai bien Dijtra (je ne suis pas sur de l'orthographe)
tu peut même ajouter des poids sur le terrain si tu souhaite que ton personnage évite telle ou telle zone.

En ce qui concerne la description des cases, peut être peut tu utiliser quelque chose du genre :
http://www.vbfrance.com/codes/CPROPGROUP-COLLECTION-FAITE-MAISON_51781.aspx
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
ca peut devenir un projet interessant, dis donc, je m'interesse actuellement pas mal au pathfinding, justement....

je suis pas PokeFan, m'enfin.
Reacen
Messages postés
284
Date d'inscription
mardi 22 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
-
J'ai déjà commencer à ajouter le PATH-FINDING au moteur, j'ai aussi remarquer que l'algo "Dijkstra" comme tu as dis "Flocreate" est beaucoup mieux. Car avec l'algorithme "A-Star", sa bouge, euh... d'une façon très moche et zigzagué.

Je ne suis pas un PokéFan nonplus, mais ça fait plaisir et sa rappelle de beau souvenirs de la Game-boy, et du beau vieux temps..

J'ai une envie terrible de me lancer et consacrer mon temps à ce projet et le rendre En-Ligne (MMORPG) vue le nombre de pokénerds un peu partout dans le monde, mais je ne suis pas trop sûr.. car le copyright et tout ça.. Peut être que c'est risqué, non?
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
clair, ca continue a rapporter a Nintendo, ils laisseront pas passer !
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
A* bouge mal ?

je viens de l'implémenter, pour voir, je vois pas trop de souci...

je nettoie, je revois.
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
*je nettoie, et j'envoies
Reacen
Messages postés
284
Date d'inscription
mardi 22 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
-
Quand le personnage bouge avec l'A-Star, il fait trop de zigzags quand il tourne, rapport au Dijkstra. Mais en contrepartie l'A-Star respect bien la solidité d'une case.

Par exemple, voici ma ptite source du moteur (très loin d'être parfait, je compte la refaire):
Lien: http://bit.ly/aD7dYx

Tu va remarquer que l'A-Star ne marche presque jamais sur les fleurs, alors que le "Dijkstra" cherche tout simplement le chemin le plus court, et s'enfiche carrément.
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
ca lag un peu, mais sympa...

pour le fait qu'il repugne a marcher dans l'herbe, ca vient de ton implementation, pas de l'algo...

voir clsTree.Add:

If bAStar Then
lDistX = lAIMap(lX, lY) * (lX - lEndX) 'increase the disadvantage of expensive paths
lDistY = lAIMap(lX, lY) * (lY - lEndY)
.lHeuristic = (lDistX * lDistX + lDistY * lDistY)
End If

s'il doit aussi bien marcher dans l'herbe ou les fleurs, le handicap de ces textures devraient etre egal...
Reacen
Messages postés
284
Date d'inscription
mardi 22 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
-
Oui j'ai oublier de préciser que cette classe de PATH-FINDING permet de donner un niveau de résistance à chaque cellule. De 0 à 10 je crois (0 = Marcheable / 10 = Très solide).
J'ai du donc mettre "9" comme niveau de résistance pour les fleurs, si je me rappelle bien.

Cela permet par exemple de ne pas marcher sur les Fleurs, petit décores, et même les PNJ et de tourner autour d'eux pour les éviter quand même (sauf si on est vraiment obligé de passer dessus).

Ba alors je crois que c'est juste la classe "clsTree" qui bénéficie de cet avantage, j'ai crus que c'était un truc d'algo en général aussi.

Sinon pour le lag? À part la façon de marcher qui est pas bien gérée encore, ça lag pas dutout chez moi, ça utilise du pure GDI, alors qu'on dit que le GDI fait des rendu Software. ça doit pas demander une carte graphique/vidéos accélérateur non?
la "Command1.Caption" donne le reste "GetTickCount", ça réponds combien chez toi s'il te plait? Car chez moi ça fait des "0", "15 ms" pas plus.
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
ca tourne, oui, mais c'est quand la vue bouge, pour suivre le perso, on perd en fluidite...

c'est une bonne base, a ameliorer
Flocreate
Messages postés
307
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
27 mai 2012
3 -
salut,
j'ai été jeter un coup d'oeuil sur le moteur et je suis très impressionné !!!
pour ma part la fluidité est impeccable. (g un portable Asus XPSP3 Carte Graphique ATI mobility Radeon X1600)
Je ne connaissait pas le A-Star et en effet, le Dijkstra semble beaucoup plus naturel à regarder.
En plus, un des avantages du Dijkstra c'est que en faisant tourner l'algo une fois, tu calcul tous les chemins pour aller à une case (c'est à dire depuis n'importe quelle autre case)

Enfin, dans les jeux un peux évolués ou les personnages ne se déplacent pas a la même vitesse en fonction de leurs capacités et du type de case, donner des poids permet de trouver le chemin "le plus rapide"

J'adore la msgBox assassine du genre "vouloir aller sur un mur. mais t vraiment trop con !!!"

Il ne me semble pas que ton moteur le gère, mais pour pouvoir faire un vrai jeu il va te falloir faire un pseudo "temps reel".
par là j'entends que tout le monde se déplace d'une case (ton perso ainsi que les pnj ...) donc pour que tout le monde bouge en même temps les actions devront être décomposées en tâches constituées de bout d'action unitaires comme "avancer d'une case"
Ensuite, à chaque éxecution du timer, pour chaque tâche tu execute la première action unitaire. Bien sur tu suprime cette action unitaire une fois qu'elle est faite...
En plus ca simplifie grandement la gestion des collisions entre "objets qui se déplacent" ce que ne pourra pas faire Dijkstra.

bon je suis pas très clair, mais si tu veux en savoir plus sur le plan temps réel je me ferrait un plaisir de m'exprimer mieux (là c juste pour te soumettre l'idée)

bonne continuation.
note que si tu as besoin de personnes pour développer, je suis a ton entière disposition.
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
A optimiser cependant....
et corriger les fuites memoire, comme ici :

BUFF_& = CreateCompatibleDC(GetDC(0))
BMP_& = CreateCompatibleBitmap(GetDC(0), iW, iH)
SelectObject BUFF_&, BMP_&

GetDC sans ReleaseDc, non memorisation du old BMP...

(pas regarde ailleurs....)
Reacen
Messages postés
284
Date d'inscription
mardi 22 août 2006
Statut
Membre
Dernière intervention
21 décembre 2010
-
@Flocreate: Merci pour ton temps et ton intérêt, c'est très apprécié.
Je suis bien intéressé, mais je n'ai pas très bien compris ta technique du "pseudo temps réel", tu parle des mouvements case par case depuis le clavier?
Passeque si c'est à propos des mouvements de plusieurs personnages en parallèle, déjà le moteur là peut le faire je crois. (Petite démo: Clique sur le bouton le plus bas à gauche, tu verra un petit PNJ à coté qui bouge avec toi).

Au faite ça c'est mon moteur le plus ancien déjà, je suis vraiment aller plus loin à créer mon propre site, et propre MMORPG Pokémon ( http://www.pokemon-back-online.co.cc/ )
Il y a des petits démo dans le site du new moteur, qui ont la même base que celui que j'ai montrer en haut, mais plus travaillé au niveau de pti détailles graphiques :)
Faut dire.. Je ne trouve plus le temps ni le courage que j'avais avant, pour le finir.

@Renfield: Merci pour la remarque, woo c'est grave mon erreur de leaking là, je l'ai aussi corrigé dans ma nouvelle version du moteur, ce code devrait corrigé je crois.

-------
Dim iX1&: iX1& = GetDC(0)
Dim iX2&: iX2& = GetDC(0)

BUFF_& = CreateCompatibleDC(iX1&)
BMP_& = CreateCompatibleBitmap(iX2&, iW, iH)
SelectObject BUFF_&, BMP_&

DeleteDC iX1&
DeleteDC iX2&
-------

(Pour la fonction CHARGER_IMAGE() aussi)
En tout cas merci beaucoup =)
POKS58
Messages postés
1
Date d'inscription
mercredi 28 septembre 2011
Statut
Membre
Dernière intervention
28 septembre 2011
-
Je n'arive pas a executer le programme d'éditeur édé moi !!