Quelques questions générales ...

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Quelques questions générales ...

Message par Progi1984 »

Bonjour,

J'ai trois petites questions à vous poser :
1 Comment savoir si on est dans un OpenScreen ou dans un OpenWindowedScreen ?
2 Comme je suis en train de faire une console (type Quake screenshot1 - screeenshot2), j'aurais besoin de savoir si il y ait mieux de gérer les évènements via callback ou via thread pour un jeu ?
3 Sinon possibilité de faire un callback dans un OpenScreen?

Merci & A bientot
Anonyme

Message par Anonyme »

1 Comment savoir si on est dans un OpenScreen ou dans un OpenWindowedScreen ?
-Bonne question :D moi , je ferais une fonction qui appelle l'une d'elle, et lors de l'appel de ma fonction, tu définis une variable 1 ou 0.

Code : Tout sélectionner

Proc OpenWindowedScreen(param)

OpenWindowedScreen(blabla)

Is_OpenWindowedScreen.b = 1

endproc
2 Comme je suis en train de faire une console (type Quake screenshot1 - screeenshot2), j'aurais besoin de savoir si il y ait mieux de gérer les évènements via callback ou via thread pour un jeu ?
Perso, j'utilise rarement les threads et encore moins les callbacks pour les évenements. mais peut être qu'ils ont leurs avantages.
3 Sinon possibilité de faire un callback dans un OpenScreen?
Aucune idée :? mais les callback c'est bien pour gerer des fenetres, non ?

@++
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Cpl.Bator a écrit :
1 Comment savoir si on est dans un OpenScreen ou dans un OpenWindowedScreen ?
-Bonne question :D moi , je ferais une fonction qui appelle l'une d'elle, et lors de l'appel de ma fonction, tu définis une variable 1 ou 0.
Mauvaise réponse ^^
Faut toujours partir du principe qu'il n'a pas accès à cette info, sinon je pense qu'il ne demanderais pas

Code : Tout sélectionner

Procedure IsScreenWindowed()
  !Extrn _PB_Screen_Windowed
  !MOV eax, dword [_PB_Screen_Windowed]
  ProcedureReturn
EndProcedure
Dri
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

1 Comment savoir si on est dans un OpenScreen ou dans un OpenWindowedScreen ?
Une astuce : tu ouvres tous tes OpenScreen avec une hauteur paire et tes OpenWindowScreen avec une hauteur impaire.
Ensuite, si tu ne sais plus ou tu es, tu interroges la hauteur...
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Je préfère ma méthode lol

Dri
Anonyme

Message par Anonyme »

Mauvaise réponse ^^
Faut toujours partir du principe qu'il n'a pas accès à cette info, sinon je pense qu'il ne demanderais pas

Code:
Procedure IsScreenWindowed()
!Extrn _PB_Screen_Windowed
!MOV eax, dword [_PB_Screen_Windowed]
ProcedureReturn
EndProcedure
Je ne connais pô l'asm :?

@++ :D
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Cpl.Bator a écrit :Je ne connais pô l'asm :?

@++ :D
Je parlais du fond ^^

Si tu crées un programmes de A à Z du doit bien avoir un moyen de retrouver ce genre d'info, si tu ne crées qu'une partie du programme (par exemple une userlib) dans ce cas c'est plus délicat...

Dri
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Merci DrDri, c'est ce qu'il me fallait.

SInon quelqu'un pour la question 2 ?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

bah tu peux faire comme tu veux... si tu crée une callback il faut utiliser la fenêtre de l'écran (je peux te faire une proc pour le plein écran et pour le mode fenêtré tu gères)

sinon un thread, pourquoi pas... tu peux aussi gérer directement ca dans ta boucle principale, en fait c'est plutôt l'affichage que je gère dans un thread moi ^^

Dri ;)
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Question 2
Tu fais réference a des jeux comme Quake, ou tu avais ta console, alors que le jeux derrière
continuait a vivre sa vie. Donc deux taches bien distinctes qui s'execute en meme temps.
(meme si bien sur il y a dialogue entre les deux)
Donc dans ce cas je dirais les Threads. Seul le partage des ressource peut parfois poser
des soucis, mais rien d'insurmontable...

Je vois plutot les callback comme une possibilité de permettre a un utilisateur de définir
ses propre procedures, qui seront appelées par exemple par une API, dans le cas de certaines
action précises, comme des sprite qui entrent en collisions et qui appeleraient une procedure
particulière qui aura été définis par les concepteurs du jeux. Mais leur execution restent
synchrone, et donc il faut judicieusement les employer...
Force et sagesse...
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Dr. Dri a écrit :bah tu peux faire comme tu veux... si tu crée une callback il faut utiliser la fenêtre de l'écran (je peux te faire une proc pour le plein écran et pour le mode fenêtré tu gères)

sinon un thread, pourquoi pas... tu peux aussi gérer directement ca dans ta boucle principale, en fait c'est plutôt l'affichage que je gère dans un thread moi ^^

Dri ;)
Merci Dri & TMyke

@Dri : Penses tu qu'il est possible d'avoir dans une boucle principale, le cube tournant et dans un thread, l'affichage d'un sprite(3D) sur la pièce 3D (comme ici) ?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

je dirais que oui c'est possible mais je sais pas si c'est "safe"

bah sinon je vais te dire comment je gère moi

boucle principale :
réception des évennements

thread gestion :
réception des entrées clavier/souris/joystick
calculs divers selon les entrées (déplacements collisions etc)
joue les sons selon les évennements (son déplacement, son collision, son explosion etc)

thread video :
affiche en boucle selon l'état du programme et joue

Dri
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Aurais tu un code sur ce que j'ai proposé ?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Progi1984 a écrit :Aurais tu un code sur ce que j'ai proposé ?
une scene 3D + une console ?

Dri
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

UNe scene 3D dans la boucle principale... et un sprite 3D d'afficher dans le thread..., si cela ne t'ennuie pas.
Répondre