Le jeu en pure... ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

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 >.<
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

poshu 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 >.<
ton voisin était drôlement balèse :)
pour Apydia, tout tournait autour d'insectes :)

Image

Agony aussi était une merveille

Image

J'ai pas trop tâté de shmup sur consoles donc c'est vrai qu'on ne peut pas trop comparer.
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

faut vraiment que je me paye un Amiga, au moins pour pure.
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Ar-S a écrit :pour Apydia, tout tournait autour d'insectes :)
c'est bien vu, il s'agit d'un jeu de grande beauté qui est d'après mes souvenirs, d'une grande difficulté.
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*
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 :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.
merci pour l'explication, je comprend et je sous estime surement ces jeux( et je préfère effectivement les jeux "pépère" ;) , le score, même du temps de la vcs2600, heu, je m'en lasse rapidement. Je préfère la découverte de nouveau truc (décors/personnages ou vaisseaux/musique...).
poshu a écrit : Je vais essayer de produire des codes simples pour illustrer mes problèmes et poser des questions plus adéquate.
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)

*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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

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
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 .. :D
ATHOW
Messages : 226
Inscription : mer. 29/déc./2004 16:54

Re: Le jeu en pure... ?

Message par ATHOW »

beauregard a écrit :

Code : Tout sélectionner

Delay() 
pour un jeu cette commande est à oublier.
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.... :)

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...) ?
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

bah, le delay() "gache" du temps processeur, sauf si tu est en multithreading. Comme tu ne sais pas sur quel pc ton jeu va tourner, tu ne peux pas te permettre de "jeter" du temps processeur par la fenêtre simplement par ce qu'en général, il vaut mieux activer le Vsync que de mettre un delay().
Anonyme

Message par Anonyme »

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 :

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
@++ :wink:
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Dobro 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 .. :D
http://fr.wikipedia.org/wiki/Battlezone
ATHOW
Messages : 226
Inscription : mer. 29/déc./2004 16:54

Message par ATHOW »

@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...
Dernière modification par ATHOW le lun. 26/mai/2008 15:32, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

j'utilise seulement FlipBuffers([Mode]) MOA .. ai-je tord ? 8O

la seul reference de temps doit etre le rafraichissement de l'image , ou bien les timers, l'avantage des timer, c'est leur regularité parfaite :D (du moins le crois-je..)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

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! :roll:)

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! :lol: 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 :) )
Dernière modification par djes le lun. 26/mai/2008 17:37, modifié 2 fois.
Anonyme

Message par Anonyme »

Dobro , oui & non , si tu met 60 et que mon écran est en 75 hz , c'est sous cadencé , vice versa...


met un delay(1) de manière à rendre la main à l'os... même si pour un jeu ca n'a pas réellement d'utilitée...
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

en mode fenêtre c'est utile sur mon petit portable :lol: .
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Dobro a écrit :j'utilise seulement FlipBuffers([Mode]) MOA .. ai-je tord ?
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:

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.
Répondre