PureBasic

Forums PureBasic
Nous sommes le Sam 25/Mai/2013 22:21

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 23 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Problèmes dans les exemples 3D ou avec certaines fonctions
MessagePosté: Ven 27/Avr/2012 13:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
salut
Etant donné que je fais quelques tests avec la 3D en ce moment, je rencontre pas mal de bugs ou de fonctions qui ne marchent plus.
Pouvez-vous me confirmer ça, avant que je ne poste ma rafale de bug sur le forum anglais ? :D

- CreateWater() : ne marche plus, la compil plante
- createTerrain() : le terrain n'apparait pas
- lightcolor() : la compilation plante
- specialeffects : ça ne fait rien
- l'alpha des particules buguent avec un fog
- staticgeometry : j'obtiens une invalid memory access sur ce genre de code (exemple des static geometry)

Code:
StaticGeometry =  CreateStaticGeometry(#PB_Any, 1000000, 1000000, 1000000, #True)
AddStaticGeometryEntity(StaticGeometry, #mesh, 4000,0,4000,200,200,200)
AddStaticGeometryEntity(StaticGeometry, 1, 1500,0,1500,200,200,200) ; ça plante ici



Quelques questions
- peut-on changer l'intensité d'une light ?
- peut-on changer le "range" d'une light (distance à partir de laquelle l'intensité lumineuse diminue) ?
J'ai vu que le range dépendait du maillage du mesh, mais je me demandais si on pouvait définir ça directement sur les lights (un peu comme pour le spot)

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Ven 27/Avr/2012 14:14 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 21/Mai/2005 17:50
Messages: 895
tu utilises la dernière version de PB ?

_________________
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Ven 27/Avr/2012 15:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
oui, la 4.61beta2

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Ven 27/Avr/2012 18:15 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
Citation:
- CreateWater() : ne marche plus, la compil plante
- createTerrain() : le terrain n'apparait pas
- lightcolor() : la compilation plante
- specialeffects : ça ne fait rien
- l'alpha des particules buguent avec un fog
- staticgeometry : j'obtiens une invalid memory access sur ce genre de code (exemple des static geometry)


Ces bogues sont connus.

LightColor() n'existe plus , il est remplacé par LightDiffuseColor(), il faudra mettre la doc à jour.

La syntaxe de la commande AddStaticGeometryEntity() est
AddStaticGeometryEntity(#StaticGeometry, EntityID, x, y, z [, ScaleX, ScaleY, ScaleZ])
Il faut utiliser la commande EntityID(), et un contrôle sera nécessaire pour éviter que tu obtiennes un IMA si tu utilises autre chose qu'un ID d'une entity.

Concernant l'alpha des particules, Tu as un exemple pour tester ?

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Sam 28/Avr/2012 11:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
comtois a écrit:
Ces bogues sont connus.
ok, j'imagine qu'il est prévu de les corriger alors ^^ (en ce moment, y'a beaucoup de correction de bugs, c'est classe :D)).

Citation:
Concernant l'alpha des particules, Tu as un exemple pour tester ?
en fait, c'est très simple, il suffit d'ouvrir le fichier d'exemple :
Particle.pb

et d'ajouter par exemple cette ligne avant repeat :
Code:
Fog(RGB(255,255,255),10,10,500)

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Sam 28/Avr/2012 12:10 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
Ok, je n'ai pas testé mais je comprends ce que tu veux dire maintenant, le problème est le même avec les SkyBox et SkyDome avec un fog.
Pour prendre en compte le fog ça nécessite des paramètres supplémentaires pour ces fonctions, voire une nouvelle fonction pour les materials.

C'est donc une suggestion d'amélioration plutôt qu'un bogue :)

Comme pour toutes les suggestions, au final c'est Fred qui décide ... wait and see !

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Sam 28/Avr/2012 12:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
comtois a écrit:
Ok, je n'ai pas testé mais je comprends ce que tu veux dire maintenant, le problème est le même avec les SkyBox et SkyDome avec un fog.
Pour prendre en compte le fog ça nécessite des paramètres supplémentaires pour ces fonctions, voire une nouvelle fonction pour les materials.

C'est donc une suggestion d'amélioration plutôt qu'un bogue :)


en fait, non, ce n'est pas même problème ;).

Avec les skybox ou skydom, le fog laisse apparaitre la boite, car il se "colle" aux coin de celle-ci.
Avec les particules et d'une manière général les billboard avec fond transparent, le fog supprime carrément la couche alpha de la texture.
Donc, ça fait penser à un bug :mrgreen:

Mais comme tu le dis :
Citation:
Comme pour toutes les suggestions, au final c'est Fred qui décide ... wait and see !

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Sam 28/Avr/2012 15:15 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 4494
Tu peux désactiver le fog sur un material donné, voire ajouter un fog spécifique à un material. Tu peux le faire via un script

Code:
material Examples/Particles
{
   technique
   {
      pass
      {
      
         lighting off
         depth_write on
         scene_blend add
            fog_override true
         
         texture_unit
         {
            texture flare.png
         }

      }
   }
}


Et dans le programme Particles.pb

Code:
;     LoadTexture(0, "flare.png")
;     
;     CreateMaterial(0, TextureID(0))
;     DisableMaterialLighting(0, 1)
;     MaterialBlendingMode   (0, #PB_Material_Add)
      GetScriptMaterial(0, "Examples/Particles")   


Ou tu peux aussi essayer de comprendre ça
En clair, tu peux faire ce que tu veux via les scripts :)

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Sam 28/Avr/2012 15:39 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
comtois a écrit:
Tu peux désactiver le fog sur un material donné, voire ajouter un fog spécifique à un material. Tu peux le faire via un script

Code:
material Examples/Particles
{
   technique
   {
      pass
      {
      
         lighting off
         depth_write on
         scene_blend add
            fog_override true
         
         texture_unit
         {
            texture flare.png
         }

      }
   }
}


Et dans le programme Particles.pb

Code:
;     LoadTexture(0, "flare.png")
;     
;     CreateMaterial(0, TextureID(0))
;     DisableMaterialLighting(0, 1)
;     MaterialBlendingMode   (0, #PB_Material_Add)
      GetScriptMaterial(0, "Examples/Particles")   


Ou tu peux aussi essayer de comprendre ça
En clair, tu peux faire ce que tu veux via les scripts :)
hou, mais c'est top moumoute ça :D

Je crois qu'il faudrait ajouter plein d'exemples de ce type pour la 3D en purebasic, histoire d emontrer tout ce que l'on peut faire en pure avec Ogre.

Par exemple, je pense que s'il y avait dans les exemples :
- des exemples de shaders envmap, reflexion, refraction, fresnel, bump/normal map, etc..
- des exemples de post fx (compositor) comme bloom, distortion, motion blur, depth of field
- des exemples avec les ombres en soft shadows (j'imagine qu'on doit pouvoir le faire avec les scripts aussi ^^)

et un méga exemple avec tout ça d'activer, ce serait tip-top, ça donnerait un sérieux coup de boost à Purebasic pour ceux qui recherchent un langage puissant et rapide à développer pour faire de la 3D pro :D.

je peux me charger des modèles 3D si ça intéresse quelqu'un pour un méga exemple avec ce genre de chose ;).

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Sam 28/Avr/2012 16:49 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5229
J’applaudis l'idée :P

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Sam 28/Avr/2012 20:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
bon, j'ai continué à bosser sur mon éditeur 3D et ça commence à être très intéressant :).

Nouveautés :
- on peut positionner tous les objets en Z aussi maintenant.
- on peut positionner les lights (x, y et Z), avant ça bugguait. On peut gérer les ombres ou non.

Sinon, j'ai un peu tester les shaders et j'ai réussi à faire du "fake" Rampshader (comme blender). C'est classe.
Et les multitextures aussi c'est cool.

Je cherche un exemple qui fonctionne pour tous les modèles pour du normalmap/specular light, mais sinon, ça commence à le faire ^^.

Un des dernier screenshot (un de mes personnages) :
Image

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Sam 28/Avr/2012 22:01 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 27/Jan/2005 19:07
Messages: 1831
Petite question :)
Ce développement de jeu est fait pour la vente ?
J'ai parcouru le site, il est marqué "disponible début ..." mais cela ne dit en rien si c'est un jeu "libre" ou "commercial" !

