Moi peter un cable

Programmation avancée de jeux en PureBasic
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Moi peter un cable

Message par Pacificator »

Testez ce code (a enregistrer dans le dossier des exemples)

Avec les touches A Z E R T Y, on peut modifier l'angle du robot. Amusez vous a modifier les angles dans tout les sens pendant quelques secondes, ensuite, remettez les angles à 0: le robot n'a plus la même orientation que l'orientation originale

je vois pas ou est le probleme :roll:

Code : Tout sélectionner

IncludeFile "Screen3DRequester.pb"

DefType.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()
  Add3DArchive("Data\"          , #PB_3DArchive_FileSystem)
  Add3DArchive("Data\Skybox.zip", #PB_3DArchive_Zip)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()

    AmbientColor(RGB(255,255,255))
    
    CreateMaterial  (0, LoadTexture(0, "Terrain_Texture.jpg"))
    AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), 1)
    
    CreateTerrain("Terrain.png", MaterialID(0), 4, 0.6, 4, 8)

    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 128, 70, 128)
    
    SkyDome("Clouds.jpg",10)
    
    LoadMesh   (0, "Robot.mesh")
    CreateMaterial(1, LoadTexture(2, "r2skin.jpg"))
    CreateEntity(0, MeshID(0), MaterialID(1),  300, 0, 300)
    ScaleEntity(0,0.5,0.5,0.5)    
    
    Structure Angles 
    AngleX.w
    AngleY.w
    AngleZ.w
    EndStructure
    Dim EntityAngle.w(1)
    Repeat


      
      If ExamineKeyboard()

        If KeyboardPushed(#PB_Key_Left)
          KeyX = -5
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = 5
        Else
          KeyX = 0
        EndIf
                  
        If KeyboardPushed(#PB_Key_Up)
          KeyY = 5
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = -5 
        Else
          KeyY = 0
        EndIf
        
        ;CONTROL ANGLES
        
        
        *pointeur.angles= @EntityAngle()
        If KeyboardPushed(#PB_Key_q)
        RotateEntity(0,5,0,0)
        *pointeur\angleX+5
        EndIf
        If KeyboardPushed(#PB_Key_w)
        RotateEntity(0,0,5,0)
        *pointeur\angleY+5
        EndIf
        If KeyboardPushed(#PB_Key_e)
        RotateEntity(0,0,0,5)
        *pointeur\angleZ+5
        EndIf
        If KeyboardPushed(#PB_Key_r)
        RotateEntity(0,-5,0,0)
        *pointeur\angleX-5
        EndIf
        If KeyboardPushed(#PB_Key_t)
        RotateEntity(0,0,-5,0)
        *pointeur\angleY-5
        EndIf
        If KeyboardPushed(#PB_Key_y)
        RotateEntity(0,0,0,-5)
        *pointeur\angleZ-5
        EndIf

      EndIf
      
         ;Garder Angles entre 0 et 360
          
          If *pointeur\AngleX < 0
          *pointeur\AngleX+360
          ElseIf *pointeur\AngleX >= 360
          *pointeur\AngleX-360
          EndIf
          If *pointeur\AngleY < 0
          *pointeur\AngleY+360
          ElseIf *pointeur\AngleY >= 360
          *pointeur\AngleY-360
          EndIf
          If *pointeur\AngleZ < 0
          *pointeur\AngleZ+360
          ElseIf *pointeur\AngleZ >= 360
          *pointeur\AngleZ-360
          EndIf
      
      Height.f = TerrainHeight(EntityX(0), EntityZ(0))
      
      CameraLookAt(0, EntityX(0), EntityY(0), EntityZ(0))
      MoveEntity(0, Keyy, -EntityY(0)+Height+8, Keyx)
            
      RenderWorld()
      Gosub Fps
      Gosub DisplayVariables
      FlipBuffers()
      
  
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
  
End

FPS:
  If Val(FormatDate("%ss", Date()))=sek
    FPS+1
  Else
    FPS$=Str(FPS)
    FPS=0
  EndIf
  sek=Val(FormatDate("%ss", Date()))
 
  StartDrawing(ScreenOutput()) 
    DrawingMode(1)
    FrontColor(255,255,255)
    Locate(1,1)
    DrawText("FPS: "+FPS$)
    Locate(1, 20) : DrawText(Str(CountRenderedTriangles())+" Triangles")
  StopDrawing()
Return

DisplayVariables:
StartDrawing(ScreenOutput()) 
    DrawingMode(1)
    FrontColor(255,0,0)
    Locate(1, 40) : DrawText(Str(*pointeur\angleX)+" Xdegrés")
    Locate(1, 60) : DrawText(Str(*pointeur\angleY)+" Ydegrés")
    Locate(1, 80) : DrawText(Str(*pointeur\angleZ)+" Zdegrés")


  StopDrawing()
Return
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Code : Tout sélectionner

*pointeur.angles= @EntityAngle() 
Je pense que le probleme est la, @Procedure() renvoi l'adresse de la procedure... Essaye :

Code : Tout sélectionner

*pointeur.angles= EntityAngle() 
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

oui, mais ca ne change rien...
(le code original passe par une procedure, ca c l'adaptation)

Je bosse sur une librairie sur les rotations, et si la commande RotateEntity est approximative, ce ne sera pas réalisable...
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Je croyais que EntityAngle() etait une fonction qui renvoyais un pointeur vers les angles de l'entity, désolé lol

Effectivement RotateEntity est etrange...
Fred? C'est des degrés qu'on passe a RotateEntity/RotateCamera et autre? Car si c'est le cas... ben... c'est pas des degrés de chez nous :P
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

pour les angles , j'attends la mise à jour .
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

Bon bah, ma lib de rotation, c mort
De toute façon la 3d sous pure c mort...

en attendant l'espérée mise a jour qui n'est pas prette de sortir
je vais voir ailleur... [Blitz ou 3dgs?]
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Pacificator a écrit :Bon bah, ma lib de rotation, c mort
De toute façon la 3d sous pure c mort...

en attendant l'espérée mise a jour qui n'est pas prette de sortir
je vais voir ailleur... [Blitz ou 3dgs?]
rho mais non, c'est ce que je me disais aussi au debut, mais apres m'y etre bien pencher dessus, c'est vraiment pas mal du tout! (bon a par ces angles... domage car j'avais trouver le truc pour le picking ^^)
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

J'ai bien pris le temps de faire le tour des possibilité de pure, c'est bien pour la 2d, bien pour les application, mais pas pour la 3d.
Les meshs ne peuvent contenir de sous-objets, et n'ont pas de collision, ceux animés plantent, les lumières sont invisible, les move entity sont relative a l'orientation de l'entity, et le comble du tout est qu'on ne peut même pas mesurer son orientation. Le skydome ne peut pas etre immobile, et j'en passe...
comment programmer un jeu dans ces condition?


Voici le source de la lib inachevé, que j'allais baptiser "Game 3D Lib" mais comme je n'ai fait que les rotations qu'ils ne marchent pas, je l'appelle "Trigonométryzpa Lib"
si rotateentity ne marche pas, ma lib ne marche pas...
Il vous suffit juste de compiler le code ci dessous avec Tailbite
Qui sait ca servira peut etre le jour ou les rotateentity marcheront...

Les commandes

GL_InitRotationSys(NbrEntity,NbrCamera)

Initialise le systeme, doit etre appellé pour utiliser les autres commandes.
Tout les angles de toutes les entitées (de 0 à NbrEntity) sont mise a 0


GL_RotateEntityX(Entity,Angle)
GL_RotateEntityY(Entity,Angle)
GL_RotateEntityZ(Entity,Angle)


Remplace la commande RotateEntity()
(et met a jour les angles)



résultat.w = GL_EntityAngleX(Entity)
résultat.w = GL_EntityAngleY(Entity)
résultat.w = GL_EntityAngleZ(Entity)


Renvoie l'angle de l'entitée spécifiée


GL_AbsoluteRotateX(Entity,Angle,Sens,vitesse)
GL_AbsoluteRotateY(Entity,Angle,Sens,vitesse)
GL_AbsoluteRotateZ(Entity,Angle,Sens,vitesse)


Oriente l'entitée vers l'angle spécifié, dans la vitesse et le sens spécifié
"sens" doit etre un nombre entier entre 0 et 3
0 = sens le plus rapide
1 = sens trigonométrique
2 = sens des auguilles d'une montre
3= le plus long



Je me suis arreté a ModifyRotationCenter(Entity,x,y,z), que je commencais tout juste en fait...

Code : Tout sélectionner

   
; Game Library _ Rotations _
; Par Pacificator

   
   ;ANGLES INIT SESSION


   Declare EngineProcess()
   ProcedureDLL GL_InitRotationSys(NbrEntity,NbrCamera) 
   Global NbrEntity.w
   Structure Angles 
   AngleXZ.w
   AngleXY.w
   AngleYZ.w

   EndStructure

   
   Structure Rotation
   AngleXPas.w
   AngleYPas.w
   AngleZPas.w
   AngleXMod.w
   AngleYMod.w
   AngleZMod.w
   AngleXVit.w
   AngleYVit.w
   AngleZVit.w
   RotationpointX.w
   RotationpointY.w
   RotationpointZ.w
   EndStructure
   
   Dim EntityAngle.w(Entity)
   Dim Rotationlist.w(Entity)
   Dim CameraAngle.w(Camera)
   Processus = CreateThread(@EngineProcess(), Valeur) 
   EndProcedure
   
   ;ANGLES CONVERTIONS
   
   ProcedureDLL.f AngleRadiant(Angle)
    Result.f = 3.1415* angle/ 180
    ProcedureReturn Result
   EndProcedure
   
   ProcedureDLL.f AngleDegree(Angle)
    Result.f = 180 * angle / 3.1415
   ProcedureReturn Result
   EndProcedure
   
   ;ROTATIONCENTER
   
   ProcedureDLL ModifyRotationCenter(Entity,x,y,z)
   *Rotation.Rotation=@rotationlist
   *Rotation+Entity
   *rotation\RotationpointX= x
   *rotation\RotationpointY= y
   *rotation\RotationpointZ= z
   EndProcedure
   
;ANGLES RELATIVE SESSION


ProcedureDLL GL_RotateEntityY(Entity,Angle)
   *CameraAngle.Angles = @CameraAngle()
   *EntityAngle.Angles = @EntityAngle()

   *EntityAngle + Entity
   *EntityAngle\AngleXZ + Angle
   If *EntityAngle\AngleXZ < 0
     *EntityAngle\AngleXZ+360
   ElseIf *EntityAngle\AngleXZ >= 360
   *EntityAngle\AngleXZ-360
   EndIf
   RotateEntity(entity,angle,0,0)
EndProcedure 


ProcedureDLL GL_RotateEntityX(Entity,Angle)
  
   *CameraAngle.Angles = @CameraAngle()
   *EntityAngle.Angles = @EntityAngle()
   

   *EntityAngle+Entity
   *EntityAngle\AngleYZ + Angle
   If *EntityAngle\AngleYZ < 0
   *EntityAngle\AngleYZ+360
   ElseIf *EntityAngle\AngleYZ >= 360
   *EntityAngle\AngleYZ-360
   EndIf
   RotateEntity(entity,0,angle,0)
EndProcedure 

ProcedureDLL GL_RotateEntityZ(Entity,Angle)
*CameraAngle.Angles = @CameraAngle()
   *EntityAngle.Angles = @EntityAngle()
   
   *EntityAngle+Entity
   *EntityAngle\AngleXY+ Angle
   
   If *EntityAngle\AngleXY < 0
     *EntityAngle\AngleXY+360
   ElseIf *EntityAngle\AngleXY >= 360
   *EntityAngle\AngleXY-360
   EndIf
   RotateEntity(entity,0,0,angle)
EndProcedure 

;ANGLES DISPLAY SESSION

ProcedureDLL.f GL_EntityAngleX(Entity)
    *CameraAngle.Angles = @CameraAngle()
   *EntityAngle.Angles = @EntityAngle()
   *EntityAngle+Entity
   AngleX.w = *EntityAngle\AngleYZ   
   ProcedureReturn AngleX.w

EndProcedure 

ProcedureDLL.f GL_EntityAngleY(Entity)
   *CameraAngle.Angles = @CameraAngle()
   *EntityAngle.Angles = @EntityAngle()
   *EntityAngle+Entity
   AngleY.w = *EntityAngle\AngleXZ   
   ProcedureReturn AngleY.w

EndProcedure 

ProcedureDLL.f GL_EntityAngleZ(Entity)
   *CameraAngle.Angles = @CameraAngle()
   *EntityAngle.Angles = @EntityAngle()
   *EntityAngle+Entity
   AngleZ.w = *EntityAngle\AngleXY   
   ProcedureReturn AngleZ.w

EndProcedure 





;ANGLES ABSOLUTE SESSION

ProcedureDLL GL_AbsoluteRotateZ(Entity,Angle,Sens,vitesse)
    *CameraAngle.Angles = @CameraAngle()


Rotation.w=0
If angle<> GL_EntityAngleZ(entity)

If angle > GL_EntityAngleZ(entity)
DistanceTrigo= angle - GL_EntityAngleZ(entity)
ElseIf angle < GL_EntityAngleZ(entity)
DistanceTrigo= 360 - GL_EntityAngleZ(entity) + angle
EndIf 
DistanceATrigo= (360 - DistanceTrigo)

Select sens
Case 0
If DistanceTrigo < DistanceAtrigo
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse
mod = mod
Else 
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod
EndIf

Case 1
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse

Case 2
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod


Case 3
If DistanceTrigo > DistanceAtrigo
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse
Else 
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod
EndIf
EndSelect

*Rotation.Rotation=@Rotationlist()
*rotation+entity
*Rotation\AngleZPas = Pas
*Rotation\AngleZMod = Mod
*Rotation\AngleZVit = vit
EndIf

EndProcedure 


ProcedureDLL GL_AbsoluteRotateX(Entity,Angle,Sens,vitesse)
    *CameraAngle.Angles = @CameraAngle()


Rotation.w=0
If angle<> GL_EntityAngleX(entity)

If angle > GL_EntityAngleX(entity)
DistanceTrigo= angle - GL_EntityAngleX(entity)
ElseIf angle < GL_EntityAngleX(entity)
DistanceTrigo= 360 - GL_EntityAngleX(entity) + angle
EndIf 
DistanceATrigo= (360 - DistanceTrigo)

Select sens
Case 0
If DistanceTrigo < DistanceAtrigo
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse
mod = mod
Else 
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod
EndIf

Case 1
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse

Case 2
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod


Case 3
If DistanceTrigo > DistanceAtrigo
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse
Else 
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod
EndIf
EndSelect
*Rotation.Rotation=@Rotationlist()
*rotation+entity
*Rotation\AngleXPas = Pas
*Rotation\AngleXMod = Mod
*Rotation\AngleXVit = vit
EndIf

EndProcedure 

ProcedureDLL GL_AbsoluteRotateY(Entity,Angle,Sens,vitesse)
    *CameraAngle.Angles = @CameraAngle()


Rotation.w=0
If angle<> GL_EntityAngleY(entity)

If angle > GL_EntityAngleY(entity)
DistanceTrigo= angle - GL_EntityAngleY(entity)
ElseIf angle < GL_EntityAngleY(entity)
DistanceTrigo= 360 - GL_EntityAngleY(entity) + angle
EndIf 
DistanceATrigo= (360 - DistanceTrigo)

Select sens
Case 0
If DistanceTrigo < DistanceAtrigo
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse
mod = mod
Else 
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod
EndIf

Case 1
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse

Case 2
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod


Case 3
If DistanceTrigo > DistanceAtrigo
rotation = DistanceTrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = vitesse
Mod.w = rotation % vitesse
Else 
rotation = DistanceATrigo
If vitesse > rotation : vitesse = rotation : EndIf
Pas.w = rotation/vitesse
Pas= Round(pas,1)
vit = -vitesse
Mod.w = rotation % vitesse
mod = -mod
EndIf
EndSelect
*Rotation.Rotation=@Rotationlist()
*rotation+entity
*Rotation\AngleYPas = Pas
*Rotation\AngleYMod = Mod
*Rotation\AngleYVit = vit
EndIf

EndProcedure 


;PROCESS

Procedure EngineProcess()
Repeat
For k= 0 To NbrEntity
*Rotation.Rotation=@Rotationlist()
*Rotation + k

If *Rotation\AngleZPas > 1
GL_RotateEntityZ(k,*Rotation\AngleZVit) 
*Rotation\AngleZPas - 1
EndIf
If *Rotation\AngleZPas = 1
GL_RotateEntityZ(k,*Rotation\AngleZmod+*Rotation\AngleZVit)
*Rotation\AngleZPas - 1
EndIf 

If *Rotation\AngleXPas > 1
GL_RotateEntityX(k,*Rotation\AngleXVit) 
*Rotation\AngleXPas - 1
EndIf
If *Rotation\AngleXPas = 1
GL_RotateEntityX(k,*Rotation\AngleXmod + *Rotation\AngleXvit)
*Rotation\AngleXPas - 1
EndIf 

If *Rotation\AngleYPas > 1
GL_RotateEntityY(k,*Rotation\AngleYVit) 
*Rotation\AngleYPas - 1
EndIf
If *Rotation\AngleYPas = 1
GL_RotateEntityY(k,*Rotation\AngleYmod + *Rotation\AngleYVit)
*Rotation\AngleYPas - 1
EndIf 


Next k
Delay(10)
ForEver
EndProcedure
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ben tu sais , DBpro ne sait pas tout faire non plus , bcp utilise purebasic pour combler ses lacunes, et pour les collisions , bien que DPpro propose quelques commandes , certains préfèrent utiliser des dll spécialisées , comme Newton , et d'autres dont j'ai oublié le nom .
Bref, quelque soit le langage que tu vas choisir , selon la complexité de ce que tu veux faire , tu auras sûrement à chercher des compléments externes au langage.

Tu voulais faire quel genre de jeu ?
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

je n'ai pas l'intention de me remettre a dbpro, c'est le pire de tous celui la lol
j'hésite entre Blitz3d et 3d game studio...
Les demo de blitz sont pas mal du tout, mais ca manque un peu de rapidité, je sais pas ce que donne 3d game studio, et reste a voir ce que donne Blitzmax...

Je ne dis pas que pure c'est mauvais, je trouve bien au contraire qu'il est tres prometteur, la rapidité est impressionnante, mais actuellement pour la 3d, c'est pas au point...

J'aimerais bien faire un A-rpg (mais ca j'y arriverais pas tout seul)
Mais je ne savais pas vraiment quel genre de jeu j'allais faire, je voulais d'abord coder une lib qui facilite la création de jeu 3d sous purebasic. Apres les rotations, j'allais tenter de faire un systeme de trajectoires, de collision, et un éditeur de terrain... un petit moteur quoi :P

quoi qu'il en soit, je garde un oeil sur la communauté purebasiquéenne =)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

pour un RPG , à part les animations qui merdent complètement ,je ne vois pas ce qui t'empêche de le faire ??

tu n'as pas besoin d'une gestion sophistiquée des angles pour un rpg , enfin , je ne crois pas ?

dis puisque tu arrêtes ta lib sur les angles ,tu as le temps de faire un éditeur de particules ? :lol:

ça serait vraiment utile un truc comme ça , va falloir que je me décide à en faire un petit .
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Action RPG, des combats en temps réel je suppose...

Dri ;)
Pacificator
Messages : 43
Inscription : mer. 15/déc./2004 16:28

Message par Pacificator »

L'éditeur de particules c'est une bonne idée, mais j'y connais rien, je te laisse faire :lol:

effectivement, la gestion des angles n'a pas besoin d'être pointu pour un A-Rpg...Mais y pas mal d'autres problèmes, par exemple les meshs ne peuvent etre décomposé en sous objets... (pour les armes les armures...)
Pour les animation, on pourrait programmer un petit moteur qui décompose manuellement chaque mouvement...
Et les collisions, c super important ca...
Par exemple je donne un coup d'épée, a un monstre: comment faire un systeme de collision qui reconnais la surface la posistion et l'orientation exact de l'épée et qui detecte quand elle touche le monstre? enigmatique...
Et au sujet des lumières, j'ai pas reussi a les faire marcher et pourtant dans le sample, ca semble marcher...
il y a tant d'obstable...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

je ne connais pas blitz , mais à mon avis , ce type de collision ,il ne sait pas les gérer non plus .pour les lumières et les animations ,j'espère que la mise à jour va remédier à ça .

Pour l"éditeur de particules , je n'y connais rien non plus , mais je vais rendre accessible toutes les commandes qui existent pour modifier rapidement un paramètre et faire des tests .
ceci dit , pour avoir vu quelques exemples de particules, à mon avis , pour faire quelque chose de bien , c'est un peu plus complexe que ça :)

j'ai vu un exemple de fumée que j'aimerais reproduire, ça me servira dans de nombreux jeux , fumée au démarrage d'un véhicule , fumée à la sortie d'un canon après un tir , etc ...
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Oui c'est pas simple les particules, et il est meme plus facil parfois d'utiliser les billboards :P
Répondre