Le jeu en pure... ?
ton voisin était drôlement balèseposhu a écrit :Ar-S, oulah, tu parles de jeux sur Amiga, je suis un joueur console, c'est de la triche ca!
Project X, j'y ai joué quand j'était tout petit (6 ans je crois), mon voisin arrivait à le finir. Appidia, je connais même pas >.<

pour Apydia, tout tournait autour d'insectes


Agony aussi était une merveille

J'ai pas trop tâté de shmup sur consoles donc c'est vrai qu'on ne peut pas trop comparer.
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
c'est bien vu, il s'agit d'un jeu de grande beauté qui est d'après mes souvenirs, d'une grande difficulté.Ar-S a écrit :pour Apydia, tout tournait autour d'insectes
Tu as connu alors l'époque des jeux avec leurs bornes spécialisés, et sur leur territoire d'origine qui plus est ! ici, je n'avais pas le sous, alors je regardais les autres jouer, et moi je glissais fébrilement une petite pièce que très, très rarement( je me suis consolé avec la megadrive et l'amiga).poshu a écrit :J'ai vécu quelques années au japon et j'ai donc zonné dans des sales d'arcades; je suis un joueur régulier, et parmi mes grosses spécialité, y'a le maniac, sur mes quelques bornes d'arcades* (j'en ai quatre) y'en a une qui est dédié au shmup vertical, surtout quand y'a plein de petites boulettes roses et bleues *O*
merci pour l'explication, je comprend et je sous estime surement ces jeux( et je préfère effectivement les jeux "pépère"poshu a écrit :Le principe d'un maniac, c'est avant tout le 1 credit, on met 1 pièce dans la machine, et on va jusqu'au bout du titre sans perdre une vie, sans utiliser une bombe. En faisant le plus gros score possible. Le lever design de ces jeux est un petit exploit de complexité (bien plus que ce que tu appelle un shmup traditionnel, au contraire de ce que tu semble penser) tant il faut cacher LA possibilité de maximiser le score.