L'éditeur de personnage montré, est uniquement fait pour le jeu désigné, ou l'on peut l'imaginer servant pas exemple
à créer des personnages 3D (?) ex nihilo pour les exporter vers tout autres programmes 3D (?) Blender... ?

_________________
Est beau ce qui plaît sans concept :)
Speedy Galerie


Dernière édition par Frenchy Pilou le Mar 01/Mai/2012 14:11, édité 1 fois.

Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Lun 30/Avr/2012 15:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
Frenchy Pilou a écrit:
Ce développement de jeu est fait pour la vente ?
J'ai parcouru le site, il est marqué "disponible début ..." mais cela ne dit en rien si c'est un jeu "libre" ou "commercial" !
oui, la plupart des jeux que je développe sont fait, pour le moment, pour être commercialisé si possible (il faut bien que je vive et que je rentabilise le développement des mes jeux ;)).

Cela dit, je peux filer des exemples fonctions ou de techniques sans problèmes si on me demande, je l'ai déjà fait ;).

Citation:
L'éditeur de personnage montré, est uniquement fait pour le jeu désigné, où l'on peut l'imaginer servant pas exemple
à créer des personnages 3D (?) ex nihilo pour les exporter vers tout autres programmes 3D (?) Blender... ?
en fait, ce n'est pas un éditeur de personnage, mais un éditeur de scène/level.
D'ailleurs, je me suis gourré de sujet pour répondre juste avant ^^ , le sujet initial c'est :
viewtopic.php?f=13&t=12749

