Un petit coup de pouce (Je sais encore un ..)

Programmation avancée de jeux en PureBasic
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Un petit coup de pouce (Je sais encore un ..)

Message par CORBASE »

Pour faire un circuit à la pureRacer, sa tourne comment ?

On fait pas de terrain la ?

Enfin, le truc c'est que j'essaye de bien comprendre la 3D :p
T€r$@k€n
Messages : 42
Inscription : ven. 23/janv./2004 18:49

Message par T€r$@k€n »

Je crois que PureRacer est en 2d et joue sur la profondeur de sprites.
Image
_______________________________________
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Ok merci

Sinon pour faire un circuit en 3D, juste le cricuit, on peux le faire avec un CreateTerrain() ?
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

pureracer est fait avec des sprites 3D , je crois que le source était dispo sur le site de l'auteur ? ou je confonds avec un autre code ?

Et je crois qu'il va faire une version en 3D .

Pour ton circuit, tu peux essayer de le faire avec un terrain,Pourquoi pas.
mais l'intérêt d'un terrain c'est de créer un volume , si tu fais un circuit plat ,ce n'est peut-être pas utile ?

Remarque si , tu peux gérer les collisions en jouant sur la hauteur du terrain , en relevant les bords du circuit , et en testant la position en hauteur sur le terrain , ça peut te faire une gestion de collision simple .

J'avais commencé avec un éditeur de map de mon cru , à la façon des maps 2D qui assemblent des tiles , pour créer un circuit en 3D , le moteur affiche des crénelures entre les pièces ,ou alors il y a des jours , je n'aime pas trop l'aspect , bon je n'ai pas trop cherché non plus pour améliorer le truc , c'était un bout d'essai, mais ça rendait quand même déjà mieux que mon autre essai avec seulement une texture en guise de circuit !

Bon je ne suis pas bien placé pour donner des conseils , je n'ai aucune idée de la façon la mieux adaptée pour créer un jeu de course :)

J'ai fait une petite tentative très rapide , pour me faire une petite idée des possibilités 3D de PB . ça n'a rien à voir avec un jeu de course ,il y a tout à reprendre .

Et ensuite , le plus dur , ça reste la gestion de la voiture :)
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Ok merci Comtois.

Par contre, ya pas moyen d'essayer ton editeur de Map :P

Bah pour la gestion de la voiture, au départ je vais essayer de faire simple, un mesh avec un MoveEntity.

On se moque pas, j'apprend :P

En tout cas merci pour votre aide
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

CORBASE a écrit :Par contre, ya pas moyen d'essayer ton editeur de Map :P
Ben , y'a vraiment que moi qui peut l'utiliser , il est pas fini , je dirais même qu'il est entièrement à reprendre , je dois bricoler un peu le code pour l'adapter selon ce que je fais , pas terrible pour le distribuer hein ? :)

mais tu peux faire ça très simplement avec des datas ou sur le site de polux , il a mis un petit éditeur très simple , que tu peux adapter pour créer ton circuit .

le principe avec des datas

Data.w 1,1,1,2,3,1,1
Data.w 1,1,2,3,4,1,1
etc

tu décris ton circuit dans les datas , avec
1 = texture herbe
2 = texture virage à droite
3 = texture virage à gauche
4 = texture ligne droite verticale
5 = texture ligne droite horizontale

c'est un exemple

ensuite pour construire ton circuit , tu appliques tes textures à un mesh de type plain , il ne contient que deux polygones , et tu places tes meshs comme pour une map 2D

voila les datas pour faire un plain

Code : Tout sélectionner