oui, et pour te réconforter, afficher des centaines de sprites ne pose pas de problème( avec carte geforce + 256Mo de vram, tu t'exprimera sans entrave)poshu a écrit : Je vais essayer de produire des codes simples pour illustrer mes problèmes et poser des questions plus adéquate.
*je suis un ancien fan de Assault( 1988, un char vu de haut, où c'est carrément tout l'écran qui est en rotation + zoom, un truc de folie pour l'époque)personne n'y joué, alors avec une seule pièce, on avait droit à beaucoup de crédits) et de Toobin' pour son côté rafraichissant.
d'autres fans de manic, là: forum.shmup.com
j'ai joué dans le temps sur une borne d'arcade dans une salle de jeux a un jeu de char en 3D filaire , j'aimais beaucoup ! , je sais plus comment ça s'appelait ..beauregard a écrit : *je suis un ancien fan de Assault( 1988, un char vu de haut, où c'est carrément tout l'écran qui est en rotation + zoom, un truc de folie pour l'époque)personne n'y joué, alors avec une seule pièce, on avait droit à beaucoup de crédits) et de Toobin' pour son côté rafraichissant.
d'autres fans de manic, là: forum.shmup.com

Re: Le jeu en pure... ?
Je m'incruste un peu dans la discussion, sans la faire avancer parce que je préfére laisser parler ceux qui y connaissent quelque chose....beauregard a écrit :pour un jeu cette commande est à oublier.Code : Tout sélectionner
Delay()

J'ai été interpellé par ton commentaire sur les Delay(), peux tu m'expliquer pourquoi c'est à oublier dans un jeu (je les utilises pas mal, moi...) ?
parce qu'un delay a un cout de temp cpu (le temps du delay en fait) , imagine que tu commençe un jeu du type Warcraft demain , ta boucle principale va avoir un jolie delay de 20 ou 30 ms pour freiné le programme au début , tu vas ensuite rajouté des trucs , du contenu graphique , des algos de type A* , de l'ia , a chaque nouvelle étape ton programme va "ramer" de plus en plus , tu vas grinoté le delay , de 30 tu vas passé à 20 , pour gardé un fps correct (30fps disont) , tu vas testé sur une autre machine , tu aura 120 fps , le jeu sera injouable , et sur un autre pc encore moins performant, tu auras un FPS de 10... donc le delay est à banir pour temporisé un programme, car vraiment différent d'un pc à un autre.
voici une méthode bien meilleur :
@++ 
voici une méthode bien meilleur :
Code : Tout sélectionner
OpenConsole()
FPS_VEROUILLAGE=45
Repeat
;CODE ALGO
;CODE INPUT/OUTPUT (clavier,souris,gestion mémoire,etc...)
If(ElapsedMilliseconds() > (CHECK_FPS + 1000 / FPS_VEROUILLAGE) )
;CODE AFFICHAGE
FPSCOUNTER+1
If FPST<ElapsedMilliseconds()
FPST=ElapsedMilliseconds()+1000
FPS=FPSCOUNTER
FPSCOUNTER=0
EndIf
ConsoleLocate(0, 0)
PrintN("FPS="+Str(FPS))
CHECK_FPS = ElapsedMilliseconds()
EndIf
ForEver

-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
http://fr.wikipedia.org/wiki/BattlezoneDobro a écrit :j'ai joué dans le temps sur une borne d'arcade dans une salle de jeux a un jeu de char en 3D filaire , j'aimais beaucoup ! , je sais plus comment ça s'appelait ..
@Cpl.Bator : Je comprends beaucoup mieux. Mais quand j'utilise un Delay(), je joue aussi aussi avec ElapsedMilliseconds() pour déterminer le temps du Delay(n) (avec un minimum de n=1)...
Ainsi le Delay a une valeur variable, mais on est sûr de relacher un peu de ressources CPU à chaque boucle. Pour Znow, qui est un peu pourri certes, le jeu allait au même rythme sur toutes les machines testées (du très vieux, du très neuf) avec cette technique.
Cpl, dans ton exemple, même si on affiche pas les graphs à chaque tour de boucle, le programme ne lache jamais rien et le CPU monte, non ? (je peux pas tester, je suis au boulot
)
Désolé de pourrir le topic... même si poshu demandait "Des exemples de bidouilles avancées"... il doit pas trouver ça si avancé que ça...
Ainsi le Delay a une valeur variable, mais on est sûr de relacher un peu de ressources CPU à chaque boucle. Pour Znow, qui est un peu pourri certes, le jeu allait au même rythme sur toutes les machines testées (du très vieux, du très neuf) avec cette technique.
Cpl, dans ton exemple, même si on affiche pas les graphs à chaque tour de boucle, le programme ne lache jamais rien et le CPU monte, non ? (je peux pas tester, je suis au boulot

Désolé de pourrir le topic... même si poshu demandait "Des exemples de bidouilles avancées"... il doit pas trouver ça si avancé que ça...
Dernière modification par ATHOW le lun. 26/mai/2008 15:32, modifié 1 fois.
Autrefois, un delay consistait en une boucle qui ne faisait qu'attendre le temps imparti, avant de laisser le programme se poursuivre. Le processeur était entièrement monopolisé par cette tâche, autrement dit c'était loin d'être économique! Mais on s'en fichait puisqu'on ne faisait rien d'autre (et c'était un peu moins débile d'ailleurs. Moi quand je joue, je ne grave pas!
)
Sur un système multitâches, le delay est pris en charge par l'OS : on lui demande de "réveiller" le programme au bout d'un certain temps. Tout cela serait super, si l'OS en question était "temps réel" et répondait bien. On pourrait même se synchroniser avec la synchro écran(vsync)! Or, vous n'êtes pas sans avoir remarqué que quand on demande quelque chose à Windows, il lui faut parfois trois plombes pour s'exécuter. Du coup, on n'arrive jamais à avoir quelque chose qui soit vraiment bien fluide. Tout ceci est aussi valable pour les timers (un delay=un timer en fait). Malheureusement on n'a rien de mieux pour l'instant à ma connaissance.
Pour le vsync, ça fait longtemps que ça n'est plus une interruption que vous pouvez gérer directement (voir un tuto sur les interruptions). Du coup, vous êtes encore obligés de vous fier à l'OS. Si l'utilisateur a désactivé la prise en compte de la synchro, vous ne pouvez rien y faire! La seule solution est d'ajuster son programme en conséquence.
Dans l'idéal absolu, il faudrait vérifier quelle est la fréquence d'affichage désirée par l'utilisateur (celle de son bureau ou lui permettre de choisir), choisir quelle est la vitesse à laquelle notre moteur de jeu va fonctionner (en fonction de la vitesse de l'ordi ou d'autres choses, comme les échanges réseau pour un jeu multi par exemple), faire un affichage qui calcule une image qui soit la représentation de ce qui s'est passé dans le moteur, la perfection étant une sorte de motion blur de toutes les étapes calculées. Ca vous semble compliqué? A moi aussi!
Du coup on continue à utiliser des timers, et si on veut faire vraiment fluide on essaye de faire des jeux pas trop gourmands et qui tournent plus vite que la synchro (surtout pour les jeux 2d
)

Sur un système multitâches, le delay est pris en charge par l'OS : on lui demande de "réveiller" le programme au bout d'un certain temps. Tout cela serait super, si l'OS en question était "temps réel" et répondait bien. On pourrait même se synchroniser avec la synchro écran(vsync)! Or, vous n'êtes pas sans avoir remarqué que quand on demande quelque chose à Windows, il lui faut parfois trois plombes pour s'exécuter. Du coup, on n'arrive jamais à avoir quelque chose qui soit vraiment bien fluide. Tout ceci est aussi valable pour les timers (un delay=un timer en fait). Malheureusement on n'a rien de mieux pour l'instant à ma connaissance.
Pour le vsync, ça fait longtemps que ça n'est plus une interruption que vous pouvez gérer directement (voir un tuto sur les interruptions). Du coup, vous êtes encore obligés de vous fier à l'OS. Si l'utilisateur a désactivé la prise en compte de la synchro, vous ne pouvez rien y faire! La seule solution est d'ajuster son programme en conséquence.
Dans l'idéal absolu, il faudrait vérifier quelle est la fréquence d'affichage désirée par l'utilisateur (celle de son bureau ou lui permettre de choisir), choisir quelle est la vitesse à laquelle notre moteur de jeu va fonctionner (en fonction de la vitesse de l'ordi ou d'autres choses, comme les échanges réseau pour un jeu multi par exemple), faire un affichage qui calcule une image qui soit la représentation de ce qui s'est passé dans le moteur, la perfection étant une sorte de motion blur de toutes les étapes calculées. Ca vous semble compliqué? A moi aussi!


Dernière modification par djes le lun. 26/mai/2008 17:37, modifié 2 fois.
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Non. je peux tenter d'argumenter, mais en faisant seulement appel à mon imagination. Mais aussi un peu de vécu quand même. Bon allez, je me lance:Dobro a écrit :j'utilise seulement FlipBuffers([Mode]) MOA .. ai-je tord ?
Un jeu n'est pas une application, alors faire tourner un jeu pb avec dirkvalentine de nitrome, c'est rigolo, mais un peu idiot puisque le joueur ne va pas jouer aux 2 jeux en même temps ! Alors oui, en mettant un delay(1) à peurbasique, la musique de dirkvalentine ne sera pas haché sur mon vieux PC, mais à quoi bon ? Car encore une fois, le joueur ne va pas jouer aux 2 jeux à la fois( sauf peut être nos amis les extra, ne les oublions pas, qui doivent être super bien équipés en matos quand on y pense, mais je m'égare).
Si le jeu commence à flirter ~90% des ressources cpu, désactiver le delay sera salutaire( c'est la seule chose à faire, et pis les autres programmes tourneront quand même, Djes l'a un peu évoqué, mais là seul Fred et ses compagnons pourraient nous dire comment ils font, à moins que cela soit un secret de fabrication).
il est possible que j'ai tord, car j'avoue bien volontier mon ignorance dans le domaine...
Dernière modification par beauregard le jeu. 29/mai/2008 9:50, modifié 1 fois.