Page 1 sur 2
Quelques questions générales ...
Publié : lun. 09/oct./2006 9:32
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
Publié : lun. 09/oct./2006 16:14
par Anonyme
1 Comment savoir si on est dans un OpenScreen ou dans un OpenWindowedScreen ?
-Bonne question

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 ?
@++
Publié : lun. 09/oct./2006 17:30
par Dr. Dri
Cpl.Bator a écrit :1 Comment savoir si on est dans un OpenScreen ou dans un OpenWindowedScreen ?
-Bonne question

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
Publié : lun. 09/oct./2006 17:38
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...
Publié : lun. 09/oct./2006 17:40
par Dr. Dri
Je préfère ma méthode lol
Dri
Publié : lun. 09/oct./2006 17:43
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
@++

Publié : lun. 09/oct./2006 17:50
par Dr. Dri
Cpl.Bator a écrit :Je ne connais pô l'asm
@++

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
Publié : mar. 10/oct./2006 7:47
par Progi1984
Merci DrDri, c'est ce qu'il me fallait.
SInon quelqu'un pour la question 2 ?
Publié : mar. 10/oct./2006 18:40
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

Publié : mar. 10/oct./2006 18:46
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...
Publié : mer. 11/oct./2006 7:51
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) ?
Publié : mer. 11/oct./2006 8:39
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
Publié : mer. 11/oct./2006 8:46
par Progi1984
Aurais tu un code sur ce que j'ai proposé ?
Publié : mer. 11/oct./2006 18:13
par Dr. Dri
Progi1984 a écrit :Aurais tu un code sur ce que j'ai proposé ?
une scene 3D + une console ?
Dri
Publié : jeu. 12/oct./2006 7:42
par Progi1984
UNe scene 3D dans la boucle principale... et un sprite 3D d'afficher dans le thread..., si cela ne t'ennuie pas.