Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 12:33
Hello!
Je fait un remake au pixel-près du jeu Strike Gunner S.T.G sur GM et la partie sur laquelle je bloque c'est générer les ennemis via une timeline manuelle (switch)
Un petit exemple:
Code:
global.Time+=1
switch (global.Time){ case 500: make_enemy(pth_03,0,o_enemy01) break case 525: make_enemy(pth_03,0,o_enemy01) break case 550: make_enemy(pth_03,0,o_enemy01) break case 575: make_enemy(pth_03,0,o_enemy01) break case 600: make_enemy(pth_03,0,o_enemy01) break }
Le problème c'est que j'ai 2100 ennemis a générer...
J'aurais aimer savoir si c'était possible de rajouter des "cases" via une fonction du type:
Code:
make_enemy(CASE, path,.......)
Ce qui me permettrait de pouvoir faire des séries d'ennemis en une ligne en me faisant un scipt du style:
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 12:53
Euh attends, t'as vraiment plus de 2000 ennemis ? Tu peux laisser tomber tout de suite à mon avis, même 2000 objets statiques ca doit pas tourner à mon avis alors là...
_________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Asu Utilisateur confirmé: Rang ****
Messages : 895
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 12:57
Térence68 a écrit:
Euh attends, t'as vraiment plus de 2000 ennemis ? Tu peux laisser tomber tout de suite à mon avis, même 2000 objets statiques ca doit pas tourner à mon avis alors là...
Oui mais entre temps ils seront sûrement tués.
Il faut essayer de trafiquer des string qui contient tes lignes de code, et d'utiliser execute_string. Par contre execute_string c'est lent...
_________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
red-error Utilisateur confirmé: Rang ****
Messages : 1015 Projet Actuel :
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 13:04
Tu peux utiliser la magie des modulo sinon :p
if(global.Time % 25 == 0) { Blablabla }
Te créera une ennemi tous les 25 steps.
Kabcorp Utilisateur confirmé: Rang **
Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 13:19
2100 ennemies d'un coup? =P non. en 10 niveaux =)
execute_string? pourquoi pas mais cela ne serait t'il pas tres lent (4 a 5 fois par seconde) ?
_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 13:25
Ok, autant pour moi, j'avais pas fait gaffe au titre du topic. Par contre j'ai pas compris ce que t'entendais par "cases" ? Si tu veux créer des ennemis par vague, ouais le modulo marche impec', je vois pas ce que tu peux faire avec des execute_string.
_________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Kabcorp Utilisateur confirmé: Rang **
Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 13:34
Oui creer des vagues (mais pas que) =)
j'aimerais en gros pouvoir ajouter des SwitchCases avec une valeur définie genre AddCase(moment)
switch(bakabak) { case quetuviend'ajouter break }
_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 14:33
Ouais bah dans ce cas là faut effectivement un execute_string mais c'est vraiment à ***** comme méthode. Utilise tout simplement un modulo, comme le disait red-error, pour ton exemple ca donne ca : global.Time+=1; if(global.Time%25==0){ make_enemy(pth_03,0,o_enemy01); }
_________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Kabcorp Utilisateur confirmé: Rang **
Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 14:53
Interessant mais ca me fairait toujours 2100 lignes a ecrire =)
J'aimerais fair ca:
case 100: action +ajouter action a 150 +ajouter action a 200 +ajouter action a 250 break etc (pour les series d'ennemis)
_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 14:56
Nan, la tous les 25 steps il te crée ton ennemi. Le modulo (%) te retourne le reste d'une division euclidienne (entière), exemple : 6%4=2. Donc la il te créera un ennemi quand global.Time vaudra 0,25,50,75,100,etc...
_________________ Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Kabcorp Utilisateur confirmé: Rang **
Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 15:06
case 100+ tout les 25 steps a partir de 100?
_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
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: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 15:52
nan, en clair, a chaque fois que global.Time sera un multiple de 25 (0, 25, 50, 75, etc...) un monstre sera créé
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 15:56
Code:
if(step>=100 and step<1100 and step%25==0) //pour tous les multiples de 25 plus grand que 100 et plus petit que 1100 { créer un ennemi (les 400 premières vagues) } else if(step>1100 and step%25==0) // pour tous les multiples de 25 plus grand que 1100 { créer un ennemi (les vagues d'après) }
step+=1
Y'a aussi des astuces comme mettre tes objets dans une liste liste=[objet0,objet1,objet3] puis les parcourir en faisant liste[step div 1000 %3] (div est la division entière) Ce qui changera d'ennemi tous les 1000 steps en bouclant sur les 3 différents objets http://en.wikipedia.org/wiki/Modulo_operation
Ou encore un truc simple comme utiliser une variable d'état supplémentaire, par exemple act = 0 au départ
Code:
if(act==0) { if(step==0) { initialisation de la vague }
if(step%25==0) { lancer un ennemi tous les 25 steps }
if(step>=300 and step%50==0) { lancer un autre ennemi tous les 50 steps 300 steps après le départ }
if(step==1000) { act=2 step=0 } }
step+=1
Tu peux aussi mettre tes configurations dans des listes, et avoir un bout de code qui lit les configurations unes par unes et les créé, plus compact. [ ["triangle",ennemis1],["esquadron",ennemis2],["floppée",ennemis0],["formation",ennemis3] ]
Messages : 315 Localisation : Savoie Projet Actuel : trop...
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 16:36
Merci beaucoup! =D J'essaye ça ce soir! bon aprem'
_________________
Vous voulez un jeu pas comme les autres? Voici DeFRaG :
Asu Utilisateur confirmé: Rang ****
Messages : 895
Sujet: Re: Timeline ennemis pour un Shmup Jeu 10 Juil 2014 - 16:43
Oui je confirme, seulement certaines versions de GM:S supportent "%". Toutes les versions de GM supportent "mod".
_________________ <Cysteine> nON mais la touche maj s'active/se désactive toute seule <Cysteine> et a du mal à réponDRE QUANd j'appuie dessus <Cysteine> et je l'ai démont2? IL Ny a rien DEDANs
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
Sujet: Re: Timeline ennemis pour un Shmup Sam 12 Juil 2014 - 1:34
sinon une liste toute bête non ?
Genre : "Data[index, type/temps]"
Comme ça, ton "add_ennemy(250, ennemis_01, 5);" ajoutera 5 ennemis de type ennemis_01 au temps 250.
_________________ Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^ l'antique Bienvenue au 2629eme utilisateur : Mike Jones !