;-Mesh
CreateMesh(#MeshPlain) ;Plain 
SetMeshData(#MeshPlain, 0, ?PlainPoints      , 4)
SetMeshData(#MeshPlain, 1, ?PlainTriangles   , 4)
SetMeshData(#MeshPlain, 2, ?PlainTextures    , 4)

datasection

PlainPoints:
Data.f -0.5, 0, -0.5 
Data.f 0.5 , 0, -0.5 
Data.f 0.5 , 0, 0.5 
Data.f -0.5, 0, 0.5 

PlainTriangles:
Data.w 0, 1, 2 
Data.w 0, 2, 3 
Data.w 2, 1, 0 
Data.w 3, 2, 0

PlainTextures:
Data.f 0, 0 
Data.f 1, 0 
Data.f 1, 1   
Data.f 0, 1

enddatasection
et ensuite ,tu pourras créer des entitys avec tes textures

Code : Tout sélectionner

CreateEntity(NoEntity , MeshID(NoMesh) , MaterialID(Type))
ScaleEntity(NoEntity , #TailleEntity , #TailleEntity , #TailleEntity) 
EntityLocate(NoEntity , x * #TailleEntity , EntityH , z * #TailleEntity)
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Merci pour le code c'est cool, j'essayerais plus tard, car la j'essaye de comprendre comment mettre un mesh sur un terrain, voici mon code, je n'est que le terrain, et je ne voit pas mon mesh :

Code : Tout sélectionner

;- Robot   
    LoadMesh   (#RobotMesh   , "Robot.mesh")
    LoadTexture(#RobotTexture, "r2skin.jpg")
    
    CreateMaterial(0, TextureID(#RobotTexture))
    
    CreateEntity(#Robot, MeshID(#RobotMesh), MaterialID(0))
    EntityMaterial(#Robot, MaterialID(0))
    
    AnimateEntity(#Robot, "Walk")
    
    DisableMaterialLighting(0, 1)
    
    MaterialAmbientColor(0, RGB(100, 100, 100))
    MaterialSpecularColor(0, RGB(255, 255, 255))
    ScrollMaterial(0, 0.15, 0, 1)
        
    CreateLight(0, RGB(0,0,255), 100.0, 0, 0)
    LightSpecularColor(0, RGB(255, 0, 0))

;- Terrain
      If LoadTexture(1, "terrain_tex3.png")=0  
       MessageRequester("","Error LoadTexture",0):End:EndIf 
      CreateMaterial(1,TextureID(1)) 

      If CreateTerrain("terrain.png", MaterialID(1), 0.5, 0.6, 0.5, 0.5) = 0 
      MessageRequester("","Error CreateTerrain",0):End:EndIf 
          
    SkyBox("Stevecube.jpg")
   
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 128, 25, 128)
Si quelqu'unpourra m'aider sur ce coup la, ça serait vraiment cool :p

Et encore merci Comtois pour ton aide INESTIMABLE !
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

j'ai mis un source 3D ici , ça peut déjà te donner quelques idées
regarde la gestion de la camera dans la procedure gestioncamera()
il y a des trucs que tu peux supprimer pour faire simple au début

http://purebasic.hmt-forum.com/viewtopic.php?t=91

le principe , c'est que les touches agissent sur le personnage , donc ici ton robot ,et tu règles la camera pour qu'elle suive le robot .

pour cela , tu places la camera derrière le robot
tu peux récupérer les fonctions newXvalue() et NewZvalue()

un exemple d'utilisation

Code : Tout sélectionner

PosXCamera.f =  NewXValue(EntityX(0) , Robot\AngleX + 180 , Camera\Distance) 
PosYCamera.f =  EntityY(0) + 30 
PosZCamera.f =  NewZValue(EntityZ(0) , Robot\AngleX + 180 , Camera\Distance) 
;positionne la camera derrière ,et légèrement au dessus du robot
CameraLocate(0 , PosXCamera , PosYCamera , PosZCamera)
;et on oriente la camera en direction du robot
CameraLookAt(0 , EntityX(0) , EntityY(0) , EntityZ(0))
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Merci c'est cool comtois !

Enfin, j'ai reussi à faire marcher le robot de base sur un terrain de ma création, mais il me fallait une bonne source comme tu ma filer
Thxxxxx

:p
Répondre