Physique dans les jeux (PB 4.60)

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Physique dans les jeux (PB 4.60)

Message par falsam »

Je me demande si la gestion du Physics fonctionne correctement. A moins que ce soit moi qui ne le code pas correctement.

Pour illustrer mon problème, je joint un fichier (zip) qui contient un code ainsi que les textures associés.

:arrow: Test3D.zip

-Ce code montre 10 cubes qui tombent d'une hauteur de 6 metres. Tout va bien, ils rebondissent bien.

-J'ai crée un avatar représenté par un cube que vous pouvez déplacer avec les flèches du clavier.
Cet avatar est capable de percuter les cubes mais mon soucis est que si j'attend trop, les cubes deviennent fantômes (On passe à travers).

-EnableWorldPhysics(#True) fonctionne il vraiment ? présent ou pas les collisions fonctionnent.

Les conditions de test :
-Avant que les cubes qui tombent soit stables, déplacez votre avatar pour aller bousculer ces cubes.

-Relancez votre code et attendez que les cubes soient complètement stabilisés avant d'aller les bousculer. Ils sont devenu fantômes.

- Commentez EnableWorldPhysics(#True) et vous verrez que ça ne change rien à l’exécution du code.


Le code est à compiler avec la version 4.60 RC1 de PureBasic. Pour sortir du programme touche Esc
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Physique dans les jeux (PB 4.60)

Message par Cool Dji »

Hello Falsam,

Je ne sais plus lequel de nos camarades de jeux avait détecté cette anomalie dans les premières versions de la 4.6.
J'ai essayé de rechercher le topic mais pas trouvé (c'était pas kelebrindae ?)

Sinon, peux pas t'aider j'ai jamais essayé cette fonction 8O
Only PureBasic makes it possible
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Physique dans les jeux (PB 4.60)

Message par djes »

Il faut regarder les rapports de bug sur le forum anglais. Celui-ci y figure.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Physique dans les jeux (PB 4.60)

Message par falsam »

Merci Cool Dji et djes. C'est effectivement un bug que Comtois signale dans la section bug window du forum anglais. (lien)

Voila qui explique peut être pourquoi le code si dessous ne fonctionne pas correctement.

Code : Tout sélectionner

EnableExplicit

Enumeration 10
  #Camera
  #Light
  
  #Cube
  #Cube_Mesh
  #Cube_Texture
  #Cube_Material
  
  #Cylindre
  #Cylindre_Mesh
  #Cylindre_Texture
  #Cylindre_Material
  
  #Sphere
  #Sphere_Mesh
  #Sphere_Texture
  #Sphere_Material
  
  #Ground
  #Ground_Mesh
  #Ground_Texture
  #Ground_Material  
EndEnumeration


Global Entity.i, x.f, y.f, z.i, RotX.i, RotY.i, RotZ, i.f, Sense.s="Right"

InitSprite()
InitKeyboard()
InitMouse()
InitEngine3D()

OpenWindow(0,0,0,800,600,"3d",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)

WorldShadows(#PB_Shadow_Additive)

EnableWorldPhysics(#True) 

CreateCamera(#Camera,0,0,800,600)
CameraLocate(#Camera,5,5,-20)
CameraLookAt(#Camera,5,5,0)
CreateLight(#Light,RGB(255,255,255),0,50,-20)

CreateCylinder(#Cylindre_Mesh, 1, 5) 
CreateEntity(#Cylindre, MeshID(#Cylindre_Mesh), #PB_Material_None)
EntityLocate(#Cylindre, 1, 1,0)
RotateEntity(#Cylindre, 90, 0, 90)

CreateCube(#Cube_Mesh, 1)
CreateEntity(#Cube, MeshID(#cube_Mesh), #PB_Material_None)
ResizeEntity(#Cube, 15, 0.2, 5)
EntityLocate(#Cube, 1, 2.2, 0)
RotateEntity(#Cube, 0, 0, -18)
EntityPhysicBody(#Cube, #PB_Entity_StaticBody, 2, 0, 0)

CreateSphere(#Sphere_Mesh, 1) 
CreateEntity(#Sphere, MeshID(#Sphere_Mesh), #PB_Material_None)
EntityLocate(#Sphere, -1, 6,0)
EntityPhysicBody(#Sphere, #PB_Entity_BoxBody, 1, 0, 1)

CreateCube(#Ground_Mesh, 20)
CreateEntity(#Ground,MeshID(#Ground_Mesh), #PB_Material_None)
EntityLocate(#Ground,5,-10,-5)
EntityPhysicBody(#Ground, #PB_Entity_StaticBody, 1, 0, 0)

Repeat
  Delay(1)
  RenderWorld()
  
  ;Balançoire
  If i<18 And Sense="Right"
    i + 0.3
  Else
    Sense="Left"
  EndIf
  
  
  If i>-18 And Sense="Left"
    i - 0.3
  Else
    Sense="Right"
  EndIf
  RotateEntity(#Cube, 0, 0, i)
   
  If ExamineMouse()
    RotY = -MouseDeltaX()/10 
    RotX = -MouseDeltaY()/10  
  EndIf
       
  RotateCamera(#Camera, RotX, RotY, RotZ, #PB_Relative)
  
  FlipBuffers()
  
  ExamineKeyboard() 
  If KeyboardPushed(#PB_Key_Escape)
    End
  EndIf
  
ForEver
 
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Physique dans les jeux (PB 4.60)

Message par Cool Dji »

Yep,

La 4.6 finalisée sera un petit pas pour l'homme, un bond de géant pour la communauté...
Only PureBasic makes it possible
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Physique dans les jeux (PB 4.60)

Message par falsam »

so wait and see :)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Physique dans les jeux (PB 4.60)

Message par Cool Dji »

J'attends de tester ces fonctions et de voir les possibilités.
Pour l'instant, je procède à des tests maisons mais je vois mes limites en physique...
Only PureBasic makes it possible
Répondre