En gros, celui-ci servira à créer une scène ou level de jeu.
Je vais essayer de faire un système avec import/export du level en dll, histoire que l'on puisse sortir n'importe quoi comme fichier de sortie.
Mais ce n'est pas du tout un modeleur comme blender, car ça utilise les *.mesh du moteur Ogre intégré en pure. On ne pourra que bouger les objets, ajouter des lights, et sans doute paramètres quelques objets spéciaux (mobs, pnj, coffre, téléporteurs, etc..).

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Mar 01/Mai/2012 1:33 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5229
Encore quelques mois et tu vas nous faire un Pure Game Maker !
Ce jour là j'apporterai moult offrandes au pied de la statue dorée que j'aurai érigé en ton honneur :mrgreen:

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Problèmes dans les exemples 3D ou avec certaines fonctio
MessagePosté: Mar 01/Mai/2012 9:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 907
J'ai trouvé un sujet dans lequel des utilisateurs ont fixé certains bugs des démos 3D de purebasic.

Je pense que l'exemple de ThirdPersonn.pb est vraiment meilleur tel que donné dans ce sujet :
http://www.purebasic.fr/english/viewtop ... 15&t=48108

La démo fonctionne vraiment bien mieux, le personnage arrête ses animations lorsque l'on arrête d'appuyer sur les flèches, etc..
Bref, je pense qu'il serait judicieux de remplacer l'exemple thirdpersonn.pb par le code qu'ils ont corrigé.

