Crazy Sheep

Généralités sur la programmation 3D
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Crazy Sheep

Message par falsam »

Enfin un joli résultat :)

Mais mon dieu que ce cegui est laid :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Lol c'est kler
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Par contre je ne sais pas si le jeu sera en mode plein écran ou en mode fenêtre. Le quelle est le mieux ?
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Crazy Sheep

Message par falsam »

MetalOS a écrit :Par contre je ne sais pas si le jeu sera en mode plein écran ou en mode fenêtre. Le quelle est le mieux ?
J'ai une préférence pour le fenêtré maximisé. Ça évite le changement de résolution du moniteur.
Configuration : Windows 11 Famille 64-bit - PB 6.20 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
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Crazy Sheep

Message par majikeyric »

On ne dispose pas de plus de ressources processeur en mode plein écran ?

Je sais que l'on est toujours en multi-taches mais peut être que...
Fred
Site Admin
Messages : 2807
Inscription : mer. 21/janv./2004 11:03

Re: Crazy Sheep

Message par Fred »

L'avantage du plein ecran, c'est que tu peux utiliser une autre resolution que celle de ton bureau, qui peut etre enorme (y'a des ecrans 4K maintenant), et donc reduire la charge graphique.
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Mais si je part sur du plein écran de quelle taille doit être mes mesh ?
Fred
Site Admin
Messages : 2807
Inscription : mer. 21/janv./2004 11:03

Re: Crazy Sheep

Message par Fred »

En principe la taille des meshes est relative à celle de l'écran, donc ca ne doit pas poser de probleme.
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Ok merci
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Crazy Sheep

Message par graph100 »

Fred a écrit :L'avantage du plein ecran, c'est que tu peux utiliser une autre resolution que celle de ton bureau, qui peut etre enorme (y'a des ecrans 4K maintenant), et donc reduire la charge graphique.
Effectivement, mais avec createwindowedscreen() tu peux mettre une définition personnalisée (par exemple 800, 600), puis activer le redimensionnement automatique.

C'est une astuce de netmaestro.

Code : Tout sélectionner

InitSprite()
OpenWindow(0,0,0,320,240,"",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget)
OpenWindowedScreen(WindowID(0),0,0,1920,1080,1,0,0,#PB_Screen_WaitSynchronization)
CreateImage(0,1920,1080)
StartDrawing(ImageOutput(0))
	Box(0,0,1920,1080,RGB(200,200,200))
	Box(0,0,40,40,#Red)
	Box(1880,0,40,40,#Red)
	Box(1880,1040,40,40,#Red)
	Box(0,1040,40,40,#Red)
StopDrawing()

Repeat
	Repeat
		ev=WindowEvent()
		If ev=#PB_Event_CloseWindow
			End
		EndIf
	Until ev=0
	StartDrawing(ScreenOutput())
		DrawImage(ImageID(0),0,0)
	StopDrawing()
	FlipBuffers()
ForEver
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Merci comme je bosse de nuit samedi et dimanche j'aurais le temps de faire des test.
Avatar de l’utilisateur
MetalOS
Messages : 1508
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Crazy Sheep

Message par MetalOS »

Voici une maquette fait sur GIMP du menu du jeu qui peut surement changer en cours de route.

Image

Malheureusement je manque de temps pour pouvoir avancer sur ce projet, alors c'est au compte goutte.

J'ai un petit problème pour afficher le titre du jeu qui et une image au format PNG. Comme je ne connait pas trop la prog 3D mon code et surement mal codé, le voici.

Code : Tout sélectionner

;*************************
;       Crazy Sheep
;
;      Version 1.0.0
;
;       By MetalOS
;*************************

#CameraSpeed = 1

Enumeration
  #MainWindow 
  #Titre
  #ImageTitre
EndEnumeration

If InitEngine3D()
  
  Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Scripts", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/GUI", #PB_3DArchive_FileSystem)

  Parse3DScripts()
  
  InitSprite()
  InitKeyboard()
  
  If OpenWindow(#MainWindow, 0, 0, 1024, 768, "Crazy Sheep - Version 1.0.0", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If OpenWindowedScreen(WindowID(#MainWindow), 0, 0, 1024, 768)
      
      SkyDome("cloud.jpg", 30)
    
    ;-Entity
      CreateEntity(0, LoadMesh(0, "Planete.mesh"),  #PB_Material_None)
      RotateEntity(0, 30, -20, 0)
      CreateLight(0, RGB(255, 255, 255),  10, 0, 30, #PB_Light_Point)  ; Light blanc
  
  
    
    ;-Camera 
    CreateCamera(0,0,0,100,100)
    MoveCamera(0,0.2,0,5, #PB_Absolute)
    CameraBackColor(0, RGB(42, 90, 183))
    
    UsePNGImageDecoder()
    LoadImage(#ImageTitre, "Data\Textures\Titre.png")
    CreateSprite(#Titre, ImageWidth(#ImageTitre), ImageHeight(#ImageTitre))
     If StartDrawing(SpriteOutput(#Titre))
       DrawImage(ImageID(#ImageTitre), 0, 0)
       StopDrawing()
     EndIf
   EndIf 
  EndIf
    
    Repeat
      ExamineKeyboard()

      RenderWorld()

      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
    
Else
  MessageRequester("Erreur", "Le moteur 3D n'est pas initialisé.", 0)
EndIf
  
End
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Crazy Sheep

Message par Cool Dji »

Hello,

Nice...

Il est très facile d'afficher des sprites après le RenderWorld()
Charge le titre en Sprite et affiche le avec un DisplaySprite ou DisplayTransparentSprite...

Tous les textes (menus, scores...) peuvent aussi s'afficher avec des sprites (c'est même mieux)...

Ce soir, si tu veux, je poste un exemple en 3D avec des fonts pixels...
Only PureBasic makes it possible
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Crazy Sheep

Message par Cool Dji »

Hop,

2 images à mettre dans un dossier intitulé "Picture"
Texture.bmp
Image
Font.bmp
Image

Code : Tout sélectionner

InitEngine3D()
InitKeyboard()
InitMouse()
InitSprite()
 Declare AffText(Text$,x.i,y.i,light.i)


OpenScreen(1024,768,32,"")
CreateCamera(0,0,0,100,100)
MoveCamera(0,  10, 40, 10, #PB_Absolute)
CameraLookAt(0,0,0,0)
Add3DArchive("Picture", #PB_3DArchive_FileSystem)
CreateMaterial(0, LoadTexture(0, "Texture.bmp"))
CreateCube(0,10)
CreateEntity(0,MeshID(0),#PB_Material_None)
CreateEntity(0,MeshID(0),MaterialID(0))


LoadImage(100,"Picture/font.bmp")              ; Charge l'image de toutes les lettres
For j=0 To 125-33                               ; Fait une boucle de toutes les lettres
  GrabImage(100,j,j*16,0,j*16+16,16)            ; Découpe lettre par lettre
  CreateSprite(j+100,16,16)  ; Crée un sprite pour chaque lettre
  StartDrawing(SpriteOutput(j+100))
    DrawImage(ImageID(j),0,0)                   ; Place la lettre découpée dans le sprite
    StopDrawing()
Next


Repeat
  ExamineKeyboard()
  RotateEntity(0,0.3,0,0,#PB_Relative)
   RenderWorld()
   
    Transpa+1:If Transpa=255:Transpa=0:EndIf
    AffText("Transparence "+Str(Transpa),400,300,Transpa)
   
   FlipBuffers()
 Until KeyboardPushed(#PB_Key_Escape)
 
 Procedure AffText(Text$,x.i,y.i,light.i)
For j=1 To Len(Text$)                              ; Fait une boucle sur le nombre de caractères à afficher
  a$=Mid(Text$,j,1)                                ; Prends un caractère après l'autre
   If (Asc(a$)>=Asc("!")) And (Asc(a$)<=Asc("z"))  ; vérifie que le caractère existe
       i.i=Asc(a$)-33                              ; rappel : le code Ascii de ! est 33
       DisplayTransparentSprite(i+100,x+j*16,y,light)         ; Affiche le sprite du caractere
   EndIf
 Next
EndProcedure
Only PureBasic makes it possible
Avatar de l’utilisateur
raven
Messages : 222
Inscription : jeu. 06/janv./2005 15:45

Re: Crazy Sheep

Message par raven »

intéressant,merci cooldj :D
Pb5.24 Lts/5.31 Windows 7 64 nvidia 560 ti E8500 8g ram
Répondre