Mamie Wawa Très bonne participation
Messages : 112
| Sujet: Game Maker et la génération de map ? Optimisation ? Mar 19 Aoû 2014 - 16:36 | |
| Bonjour, Pour mon jeu, quasiment toute l'action se passe sur une grande room généré aléatoirement, cette room de base fait 10000*10000 ( donc c'est déjà un gros morceau pour Game Maker ) et pour la génération aléatoire j'ai mis dans le creation code : - Code:
-
// Random spawn Player create_randomx = round(random_range(1500,8500)) create_randomy = round(random_range(1000,9000)) instance_create(create_randomx,create_randomy,obj_player) // Generation map // do { create_randomx = random(room_width) create_randomy = random(room_height) instance_create(create_randomx,create_randomy,obj_cavern); } until ( instance_number(obj_cavern) >= 5 ) // Nombre de caverne // do { create_randomx = random(room_width) create_randomy = random(room_height) instance_create(create_randomx,create_randomy,obj_tree_generate); } until ( instance_number(obj_tree_generate) >= 3000 ) // Nombre d'arbre // do { create_randomx = random(room_width) create_randomy = random(room_height) instance_create(create_randomx,create_randomy,obj_boulder); } until ( instance_number(obj_boulder) >= 100 ) // Nombre de rocher // do { create_randomx = random(room_width) create_randomy = random(room_height) instance_create(create_randomx,create_randomy,obj_rock); } until ( instance_number(obj_rock) >= 500 ) // Nombre de pierre // do { create_randomx = random(room_width) create_randomy = random(room_height) instance_create(create_randomx,create_randomy,obj_lake); } until ( instance_number(obj_lake) >= 15 ) // Nombre de lac // do { create_randomx = random(room_width) create_randomy = random(room_height) instance_create(create_randomx,create_randomy,obj_buisson); } until ( instance_number(obj_buisson) >= 500 ) // Nombre de buissons ///////////////////////////////////////////////////////////////////////////////////////////////////////
Le plus gros soucis vient de l'optimisation, quand je fais tourner sur mon pc je n'ai pas vraiment de chute de FPS en jouant ( juste 1-2 sec de freeze le temps que ça génère la map ) mais j'arrive au point au je voudrais animer le jeu un peu plus ( creation par exemple de lapin qui se balade ) et la quand il y a un peu trop d'entités qui se balade bah ça commence à faire une chute de FPS ( 60 normalement et parfois des chutes à 24-30 fps ) Pour "optimiser" un peu j'ai essayé : - Code:
-
instance_deactivate_all(true); instance_activate_region(view_xview[0]-64, view_yview - 64, view_wview[0] + 128, view_hview + 128, true); Dans le step de mon player, mais je crois que vu le nombre d'objet ça fait plutôt l'effet inverse Donc j'ai plusieurs question, d'abord, pour créer aléatoirement un monde ( de type vue de dessus ) est-ce que ma méthode est bonne ? ( je ne pense pas vraiment pour le cas ) Si non, comment feriez vous ? Peut-on changer la room_width / room_height pour générer une map qu'au alentour du joueur ? Ainsi ne pas avoir une map limité en taille et en largueur, et pouvoir aller outre des limite de la taille initial de la map ? Est-ce que game maker atteint vite ces limites quand on parle de générer une ( grande ) map ? Aussi, parfois j'ai des chutes de fps sans que quelque ce soit passer, une raison spécifique ? |
|
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Game Maker et la génération de map ? Optimisation ? Mar 19 Aoû 2014 - 17:09 | |
| Eh bien, 3000 arbres avec GM c'est même pas la peine. Regarde du côté des structures en chunk, c'est comme ca que fait minecraft, et c'est sans doute le plus simple pour un très grande map. Concernant ta manière de générer, ca dépend vraiment ce que tu veux faire. |
|
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: Game Maker et la génération de map ? Optimisation ? Mar 19 Aoû 2014 - 18:12 | |
| Cherche pas du 1000x500 en obj (Tiles 8x8) sur mon PC (i5 4670k, gtx 760) ça tourne à 50 fps. Pas la peine de faire ça sous GM.. |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Game Maker et la génération de map ? Optimisation ? Mar 19 Aoû 2014 - 20:16 | |
| Y a moyen en utilisant des arrays pour gérer la collision map, mais sous GM c'est assez casse *******.
Le soucis des maps qui contiennent beaucoup d'objets en fait, c'est que l'algo de detection des collisions de GM doit parcourir toutes les instances pour chaque test. Du coup si t'as 5000 instances, chaque place_meeting/place_freee&co va couter 5k iterations. Bref du o(n).
Par contre si t'utilise un array, t'as juste a vérifier sur les cases ou se situe l'objet, du coup c'est un nombre d'iterations constantes, et très faible, on note ça o(1).
Par contre, pour ça, faut que les "collisionneurs" soient fixe. Si t'utilises des objets dynamique pour les solides ça deviens plus complexe et faut passer par des structures genre quadtree... |
|
Mamie Wawa Très bonne participation
Messages : 112
| Sujet: Re: Game Maker et la génération de map ? Optimisation ? Mar 19 Aoû 2014 - 21:05 | |
| Donc en utilisant ces fameux array, ça fait quoi en gros ? Ça quadrille la map puis ça calcule les collisions juste de la case ou le mob se trouvent ? |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Game Maker et la génération de map ? Optimisation ? Mar 19 Aoû 2014 - 21:10 | |
| Oui en gros c'est comme une tile map sauf que ça indique juste si la case est libre ou non. T'as un tuto sur le sdz qui expliquait ça, je sais pas s'il y est toujours mais c'était "theorie des collisions". |
|
Contenu sponsorisé
| Sujet: Re: Game Maker et la génération de map ? Optimisation ? | |
| |
|