120

http://deeph.servhome.org/ftp/PureBasic/map%20editor.zip
1. Je ne sais pas s'il serait possible d'afficher des informations sur les posibles valeurs dans interaction. Par exemple, 0=texte (suivi du label du texte), 1=change map (suivi des coordonnées x,y et le id du map à charger).

C'est possible mais ça va prendre de la place... Au départ je me suis dit que tu allais forcément avoir plus de deux interactions donc j'ai fait au plus simple (éditeur de texte, que j'ai d'ailleurs agrandit parce que c'était un peu petit...).

À la limite je peux faire en sorte qu'on puisse choisir au moins le type d'interaction (1, 2...), et qu'ensuite on rentre soit même les infos dans l'éditeur de texte (parce que faire un champ pour chaque truc différent : textes, coordonnées, id... ça va prendre vraiment beaucoup de place).
2. Peut-on changer l'information du map: nom de map, tuile par défaut, etc. ? Je ne sais pas si j'avais choisi la mauvaise tuile ($22 en lieu de $21) pour "bookshop.map", mais maintenant il faut ouvrir le fichier et changer cette ligne chaque fois que je l'exportes.


C'est fait (bouton "parameters") smile
3. Les informations que j'ai écrites sur les interactions/collisions n'apparaîtent pas dans les champs d'Interaction/Collision, il faut les récrire chaque fois que je veux changer quelque chose. Et peut-être on pourrait commencer à ajouter les options pour les interactions/collisions (pour le moment, seulement texte/changer de carte) ?

Oups oui c'était pas normal ça, mais c'est réglé (petite erreur de noms de gadgets).

Pour les options comme j'ai dit au dessus c'est relativement simple à faire mais assez long...
Je crois que même 16x16 est un peu petit. Comment puis-je dessiner un homme assis sur une moto, par exemple, ou sur un cheval ?

C'est vrai que tu vas avoir du mal à dessiner ça... Y'a quelques plus gros sprites destiné à RPG Maker par exemple : http://charas-project.net/resources.php?fsearch=moto ou http://charas-project.net/resources.php?fsearch=horse , il y a peut être moyen de les réduire un peu.
Et oui, tu as raison, c'est pour ça que j'ai commencé à bosser sur la rutine de batailles (il y a combien d'RPGs sur ticalc qui ne sont qu'une démo d'un tilemapper). Il reste encore beaucoup à faire, c'est sûrement un gros travail, mais on y arrive peu à peu. Même si je n'arrive pas à finir le jeu (très probable), peut-être quelqu'un d'autre pourra se servir du "moteur" pour faire quelque chose "cool".

Faut pas être pessimiste, ton projet est très bien parti (le plus gros du moteur est déjà fait, non ?), j'espère vraiment que tu vas le terminer grin
A propos, qu'est-ce que tu penses sur l'interface des batailles ? Je ne sais pas si j'aime la fenêtre avec le HP, elle occupe assez d'espace et d'ailleurs je ne sais pas si je devrais afficher le HP des ennemis ou non.

À mon avis les seules stats à afficher sont celles de nos personnages, pas besoin d'avoir celles des ennemis (ça enlève même l'intérêt de devoir bien répartir ses attaques tongue).
Ah et je ne peux pas "magnifier" (x2) la carte dans l'éditeur, quand je fais pour la magnifier, la plupart de la carte disparaît.

Heu... Ça c'est étrange parce que ça marche parfaitement sous windows :

5AN1

Ça te fait pareil avec wine ?

121

gon33: Merci ! Oui, je le connais ! Je me souviens toujours quand il était en train d'écrire son jeu, nous parlions chez MaxCoderz il y a pas mal de temps, peut-être 6 ou 7 ans...

deeph: Merci ! Je l'ai testé avec Wine est tout marche bien, ça bogue seulement avec la version native de Linux :/
1. Je ne sais pas s'il serait possible d'afficher des informations sur les posibles valeurs dans interaction. Par exemple, 0=texte (suivi du label du texte), 1=change map (suivi des coordonnées x,y et le id du map à charger).
C'est possible mais ça va prendre de la place... Au départ je me suis dit que tu allais forcément avoir plus de deux interactions donc j'ai fait au plus simple (éditeur de texte, que j'ai d'ailleurs agrandit parce que c'était un peu petit...).

Je veux dire, une "bulle de texte" comme pour les bits d'action: si on place le souris sur la boîte de la N, un texte s'apparaît qui dit "Nonpassable". Je ne sais pas si on peut ajouter une liste des actions possibles avec leur paramètres qui s'affichera quand on laisse le curseur dessus.

Quant aux options, ce n'est vraiment pas la peine, la boîte de texte me convient tout à fait et je crains qu'il serait un peu complèxe de faire et d'ailleur pas mal de travail.

Aujourd'hui j'ai dessiné quelques sprites de charactères et maintenant je ne sais pas quoi faire. Les choses importantes qu'il me reste encore à faire:
-items
-équipement (armeur/des armes)
-l'argent (j'ai commencé à coder quelques routines pour gérer des numéros 24-bit)
-NPCs
-expérience/niveaux
-de la magie
et beaucoup d'autres choses, mais ça suffit pour le moment !

122

deeph: Merci ! Je l'ai testé avec Wine est tout marche bien, ça bogue seulement avec la version native de Linux :/

C'est étrange, les fonctions que j'utilise sont censées faire exactement la même chose sur les deux OS... Si tu compiles la source avec le débogueur et que tu change le zoom, il s'affole ou pas ?
Je veux dire, une "bulle de texte" comme pour les bits d'action: si on place le souris sur la boîte de la N, un texte s'apparaît qui dit "Nonpassable". Je ne sais pas si on peut ajouter une liste des actions possibles avec leur paramètres qui s'affichera quand on laisse le curseur dessus.

Heu désolé je ne vois pas trop ce que tu veux faire : associer un "Tooltip" (texte flottant) aux actions mais pour l'afficher où ? Parce qu'on a déjà l'info partout où sont affichées les "brushes", non ?

123

C'est étrange, les fonctions que j'utilise sont censées faire exactement la même chose sur les deux OS... Si tu compiles la source avec le débogueur et que tu change le zoom, il s'affole ou pas ?

Pas d'erreurs :/
Heu désolé je ne vois pas trop ce que tu veux faire : associer un "Tooltip" (texte flottant) aux actions mais pour l'afficher où ? Parce qu'on a déjà l'info partout où sont affichées les "brushes", non ?

Ah désolé, je ne sais pas comment le dire, je crois que je peux m'expliquer mieux avec une image:
lEx0

124

Ah ok je pensais à un truc plus compliqué cheeky

Je fais ça tout de suite smile

edit : les gadgets tooltip ne font pas les retours à la ligne mad

Et je ne sais pas si linux va accepter des fonctions de l'API windows...

edit2 : Apparemment la version 4.70 de PureBasic (qui est toujours en bêta) règle ce problème ainsi sans doute que le problème de redimensionnement (certainement dû au CanvasGadget)...

125

Dans les brush, il faut cliquer pour mettre la valeur de "tiletop". Si j'écris le numéro il ne le sauvegarde pas. Aussi, Goto ne semble pas fonctionner.. Ah je sais, c'est parce qu'il faut cliquer pour que le programme l'accepte. Ce n'est vraiment pas un problème, une petite inconvenience peut-être mais de toutes façons je ne sais pas si on peut le corriger ou c'est une bogue de PB (peut-être avec la version linux?)

Serait-il possible d'avoir un outil pour voir quel brush est dans le map? Maintenant, par example, je vois "Brush#34 [image] itemshop(x,y)", mais c'est le brush que j'ai seleccioné. J'ai quelques brush qui partage un sprite mais ont des actions différentes, et parfois je ne sais plus lequel est lequel.

Je voudrais aussi pouvoir exporter les fichiers dans un clique, simplement l'exporter sans me demander où le sauvegarder ni si je veux "overwrite" le fichier. Est-il possible ? Peut-être l'on peut utiliser le nom du map comme nom de fichier?

J'ai pas mal de choses dans le database maintenant, pour ajouter un brush ça tarde environ 6-10 seconds ! Je suis très content d'avoir cet outil, il m'a déjà aidé énormément grin Merci beaucoup, deeph !

Le jeu finalement commence à ressembler à un vrai jeu smile
2a15 (nouveautés : les magasins, batailles aléatoires, et une routine pour afficher des numéros 24 bit (mais on voit pas ça dans le screenshot))

126

T'as pas chômé dis donc grin
chickendude (./125) :
Dans les brush, il faut cliquer pour mettre la valeur de "tiletop". Si j'écris le numéro il ne le sauvegarde pas.

Cliquer sur les flèches ? Parce que moi que ce soit l'un ou l'autre ça marche :/
chickendude (./125) :
Aussi, Goto ne semble pas fonctionner.. Ah je sais, c'est parce qu'il faut cliquer pour que le programme l'accepte.

Comment ça ? Il faut juste sélectionner le brush normalement.
chickendude (./125) :
Serait-il possible d'avoir un outil pour voir quel brush est dans le map? Maintenant, par example, je vois "Brush#34 [image] itemshop(x,y)", mais c'est le brush que j'ai seleccioné. J'ai quelques brush qui partage un sprite mais ont des actions différentes, et parfois je ne sais plus lequel est lequel.

Si tu fais cliques droit avec n'importe quel outil ça te sélectionne ce brush là. Je sais pas si ça te suffit, je peux sinon faire un outil qui affiche les ID des brushes sur la carte à la place des tiles.
chickendude (./125) :
Je voudrais aussi pouvoir exporter les fichiers dans un clique, simplement l'exporter sans me demander où le sauvegarder ni si je veux "overwrite" le fichier. Est-il possible ? Peut-être l'on peut utiliser le nom du map comme nom de fichier?

C'est fait.
chickendude (./125) :
J'ai pas mal de choses dans le database maintenant, pour ajouter un brush ça tarde environ 6-10 seconds !

Erf je vais essayer d'optimiser ça... Le problème c'est qu'sqlite est quand même très lent, je me demande si utiliser un fichier "preference" ne serais pas plus rapide (mais moins simple cheeky).

http://deeph.servhome.org/ftp/PureBasic/map%20editor.zip

127

chickendude (./125) :
Dans les brush, il faut cliquer pour mettre la valeur de "tiletop". Si j'écris le numéro il ne le sauvegarde pas.
Cliquer sur les flèches ? Parce que moi que ce soit l'un ou l'autre ça marche :/
Oui, si j'écris un numéro ça ne change rien, il faut changer la valeur en cliquant sur les flèches (la même chose avec GOTO, en cliquant les flèches je peux choisir son nouveau endroit, mais seulement avec les flèches. Je ne peux pas écrire un numéro).
Si tu fais cliques droit avec n'importe quel outil ça te sélectionne ce brush là. Je sais pas si ça te suffit, je peux sinon faire un outil qui affiche les ID des brushes sur la carte à la place des tiles.
C'est parfait, merci smile

chickendude (./125) :
J'ai pas mal de choses dans le database maintenant, pour ajouter un brush ça tarde environ 6-10 seconds !

Erf je vais essayer d'optimiser ça... Le problème c'est qu'sqlite est quand même très lent, je me demande si utiliser un fichier "preference" ne serais pas plus rapide (mais moins simple cheeky).
C'est pas trop ennuyeux, le reste du programme va vite (exporter/dessiner les niveaux), seulement en ajoutant des sprites/masks/brushes. Mais les sprites/masks ne sont pas un problème, parce que je peux ajouter plusieurs à la fois avant de faire clique sur OK.

Merci !

Ajourd'hui j'ai bossé sur le système d'inventaire et la base est presque terminée. Il reste d'autres choses, comme pouvoir les réarranger, par exemple, mais ça c'est assez facile. Maintenant il faut ajouter le code pour acheter quelque chose smile
Q7Dv

128

C'est très beau smile

Pour les évènements tu sais comment tu vas t'y prendre finalement ?
chickendude (./127) :
Oui, si j'écris un numéro ça ne change rien, il faut changer la valeur en cliquant sur les flèches (la même chose avec GOTO, en cliquant les flèches je peux choisir son nouveau endroit, mais seulement avec les flèches. Je ne peux pas écrire un numéro).

Sous wine ou avec l'appli linux ? Parce qu'avec windows ça marche...

129

Pour les évènements tu sais comment tu vas t'y prendre finalement ?

Pas encore, d'abords il faut terminer quelques choses (principalement pouvoir ajouter/enlever des choses de l'inventaire), mais après je veux commencer à y travailler. Peut-être j'utiliserai un champ de 100-200 octets pour les sauvegarder, la plupart occupant 1 bit, le reste 2 bits. Ceux de 2 bits auront 4 états, les autres 2. Les informations extras suivront les données normales. Donc:
sign_hanging:
	.db %10000110	;action avec 2nd, hauteur variable, nonpassable
	.db 32		;sprite id
	.db 14		;numéro de pixels "passables" du brush
	.db 12		;sprite mask
	.db 0			;action id, 0 = afficher du texte, 1 = changer de map
	.dw text1		;les données de l'action, ici le label du texte

devient:
sign_hanging:
	.db %10011110	;changer sprite (bit 3)/action (bit 4) selon l'état de l'évènement
	.db 0			;event id

;normale
	.db 32		;sprite id
;évènement
	.db 75		;sprite id si l'évènement est armé

	.db 14		;pixeles passables
	.db 12		;sprite mask

;normale
	.db 0			;action id normale
	.dw text1		;paramètres
;évènement
	.db 1			;action id après l'évènement
	.db 4,4,1		;nouveaux paramètres
Je ne sais pas comment ça va marcher...
Sous wine ou avec l'appli linux ? Parce qu'avec windows ça marche...
Avec la version linux. Mais pour le moment c'est bon, c'est peut-être un problème avec PB même.

130

Oui, utiliser les bits restant du premier octet des brushes peut être une solution assez pratique (ça permet d'avoir des flags/switches).

Ça me rappel un peu le principe qu'utilise RPG Maker, la différence c'est qu'il gère les évènements indépendamment du mapper. Enfaite chaque évènement possède une ou plusieurs pages contenant un script différent, qui s'active selon l'état de boutons (switch) ou de variables.

Enfin leur déclenchement est un peu plus "large" : ils peuvent être automatiques (dès l'affichage de la map) ou "en parallèle" (npc se déplaçant...). Mais pour un RPG sur une plateforme aussi restreinte c'est commun de n'avoir que des évènements fixes qui se déclenchent au contact du héro ou lorsqu'il interagit avec.

Par contre ça va te faire que 3 cas différents pour chaque évènement, non ? Enfin c'est suffisant, hein smile

Et pour gérer la bonne exécution du "script" (état normal/après un évènement), avoir sa taille (son étendue) n'est pas obligatoire pour ne pas "dépasser" sur les suivants ? Je veux dire, dans ton exemple, la taille de l'état "normal" est tout aussi variable que celui de l'état après évènement, non ?

131

Je crois que non, parce que je peux le parser. Les actions 0 tous occupent la même taille (2 octets), les actions 1 aussi (3 octets), etc. En tout cas, on verra bientôt s'il va fonctionner ou non.

Quant aux npcs, je voudrais vraiment qu'il peuvent se déplacer, mais mon mapper est déjà trés lourd. Je crois que j'aurais besoin de le récrire tôt ou tard :/ Maintenant que je suis plus exactement ce que je veux faire...

Et il faut vraiment que je jète un coup d'oueil à RPG Maker pour y tirer des idées.

EDIT: Oui, la plupart aura 1 évènement, les autres, 3. J'ai quelques idées, mais jusqu'à ce que je commencerai à les programmer, je sais pas si elles marcheront ou pas.

132

Comme PureBasic est passé en v5.0 et qu'il fallait absolument que je teste ses nouveautés, j'en ai profité pour mettre à jour l'éditeur de carte : map editor.zip

Donc pour cette version 0.4 j'ai corrigé pas mal de bug (dont un très gênant qui rendait l'édition de la carte impossible avec les nouvelles version de PB), et surtout les brushes/tiles/masks sont maintenant sauvegardés dans un fichier .ini, du coup leur manipulation est beaucoup plus rapide (instantanée même !) smile

Je me doute que le moteur de juego a dû pas mal évoluer, donc s'il y a des choses à modifier, je t'écoute !

Ah, et sinon, si on décide de faire une version ARM, je pourrais sans doute facilement adapter l'éditeur smile

133

Oui, dernierement j'ai passé plus de temps avec mon tilemapper GBA et avec d'autres projets z80, mais ce projet avance peu à peu grin Merci beaucoup, je vais le tester maintenant !

134

Il me paraît que la dernière version du map editor ne sauve pas toutes les cases à cocher. La case d'interaction ne se sauve pas, et je ne peux pas écrire dans la boîte de texte dessous :/

Edit : j'ai commencé à créer la carte du monde smile

135

Ça marche parfaitement sous windows... confus

Tu as compilé une version linux (avec PB 5.0 ?) ou tu utilises wine ?

Autrement ça fait plaisir de voir que tu reprends ce projet, de mon côté zshell me prend un peu trop la tête, je pense que je vais retourner sur Pokémon smile

136

J'ai pas (trouvé wink) la v5.0 de PB. Pour le moment j'utilise la version windows avec Wine. je vais télécharger le .zip et l'essayer de nouveau

137

Alors tout marche, pour finir ?

Tu utilises le même tilemapper pour afficher la carte du monde (16*16) ?

138

Oui, maintenant tout marche. Il fallait seulement compiler une version linux. Et oui, c'est le même tilemapper pour la carte du monde smile

139

Ok, j'ai hâte de voir le résultat smile

140

Il semble que les données de la boîte de collisions ne se sauvent pas :/ (edit : et les interactions non plus)

J'essaie de récrire la routine de tilemap mais je ne pense pas à une méthode plus éfficace sad

141

Tu es sûr ? Ça marche ici.

Je l'ai réuploadé mais normalement c'est sensiblement la même version que précédemment :

http://www.mirari.fr/jwYZ

Autrement il y a eut une nouvelle version de PB : la 5.11, mais même avec une version antérieure ça devrait marcher hum
chickendude (./140) :
J'essaie de récrire la routine de tilemap mais je ne pense pas à une méthode plus éfficace

Pourquoi la réécrire ? L'actuelle est parfaite je trouve smile

142

Je vais essayer de le compiler de nouveau alors. Et parce que elle est très lourde et parfois ralentit pas mal. D'ailleurs il y a des trucs que je voudrais ajouter (comme des ponts) qui ne sont pas possible au moment.

EDIT : J'ai essayé la version avec Wine et ça ne marche toujours pas. Mais je crois que je n'ai pas expliqué bien le problème, le problème arrive quand je veux exporter le map, les interactions/collisions n'apparaissent pas dans objects.asm.

143

Oups effectivement c'était dû au changement sqlite/fichier preference... sorry

Je l'ai réglé : http://www.mirari.fr/jwYZ

144

Parfait, merci ! Je crois que je vais voler pas mal du code de menu de Pokémon Monochrome et l'utiliser pour juego, le code dans juego est assez désorganisé et j'ai du mal a m'y retrouver :P

EDIT : As-tu changé quelque chose ? Maintenant tiles.inc pointe vers "masks/" en lieu de "tiles/". Ou peut-être je l'avais changé moi-même dans la version antérieure.

EDIT2 : Je crois que l'on peut plus enlever de brushes.

EDIT3 : Voici la source avec les modifications que j'ai faites :
http://www.mirari.fr/ijVK
(je n'ai changé que export.pb)

145

Erf désolé :/
chickendude (./144) :
Je crois que l'on peut plus enlever de brushes.

En cliquant sur le bouton "-" ? Parce que ça marche ici confus

146

Bon pour le moment c'est pas important, il semblait marcher en cliquant les derniers brushes, mais quand je voulais enlever les premiers ça effaçait leurs données mais ne les enlevait pas. J'ai simplement récréé la liste de brushes de nouveau.

J'ai presque fini une petite modification de mon mapper qui devrait être plus rapide et plus flexible grin Les sprites masqués seront "premasqué" dans RAM quand on charge la carte.

EDIT : Pourrais-tu ajouter bit 3 comme "Bridge-mask" ? Je viens d'ajouter les masques pour les ponts et la vitesse et même plus rapide ! En bossant sur Pokémon Monochrome j'avais beaucoup d'envie de bosser un peu plus sur juego smile
qFKC

Ah et j'ai divisé les tiles en deux parties : des tiles "inside" (les maisons, magasins, etc.) et des tiles "outside" (les villes, l'overworld, etc.).

Maintenant j'ai le tilemapper que j'ai toujours voulu grin

147

http://www.mirari.fr/gwJL

Ok j'ai réglé le bug de la suppression et mis le bit 3 comme indicateur de pont, mais faut-il que j'ajoute autre chose ? D'autres données pour les masks ?
chickendude (./146) :
Ah et j'ai divisé les tiles en deux parties : des tiles "inside" (les maisons, magasins, etc.) et des tiles "outside" (les villes, l'overworld, etc.).

Il faut que j'adapte l'éditeur ou pas ?

C'est cool de voir que tu as repris son développement, j'ai hâte de voir ce que ça va donner (on pourrait avoir un petit screen de l'overworld ? happy).

148

Je crois qu'il ne faut ajouter rien à l'éditeur. Ah mais il faut que le masque soit activé pour les ponts aussi. Je vais régler quelques choses avec la routine de menu (ou plutôt utiliser celle de Pokémon Monochrome :P), puis on pourra voir peut-être la première version de l'overworld. Mais je veux qu'il soit très grand, donc je crois que je vais y consacrer une page entière, il faudra adapter la routine de tilemap pour charger des mpas qui se trouvent dans une autre page FLASH.

149

chickendude (./148) :
Ah mais il faut que le masque soit activé pour les ponts aussi.

Ok : http://www.mirari.fr/gwJL
chickendude (./148) :
Mais je veux qu'il soit très grand, donc je crois que je vais y consacrer une page entière

Même en la compressant ? Ça fait très grand autrement tongue

150

Merci smile Je ne sais pas si je vais le compresser ou non, pour le moment je ne vais pas le faire. Si je les compresse, il faudra les extraire en RAM et je ne veux pas forcer le joueur à avoir beaucoup de RAM. On verra plus tard ! Pour le moment je mets à jour la routine de menu/texte.

EDIT: J'ai récrit la vputc routine et changé le formate de l'alphabet, maintenant il n'est pas compressé, mais il est plus facile d'utiliser.