| Un petit script utile pour faire de beaux murs.... | |
|
|
|
Auteur | Message |
---|
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Un petit script utile pour faire de beaux murs.... Mar 10 Juil 2012 - 12:24 | |
| Voici un script qui permet de faire des jointures entre le murs... Je sais que ce n'est pas très clair donc je m'explique : Si 3 murs sont cote-à-cote, celui de gauche n'aura pas de bordure à droite, celui de milieu n'en aura ni à gauche ni à droite, et celui de droite n'aura pas de bordure à gauche. Tous les murs ne sont qu'un seul objet et je n'utilise pas de tileset. J'ai juste à placer mes objets murs dans la room et le script fait le reste ! Voici donc le script : - Code:
-
image_speed=0
if collision_point(x,y+32,mur,1,1)//bas { if collision_point(x,y-32,mur,1,1)//bas+haut { if collision_point(x+32,y,mur,1,1)//bas+haut+droite { if collision_point(x-32,y,mur,1,1)//bas+haut+droite+gauche { image_index=13 } else//bas+haut+droite { image_index=9 } } else//bas+haut { if collision_point(x-32,y,mur,1,1)//bas+haut+gauche { image_index=11 } else//bas+haut { image_index=14 } } } else//bas { if collision_point(x+32,y,mur,1,1)//bas+droite { if collision_point(x-32,y,mur,1,1)//bas+droite+gauche { image_index=10 } else//bas+droite { image_index=6 } } else//bas { if collision_point(x-32,y,mur,1,1)//bas+gauche { image_index=7 } else//bas { image_index=0 } } } } else { if collision_point(x,y-32,mur,1,1)//haut { if collision_point(x+32,y,mur,1,1)//haut+droite { if collision_point(x-32,y,mur,1,1)//haut+droite+gauche { image_index=8 } else//haut+droite { image_index=5 } } else//haut { if collision_point(x-32,y,mur,1,1)//haut+gauche { image_index=4 } else//haut { image_index=2 } } } else { if collision_point(x+32,y,mur,1,1)//droite { if collision_point(x-32,y,mur,1,1)//droite+gauche { image_index=15 } else//droite { image_index=3 } } else { if collision_point(x-32,y,mur,1,1)//gauche { image_index=1 } else//le mur est seul { image_index=12 } } } } Les sous-images du sprite doivent être dans cet ordre (dans le même ordre que le tileset de pierres fourni avec GM) : Voilà, ca ma demandé une bonne demi-haure de réflexion, donc je vous en fait profiter En espérant que ce script vous soit utile ;et n'hésitez pas à me poser des questions si je n'est pas été assez clair. |
|
| |
gaeris Pas mal
Messages : 35 Localisation : à [Nom de village imprononçable]
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mar 10 Juil 2012 - 13:05 | |
| Beau travail je retient ce code, il pourra m'être utile. tu aurais pu utiliser draw_line pour les bordures, sauf si on veut utiliser des textures plus détaillées. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mar 10 Juil 2012 - 13:17 | |
| Justement, le but est de pouvoir utiliser les sprites, je ne vais pas laisser ces murs blancs pour mon jeu.... |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mar 10 Juil 2012 - 21:01 | |
| c'est pas mal dans le cas les mur c'est des objets, mais dans ce cas la, j'aurais pas utiliser des objets mais plutot un tableau. Remarque, c'est peut etre plus gerable pour les collisions
|
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mar 10 Juil 2012 - 22:22 | |
| Je ne sais pas utiliser les tableaux en 2 dimensions et les tableaux étant relativements petits dans GM, je préfère les garder pour quand ils sont vraiment indispensables. De plus, mes murs étant destructibles, il m'est plus simple de travailler avec des objets. |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mar 10 Juil 2012 - 22:40 | |
| Bah petits, petits .... sont quand même grands, a mon avis tu ferras jamais une room qui prend un tableau complet x) Puis c'est pas par pixels hein, c'est par carré. De plus ça permet de faire des collisions AABB rapidement, et aussi tu peut bien sur détruire et créer en temps réel. Et si tu trouve des limitation, reste les ds_grids Mais je suis d'accord, c'est un peu plus compliqué, surtout sous GM (vu que ce seras un tableau qui prend 8 octets par case...). La casi totalité des jeux 2d existants utilisent des tableau pour leur 'room'. Encore quelque chose qui montre que GM est complètement a l'ouest. |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 1:49 | |
| De plus, ya beaucoup de condition, ce qui peut se reduire par un simple calcul par bit... je m'explique : - Code:
-
N O-E S voici les points cardinaux d'un mur, si on considerte que chacun de ces points des bit, ca donne que le N est le 1er bit, E le 2eme, O le 3eme et S le 4eme (donc dans l'ordre : N^1+O^2+E^3+S^3) /* lol, NOES, ca veux rien dire */ donc ton script dans ce cas aura que 1 ligne ! que voici : - Citation :
- return collision_point(x,y-32,mur,1,1) /*nord*/ + collision_point(x-32,y,mur,1,1)^2 /*ouest*/ + collision_point(x+32,y,mur,1,1)^3 /*est*/ + collision_point(x,y+32,mur,1,1)^4 /*sud*/;
ce resultat donnera ton image_index (il faut modifier le strip par contre pour qu'il concorde bien avec cette ligne,n ce qui est relativement simple) |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 7:28 | |
| Moi et les bits.... Et onilink_, pour une room un tableau suffit largement, mais par exemple si tu veux que quand le joueur creve, au lieu de recommencer bêtement il puisse "retourner dans le passé", en imaginant 2 tableaux a une dimension pour les positions x et y, avec un room_speed de 30, tu pourra a peine enregistrer un peu plus de 10 secondes avant e dépasser les 32000 cases.... Et si en plus t'a des ennemis ou des trucs qui bougent, tu va vite dépasser le million de cases total et tu te retrouve bloqué.... (C'était un peu compliqué mais j'espère que t'as compris ) |
|
| |
Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 11:08 | |
| Mouais, pas sûr dans ce cas qu'un tableau soit des plus approprié. |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 11:22 | |
| Houla pas sur d'avoir capté ton truc la Térence xD Tu voudrais enregistrer toute la room dans un tableau chaque step ? >Gabin : Utilise des op binaires plutôt (surtout que ton raisonnement est faux la, 1^x = 1) : N | O<<1 | E<<2 | S<<3 |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 12:30 | |
| C'est un peu compliqué en effet... En gros, à chaque step tu enregistre la position en x et la position en y dans 2 tableaux différents, et ensuite tu fais que quand le joueur meure, il revient sur ses positions précédentes que tu aura enregistré pendant qu'il était encore en vie... (je sais pas si c'est plus clair...) |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 12:39 | |
| En gros tu enregistres les positions précédentes de ton perso, mais pourquoi dans deux tableaux ? |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 12:41 | |
| Un pour x et un pour y. Mais je vois toujours pas le problème quand a l'utilisation d'un tableau pour les collisions x)
|
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 12:45 | |
| Oui enfin je pensais qu'il parlait de deux tableaux 2D, enfin c'est logique - Citation :
Mais je vois toujours pas le problème quand a l'utilisation d'un tableau pour les collisions x) Moi non plus. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 13:20 | |
| vous avez mal compris, moi j'argumentais pas sur les collisions, de disais juste que les tableaux sont petits dans gm et que plutot que de perdre de la mémoire avec les tableaux, j'utilise tout simplement des objets... |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 13:25 | |
| Ben les objets prennent énormément plus de mémoire que les tableaux hein ... Quand tu vois toutes les variables locales attribuées a un objet, avec chaque variable qui fait 8 octets... |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 14:38 | |
| oui mais ca on s'en fout, on a pas de limite d'objets alors que les tableaux sont limités. Pour un grand jeu, je peux comprendre, mais pour un petit projet ca sert pas à grand chose... (du moins je pense...) |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 15:28 | |
| Les ds_list et ds_grid sont des tableaux et sont pas limités...
|
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 15:32 | |
| C'est vrai ? Et ben tu viens de m'apprendre un truc merci ! N'empêche je me demande comment ils ont réussi a faire que les tableaux soient limités alors que les grids qui ne sont que des tableaux speciaux soient infinis.... c'est space.... |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 15:36 | |
| A mon avis c'est une protection pour que les newbies saturent pas toute la ram en faisant n'importe quoi x)
|
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| |
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 15:46 | |
| Et en plus d'être plus rapides et légers, t'as plein de fonctionnalités super pratique. Pour les ds_list par exemple : ds_list_insert -> insérer une case ds_list_sort -> trier les valeurs Pour les ds_grid par exemple : ds_grid_add_disk ds_grid_add_region ds_grid_get_disk_max ds_grid_get_max ds_grid_multiply Bref, les possibilités deviennent énormes |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 15:51 | |
| Je viens de lire la doc sur les grids et c'est vraiment pratique t'as raison, ensuite trier des listes c'est intéressant parce que ce serait bien plus long de coder sa propre fonction (en utilisant ascii je pense ) Merci pour toutes ces infos |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 18:12 | |
| List != Tableau : voilà pourquoi, et je pense que les listes sont des objets, enfin ça on ne le voit pas. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 18:15 | |
| Mais si ce sont des objets, ou sont enregistrées les valeurs ?? A mon avis dans un tableau ou alors, mais c'est un peu con, dans un string ou toutes les valeurs sont séparées par un caractère spécial... |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 18:21 | |
| Ouais mais en fait même, puisque les strings sont des tableaux de char.... Et puis je pense que les attributs d'un objet sont eux aussi dans un tableau spécial (un peu comme ceux en java ou en php dont l'index est un mot (ex:$_POST["name"])) |
|
| |
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 18:57 | |
| - Citation :
- >Gabin :
Utilise des op binaires plutôt (surtout que ton raisonnement est faux la, 1^x = 1) : N | O<<1 | E<<2 | S<<3 "1^x = 1" -> je me suis trompé ^^, c'est x^1 que je voulais mettre ce qui fait que N | O<<1 | E<<2 | S<<3 reviens a ce que je veux mais je me suis pas penché sur cette ecriture (en plus, c'est du C, pas du GML ?) |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Mer 11 Juil 2012 - 19:10 | |
| Les op binaires en gml s'écrivent comme en C |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Jeu 12 Juil 2012 - 13:02 | |
| - Térence68 a écrit:
- Ouais mais en fait même, puisque les strings sont des tableaux de char....
Et puis je pense que les attributs d'un objet sont eux aussi dans un tableau spécial (un peu comme ceux en java ou en php dont l'index est un mot (ex:$_POST["name"])) Je ne parlais pas bien sur pas dans GM mais en Delphi, dans le code de GM, à mon avis les objets sont stocké dans une ou des lists. Et une list est un objet, et ce sont bien sur ce ne sont pas objets de la class objet de gm, voilà y a rien d'autre à comprendre. |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Un petit script utile pour faire de beaux murs.... Jeu 12 Juil 2012 - 13:40 | |
| Vu que GM a été réécris en C++, c'est soit stocké dans un tableau dynamique, soit dans un vector A mon avis ils se sont tournés vers la simplicité plutôt que la puissance par contre. (vector : plus pratique mais un poil moins rapide, on le ressent surtout quand il y a beaucoup d'éléments) |
|
| |
Contenu sponsorisé
| Sujet: Re: Un petit script utile pour faire de beaux murs.... | |
| |
|
| |
| Un petit script utile pour faire de beaux murs.... | |
|