Voici une copie (à placer dans le même dossier que celui où se trouve thirdpersonn.pb). je me suis permis de changer 2 ou 3 bricoles (ajout d'une light sans ombre et worldshadows en additive, modification du saut pour que ce soit un peu plus réaliste) :
Code:
;
; ------------------------------------------------------------
;
;   PureBasic - Third Person
;
;    (c) 2011 - Fantaisie Software
;
; ------------------------------------------------------------
;

IncludeFile "Screen3DRequester.pb"

#PlayerSpeed = 60
#CameraSpeed = 10


Structure Vector3
  x.f
  y.f
  z.f
EndStructure

Structure s_Key
  Up.i
  Down.i
  Left.i
  Right.i
  StrafeLeft.i
  StrafeRight.i
  Jump.i
EndStructure

Structure s_Entity
  Entity.i
  EntityBody.i
  BodyOffsetY.f
  elapsedTime.f
  Key.s_Key
  MainNode.i
  SightNode.i
  CameraNode.i
  ForwardNode.i
  StrafeNode.i
EndStructure

Structure s_Camera
  Camera.i
  Tightness.f
  CameraNode.i
  TargetNode.i
EndStructure   

Macro GetNodePosition(Position, Node)
  Position\x = NodeX(Node)
  Position\y = NodeY(Node)
  Position\z = NodeZ(Node)
EndMacro

Macro SubVector3(V, V1, V2)
  V\x = V1\x - V2\x
  V\y = V1\y - V2\y
  V\z = V1\z - V2\z
EndMacro

;-Declare
Declare HandleEntity(*Entity.s_Entity)
Declare CameraTrack(*Camera.s_Camera, *Entity.s_Entity)
Declare OnGround(*Entity.s_Entity)
Declare MakeColimacon(PX.f, PY.f, PZ.f, Length.i, Height.i, Width.i, Stair.i)
Declare MakeStair(PX.f, PY.f, PZ.f, Length.i, Height.i, Width.i, Stair.i)
Declare AddObjects()

Define Robot.s_Entity
Define Camera.s_Camera

If InitEngine3D()

  InitSprite()
  InitKeyboard()
  InitMouse()

  If Screen3DRequester()
    KeyboardMode(#PB_Keyboard_International)
   
    Add3DArchive("../Data/Textures"        , #PB_3DArchive_FileSystem)
    Add3DArchive("../Data/Models"          , #PB_3DArchive_FileSystem)
    Add3DArchive("../Data/Scripts"         , #PB_3DArchive_FileSystem)
    Add3DArchive("../Data/GUI"             , #PB_3DArchive_FileSystem)
    Add3DArchive("../Data/Packs/desert.zip", #PB_3DArchive_Zip)
    Parse3DScripts()
   
    WorldShadows(#PB_Shadow_Additive, 50)
   
    ;Texture
    CreateTexture(1, 256, 256)
    StartDrawing(TextureOutput(1))
    Box(0, 0, 256, 256, $002255)
    DrawingMode(#PB_2DDrawing_Outlined)
    Box(0, 0, 256, 256, $FFFFFF)
    Box(10, 10, 236, 236, $FFFF)
    StopDrawing()
   
    ;Material
    CreateMaterial(0, LoadTexture(0, "r2skin.jpg"))
    CreateMaterial(1, TextureID(1))
    CreateMaterial(2, LoadTexture(2, "Dirt.jpg"))
    CreateMaterial(3, LoadTexture(3, "Wood.jpg"))
    GetScriptMaterial(4, "Scene/GroundBlend")
   
    ;Robot
    LoadMesh   (0, "robot.mesh")
    CreateEntity (0, MeshID(0), #PB_Material_None);
    AnimateEntity(0, "Stop")    ;AnimateEntity(0, "Idle")
   
    ;Robot Body
    CreateEntity(1, MeshID(0), #PB_Material_None, 0, 26, 0)
    HideEntity(1, 1)
   
    ;Ground
    CreatePlane(2, 5000, 5000, 100, 100, 100, 100)
    CreateEntity(2, MeshID(2), MaterialID(1), 0, 0, 0)
   
    ;Body
    EntityPhysicBody(1, #PB_Entity_CapsuleBody, 1, 0, 0)
    EntityPhysicBody(2, #PB_Entity_StaticBody)
   
    ;Add some statics and dynamics objects
    CreateCube(3, 1)
    AddObjects()
   
    ;Add some stairs
    MakeColimacon(120, 0, 120, 130, 7, 48, 15)
    MakeStair(360, 0, 220, 130, 11, 48, 15)
   
    ;-Light
    CreateLight(0,RGB(155,155,155),700,500,0)
    CreateLight(1,RGB(235, 175, 123),100,50,500)
    DisableLightShadows(1, 1)
    AmbientColor(RGB(85,85,85))
   
    ; Skybox
    SkyBox("desert07.jpg")
   
    ;
    With Robot
      \Entity = 0
      \EntityBody = 1
      \BodyOffsetY = 43
     
      \Key\Down        = #PB_Key_Down
      \Key\Left        = #PB_Key_Left
      \Key\Right       = #PB_Key_Right
      \Key\Up          = #PB_Key_Up
      \Key\StrafeLeft  = #PB_Key_X
      \Key\StrafeRight = #PB_Key_C
      \Key\Jump        = #PB_Key_Space
     
      \MainNode    = CreateNode(#PB_Any) ; Entity position
      \SightNode   = CreateNode(#PB_Any,  120,  20,  0) ; For cameraLookAt
      \CameraNode  = CreateNode(#PB_Any, -140, 100,  0) ; Camera position
      \ForwardNode = CreateNode(#PB_Any,    1,   0,  0) ; Direction normalized
      \StrafeNode  = CreateNode(#PB_Any,    0,   0, -1) ; Direction normalized
     
      AttachNodeObject(\MainNode, NodeID(\SightNode)  , #PB_Node_Node)
      AttachNodeObject(\MainNode, NodeID(\CameraNode) , #PB_Node_Node)   
      AttachNodeObject(\MainNode, NodeID(\ForwardNode), #PB_Node_Node)     
      AttachNodeObject(\MainNode, NodeID(\StrafeNode) , #PB_Node_Node)   
      AttachNodeObject(\MainNode, EntityID(\Entity)   , #PB_Node_Entity)
    EndWith
   
    ;-Camera
    CreateCamera(0, 0, 0, 100, 100)
    With Camera
      \Camera = 0
      \Tightness = 0.035
      ; Camera use 2 nodes
      \CameraNode = CreateNode(#PB_Any, -3000, 700, 0) ; Camera position
      \TargetNode = CreateNode(#PB_Any) ; For cameraLookAt
      AttachNodeObject(\CameraNode, CameraID(\Camera), #PB_Node_Camera)
    EndWith
   
    ;-Main loop 
   
    If ExamineMouse()
      MouseDeltaX()
      MouseDeltaY()
    EndIf
   
    Repeat
      Screen3DEvents()
     
      If Engine3DFrameRate(#PB_Engine3D_Current)
        Robot\elapsedTime = 40/Engine3DFrameRate(#PB_Engine3D_Current)
      EndIf       
     
      HandleEntity(@Robot)     
      CameraTrack(@Camera, @Robot)
     
      RenderWorld(50)
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf

Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End

Procedure OnGround(*Entity.s_Entity)
  With *Entity
    ProcedureReturn RayCollide(NodeX(\MainNode),  NodeY(\MainNode)+3, NodeZ(\MainNode), NodeX(\MainNode), NodeY(\MainNode),  NodeZ(\MainNode))
  EndWith
EndProcedure

Procedure IsStair(*Entity.s_Entity)
  Protected.f x, y, z
  With *Entity
    x = (NodeX(\ForwardNode) - NodeX(\MainNode))*30
    y = (NodeY(\ForwardNode) - NodeY(\MainNode))*30
    z = (NodeZ(\ForwardNode) - NodeZ(\MainNode))*30
    ;CreateLine3D(20, NodeX(\MainNode), NodeY(\MainNode)+20, NodeZ(\MainNode), $FFFF, NodeX(\MainNode)+V\x, NodeY(\MainNode)+V\y+20,  NodeZ(\MainNode)+V\z, $FFFF)
    Ray1 = RayCollide(NodeX(\MainNode), NodeY(\MainNode)+10, NodeZ(\MainNode),  NodeX(\MainNode)+x, NodeY(\MainNode)+y+10,  NodeZ(\MainNode)+z)
    Ray2 = RayCollide(NodeX(\MainNode), NodeY(\MainNode)+20, NodeZ(\MainNode),  NodeX(\MainNode)+x, NodeY(\MainNode)+y+20,  NodeZ(\MainNode)+z)
    If Ray1 And Ray2=0
      ProcedureReturn 1
    EndIf
    ProcedureReturn 0
  EndWith
EndProcedure

Procedure HandleEntity(*Entity.s_Entity)
  Protected.Vector3 Forward, Strafe, PosMain, PosDir, PosStrafe
  Protected.f Speed, Speed2, x, y, MouseX, MouseY, Action.s
  Static Jump.f, MemJump.i, Rot.Vector3, Trans.Vector3, Clic, LastAction.s

  With *Entity
    GetNodePosition(PosMain, \MainNode)
    GetNodePosition(PosDir, \ForwardNode)
    GetNodePosition(PosStrafe, \StrafeNode)
    SubVector3(Forward, PosDir, PosMain)
    SubVector3(Strafe, PosStrafe, PosMain)
   
    Speed = #PlayerSpeed * \elapsedTime
    Speed2 = Speed / 2
   
    If ExamineKeyboard()
     
      If KeyboardReleased(#PB_Key_F5)
        WorldDebug(#PB_World_DebugBody)
      ElseIf KeyboardReleased(#PB_Key_F6)
        WorldDebug(#PB_World_DebugEntity)
      ElseIf KeyboardReleased(#PB_Key_F7)
        WorldDebug(#PB_World_DebugNone)
      EndIf
     
      If KeyboardPushed(\Key\Jump) And OnGround(*Entity)
        Jump = 4
        MemJump = 1
      EndIf
     
      Rot\x * 0.30
      Rot\y * 0.30
      Rot\z * 0.30
      Trans\x * 0.20
      Trans\y = Jump
      Trans\z * 0.20
     
      Action = "Stop"      ;Action = "Idle"
     
      If KeyboardPushed(\Key\Up)
        Trans\x + Forward\x * Speed
        Trans\z + Forward\z * Speed
        Action = "Walk"
      ElseIf KeyboardPushed(\Key\Down)
        Trans\x + Forward\x * -Speed2
        Trans\z + Forward\z * -Speed2
        Action = "Walk"
      EndIf
     
      If KeyboardPushed(\Key\Left)
        Rot\y + 2 * \elapsedTime
        If Action <> "Walk"
          action="Idle"
        EndIf       
      ElseIf KeyboardPushed(\Key\Right)
        Rot\y - 2 * \elapsedTime
        If Action <> "Walk"
          action="Idle"
        EndIf
      EndIf
     
      If KeyboardPushed(\Key\StrafeLeft)
        Trans\x + Strafe\x * Speed2
        Trans\z + Strafe\z * Speed2
        Action = "Walk"
      ElseIf KeyboardPushed(\Key\StrafeRight)
        Trans\x + Strafe\x * -Speed2
        Trans\z + Strafe\z * -Speed2
        Action = "Walk"
      EndIf
     
      If Action <> LastAction
        LastAction = Action
        AnimateEntity(0, Action)
      EndIf
     
      If OnGround(*Entity)
        Jump = 0
      ElseIf MemJump
        Jump + 20
        If Jump > 80
          MemJump = 0
        EndIf
      Else
        Jump - 9 * \elapsedTime
      EndIf
     
     
     
     
     
     
     
      If IsStair(*Entity) And Jump = 0 And ( Abs(Trans\x)>=Speed / 2 Or Abs(Trans\z)>=Speed / 2)
        Jump = 22 ; Or more
      EndIf
     
    EndIf
   
    MoveEntity  (\EntityBody, Trans\x, Trans\y, Trans\z)
    RotateEntity(\EntityBody, 0, Rot\y, 0, #PB_Relative)   
   
    NodeLocate(\MainNode, EntityX(\EntityBody), EntityY(\EntityBody)-\BodyOffsetY, EntityZ(\EntityBody))
    RotateNode(\MainNode, 0, EntityYaw(\EntityBody), 0)
  EndWith   
EndProcedure


Procedure CameraTrack(*Camera.s_Camera, *Entity.s_Entity)
  Protected CameraPosition.Vector3, TargetPosition.Vector3, Temp.Vector3
  Protected V1.Vector3, V2.Vector3, x.f, y.f, z.f

  GetNodePosition(CameraPosition, *Entity\CameraNode)
  GetNodePosition(TargetPosition, *Entity\SightNode)
  x = NodeX(*Camera\CameraNode)
  y = NodeY(*Camera\CameraNode)
  z = NodeZ(*Camera\CameraNode)
  x = (CameraPosition\x - x) *  *Camera\Tightness
  y = (CameraPosition\y - y) *  *Camera\Tightness
  z = (CameraPosition\z - z) *  *Camera\Tightness
  MoveNode(*Camera\CameraNode, x, y, z)

  x = NodeX(*Camera\TargetNode)
  y = NodeY(*Camera\TargetNode)
  z = NodeZ(*Camera\TargetNode)
  x = (TargetPosition\x - x) *  *Camera\Tightness
  y = (TargetPosition\y - y) *  *Camera\Tightness
  z = (TargetPosition\z - z) *  *Camera\Tightness
  MoveNode(*Camera\TargetNode, x, y, z)

  CameraLookAt(*Camera\Camera, NodeX(*Camera\TargetNode), NodeY(*Camera\TargetNode), NodeZ(*Camera\TargetNode))

EndProcedure


Procedure MakeColimacon(PX.f, PY.f, PZ.f, Length.i, Height.i, Width.i, Stair.i)
  Protected.f Angle
  Protected.i a, Ent

  For a = 1 To Stair
    Ent = CreateEntity(#PB_Any, MeshID(3), MaterialID(2))
    ScaleEntity(Ent, Length, Height, Width)
    EntityLocate(Ent, PX + Cos(Radian(Angle)) * Width * 5, PY + (a-1) * Height * 4, PZ -Sin(Radian(Angle)) * Width * 5)
    RotateEntity(Ent, 0, Angle, 0)
    EntityPhysicBody(Ent, #PB_Entity_StaticBody)
    Angle = Mod(Angle + 30, 360)
  Next
EndProcedure

Procedure MakeStair(PX.f, PY.f, PZ.f, Length.i, Height.i, Width.i, Stair.i)
  Protected.i a, Ent, Nb
  Protected.f Size, Delta, H

  For a = 1 To Stair
    Ent = CreateEntity(#PB_Any, MeshID(3), MaterialID(2))
    ScaleEntity(Ent, Length, Height, Width)
    EntityLocate(Ent, PX, PY + (a-1) * Height, PZ + (a-1) * Width * 0.8)
    EntityPhysicBody(Ent, #PB_Entity_StaticBody)
  Next a

  ;Add a plateform
  Ent = CreateEntity(#PB_Any, MeshID(3), MaterialID(2))
  ScaleEntity(Ent, Length*5, Height, Width*5)
  EntityLocate(Ent, PX, PY + (a-1) * Height, PZ + (a-1) * Width)
  EntityPhysicBody(Ent, #PB_Entity_StaticBody)

  ;Add Pyramid
  Nb = 7
  Delta = 0.01
  Size = 20
  H = EntityY(Ent) + Height/2
  For j = 0 To Nb
    For i= 0 To Nb-j
      Ent = CreateEntity(#PB_Any, MeshID(3), MaterialID(4))
      ScaleEntity(Ent, Size, Size, Size)
      EntityPhysicBody(Ent, #PB_Entity_BoxBody, 0.5)
      EntityLocate(Ent, 340 +  j * ((Size) / 2) + i * Size, H + ((Size) / 2) + (j * (Size)), 890)
    Next
  Next
EndProcedure

Procedure AddObjects()
  Protected Size.Vector3
  Protected.f x, z
  Protected.i Ent, i

  For i = 0 To 100
    If Random(1)
      Size\x = Random(60) + 30
      Size\y = Random(60) + 30
      Size\z = Random(60) + 30     
      Volume.f = Size\x * Size\y * Size\z
      Ent=CreateEntity(#PB_Any, MeshID(3), MaterialID(3), Random(5000)-2600, 100, Random(5000)-2500)
      RotateEntity(Ent, 0, Random(360), 0)
      ScaleEntity(ent, Size\x, Size\y, Size\z)       
      EntityPhysicBody(Ent, #PB_Entity_BoxBody, (Volume / 7000), 0, 2)
    Else
      Size\x = Random( 60) + 30
      Size\y = Random(160) + 30
      Size\z = Random( 60) + 30     
     
      Repeat
        x = Random(5000)-2500
      Until x < -400 Or x > 400
     
      Repeat
        z = Random(5000)-2500
      Until z < -400 Or z > 400
     
      Ent=CreateEntity(#PB_Any, MeshID(3), MaterialID(2), x, Size\y/2 + Random(90) , z)
      RotateEntity(Ent, 0, Random(360), 0)
      ScaleEntity(Ent, Size\x, Size\y, Size\z)
      EntityPhysicBody(Ent, #PB_Entity_StaticBody)   
    EndIf
   
  Next
EndProcedure


A propos de cette démo,


Ar-S a écrit:
Encore quelques mois et tu vas nous faire un Pure Game Maker !
non, c'est juste un simple éditeur de level ;). Ca permettra de créer/charger/modifier/enregistrer des niveaux de jeux, mais on devra faire tout le reste du code quand même ;) (gameplay, interaction pnj/player/mob, interaction player/objet, etc..).

Citation:
Ce jour là j'apporterai moult offrandes au pied de la statue dorée que j'aurai érigé en ton honneur :mrgreen:
fais plutôt ça pour Fred, c'est lui qu'il faut remercier (et G-rom et tmyke pour la 3D aussi grandement :D).

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 23 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye