PureBasic

Forums PureBasic
Nous sommes le Sam 07/Déc/2019 22:15

Heures au format UTC + 1 heure




Poster un nouveau sujet Ce sujet est verrouillé, vous ne pouvez pas éditer de messages ou poster d’autres réponses.  [ 53 messages ]  Aller à la page Précédente  1, 2, 3, 4  Suivante
Auteur Message
 Sujet du message: Re: Flip sprite
MessagePosté: Ven 02/Nov/2018 8:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4225
Localisation: Arras, France
boby a écrit:
@Ollivier :
-Un système de colision performant avec quadtree.
-Un moteur physique.
-La possibilitée d'uttiliser des shaders.
-une lib souris fonctionnel.
-Un système de palette.
-Un moteur de lumière (un vrai).
-La possibilitée d'avoir plusieurs caméra.
Bref je ne vais pas faire la liste surtout que je ne suis très certainement pas tombé sur tous les problèmes bloquant pour faire un JV.

En effet il y a de quoi afficher des choses à l'ecran (WOUHOU !!!) mais c'est pas suffisant pour faire un jeux vidéal (plus poussé qu'un tamagotchi teleteubbis).
Y'a qu'à voir, le seul jeu (complet) sorti sous pure c'est le fameux Scavenger. J'ai beaucoup de respect pour la personne qui l'a fait, je sais qu'il l'a fait tout seul, mais ça n'empêche pas qu'ilsoit moche comme un cul et encore une fois, avec tout le respect que j'ai pour celui qui l'a fait, bah y'a pas franchement grand contenu pour un projet de 5 ans...

Non on avais pas juste envie de parler... Nous :wink:

Euh avec bgames on a sorti quelques jeux complets, et ils étaient loin d'être moches. La différence c'est que c'était à une autre époque, avant directx9, et on avait un meilleur contrôle de l'affichage 2D, bien supporté par pure à l'époque, et amélioré grâce à des bidouilles (je pense aux scrolls plein écran des lethal judgment).

À part ça, on a déjà tout dit sur ce sujet. PB permet de faire des jeux, mais le langage n'est pas tout. Un jeu c'est une idée, et du boulot. Pour arriver au bout du job, il faut une bonne détermination. Plus le jeu est complexe, plus il faut de travail, plus il faut de temps, plus il faut de détermination.

Sinon, pour avoir testé quelques plateformes, certaines sont plus adéquates que d'autres. Pour en mettre plein les mirettes, gérer très facilement des objets 3D, et surtout gagner du temps, il y a beaucoup mieux à mon avis, même si rien n'égale pb en terme de plaisir de coder.


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Sam 03/Nov/2018 11:44 
Hors ligne

Inscription: Jeu 07/Juin/2007 22:54
Messages: 261
Citation:
Euh avec bgames on a sorti quelques jeux complets, et ils étaient loin d'être moches. La différence c'est que c'était à une autre époque, avant directx9


Ouais, avec l'unreal engine aussi on a sorti de beau jeux mais là non plus ça n'a pas trop de rapport, on parle de "quoi que c'est donc qu'il manquerai à pure aujourd'hui pour faciliter la création de jeux" et tu nous répond "Ouais alors y'a 72 ans, bah on pouvais faire des trucs hein !" J'ai du mal à bien capter le rapport...

Citation:
À part ça, on a déjà tout dit sur ce sujet.


On ne te force pas à participer à l'échange d'idée et d'avis et même si, pour toi, tout a déjà été dit, en quoi ça te dérange qu'on en parle ici ? Dans la partie "Discussion générale" ??


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Sam 03/Nov/2018 13:59 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4225
Localisation: Arras, France
Je sens un peu d'énervement. Sur un forum, il faut savoir garder son sang-froid... L'écrit est souvent mal interprété, surtout quand on n'est pas habitué à l'écriture des uns et des autres. Là, je voulais juste corriger une erreur, il n'y a pas eu qu'un seul jeu complet réalisé avec PB.

Maintenant je peux comprendre que ça peut être un peu agaçant quand les «vieux» rabâchent. On a déjà eu ce genre de conversation plein de fois, mais c'est vrai que ce n'est pas une raison pour ne plus l'avoir.


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Sam 03/Nov/2018 14:34 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3524
Boby a écrit:
@Ollivier

Enrichis-toi du partage des autres "Boby". Les critiques ne servent uniquement qu'assorties d'un ensemble suggestionnel solide.


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Sam 03/Nov/2018 16:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4225
Localisation: Arras, France
Pour finir d'ajouter mon grain de sel, voici le sujet original qui explique l'astuce qui permet de faire le flip avec transformsprite() : https://www.purebasic.fr/english/viewto ... =3&t=43718

Pour ceux que ça intéresse, ça explique aussi comment gérer l'ordre d'affichage des sprites en utilisant le z, puisqu'à la base, nos sprites sont des faces 3D...

Et enfin, voici un code un peu amélioré grâce à Danilo et qui n'utilise plus du tout d'assembleur.
Code:
; ***********************************************************************
; Project : FLIP SPRITE
; ORIGINAL CODE FROM : Comtois/thyphoon/djes/danilo
; UPGRADED BY : microdevWeb/djes
; ***********************************************************************

If Not InitSprite()
  MessageRequester("Game engine error", "Cannot run sprite engine", #PB_MessageRequester_Error)
  End
EndIf
If Not InitKeyboard()
  MessageRequester("Game engine error", "Cannot run keyboard engine", #PB_MessageRequester_Error)
  End
EndIf
If Not InitSound()
  MessageRequester("Game engine error", "Cannot init sound engine", #PB_MessageRequester_Error)
  End
EndIf
If Not OpenWindow(0, 0, 0, 800, 600, "Flippy bird", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  MessageRequester("Window engine error", "Cannot open window", #PB_MessageRequester_Error)
  End
EndIf
If Not OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)
  MessageRequester("Game engine error", "Cannot open window screen", #PB_MessageRequester_Error)
  End
EndIf

Import ""
  PB_Screen_Direct3DDevice.IDirect3DDevice9
EndImport

Enumeration D3DCULL
  #D3DCULL_NONE = 1
  #D3DCULL_CW   = 2
  #D3DCULL_CCW  = 3
EndEnumeration

; From https://docs.microsoft.com/en-us/windows/desktop/direct3d9/d3drenderstatetype
#D3DRS_ZENABLE    = 7
#D3DRS_CULLMODE   = 22

Procedure SetCullMode(MODE)
  ; MODE 0 = OFF
  ; MODE 1 = ON
  If PB_Screen_Direct3DDevice
    If MODE       
      PB_Screen_Direct3DDevice\SetRenderState(#D3DRS_CULLMODE, #D3DCULL_CCW)
    Else   
      PB_Screen_Direct3DDevice\SetRenderState(#D3DRS_CULLMODE, #D3DCULL_NONE)
    EndIf
  EndIf
EndProcedure
Procedure ZEnable(MODE)
  ; MODE 0 = OFF
  ; MODE 1 = ON
  If PB_Screen_Direct3DDevice
    If MODE       
      PB_Screen_Direct3DDevice\SetRenderState(#D3DRS_ZENABLE, 1)
    Else   
      PB_Screen_Direct3DDevice\SetRenderState(#D3DRS_ZENABLE, 0)
    EndIf
  EndIf
EndProcedure

SetCullMode(#False)
ZEnable(#False)

; FLIP FUNCTION
Procedure flipSprite(sprite, vertical.b, horizontal.b)
  Protected w = SpriteWidth(sprite),
             h = SpriteHeight(sprite)
  If vertical And horizontal
    ; X3 X4
    ;  ---
    ; |  /|
    ; |/  |
    ;  ---
    ; x2 x1
    TransformSprite(sprite, w, h, 0, h, 0, 0, w, 0)
    ProcedureReturn   
  EndIf
  If vertical
    ; X4 X3
    ;  ---
    ; |  /|
    ; |/  |
    ;  ---
    ; x1 x2
    TransformSprite(sprite, 0, h, w, h, w, 0, 0, 0)
    ProcedureReturn   
  EndIf
  If horizontal
    ; X2 X1
    ;  ---
    ; |  /|
    ; |/  |
    ;  ---
    ; x3 x4
    TransformSprite(sprite, w, 0, 0, 0, 0, h, w, h)
    ProcedureReturn   
  EndIf
  ; default sprite vertices
  ; X1 X2
  ;  ---
  ; |  /|
  ; |/  |
  ;  ---
  ; x4 x3
  TransformSprite(sprite, 0, 0, w, 0, w, h, 0, h)
EndProcedure

#PB_SPRITE1 = 0
; load pureBasic Sprite
LoadSprite(#PB_SPRITE1, #PB_Compiler_Home + "examples/sources/Data/PureBasic.bmp")

Global gEvent, gExit.b, gHorizontal.b, gVertical.b, gKeyPushed.b
Repeat ; game loop
  Repeat ; window loop
    gEvent = WindowEvent()
    If gEvent = #PB_Event_CloseWindow
      gExit = #True ; exit to game loop
      Break         ; exit to window loop
    EndIf
  Until gEvent = 0
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Escape)
    gExit = #True ; exit to game loop
  EndIf
  If KeyboardPushed(#PB_Key_Right) And Not gKeyPushed
    ; reverse horizontal flip
    gHorizontal = ~ gHorizontal
    gKeyPushed = #True
  EndIf
  If KeyboardPushed(#PB_Key_Up) And Not gKeyPushed
    ; reverse vertical flip
    gVertical = ~ gVertical
    gKeyPushed = #True
  EndIf
  If KeyboardReleased(#PB_Key_All)
    gKeyPushed = #False
  EndIf
  ClearScreen(0)
  StartDrawing(ScreenOutput())
    DrawText(0, 0, "Press Up and Right keys to flip")
  StopDrawing()
  flipSprite(#PB_SPRITE1, gVertical, gHorizontal)
  DisplayTransparentSprite(#PB_SPRITE1, 100, 100)
  FlipBuffers()
Until gExit

End


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Sam 03/Nov/2018 19:41 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 27/Oct/2006 12:19
Messages: 1224
Localisation: Calvados (14)
Un article sur ShmupEmAll intéressant (qui date un peu certes) puisqu'il s'agit d'une interview de Polux et Djes à propos de bGames et de leurs jeux :wink:

_________________
Image

Image


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Dim 04/Nov/2018 11:09 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1662
Localisation: Belgique
boby a écrit:
Ouais, avec l'unreal engine aussi on a sorti de beau jeux mais là non plus ça n'a pas trop de rapport, on parle de "quoi que c'est donc qu'il manquerai à pure aujourd'hui pour faciliter la création de jeux" et tu nous répond "Ouais alors y'a 72 ans, bah on pouvais faire des trucs hein !" J'ai du mal à bien capter le rapport...


Pour ma part réaliser un jeu sans un éditeur de niveau est archaïque et trop peux productif, réaliser un éditeur de niveau en pb serait évidement faisable mais demanderais un somme de travail considérable surtout que pb n'est pas objet.

Donc à part utiliser les possibilités de ogre la bibliothèque 2d est vraiment à la traîne et je penses pas que cela soit prêt de changer.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Dim 04/Nov/2018 15:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 4067
microdevweb a écrit:
Pour ma part réaliser un jeu sans un éditeur de niveau est archaïque et trop peux productif, réaliser un éditeur de niveau en pb serait évidement faisable mais demanderais un somme de travail considérable surtout que pb n'est pas objet.

Heu, on peux tout faire avec PB. J'ai fais un jeu et un editeur de niveau , et ca a ete facile !
8)

@Djes : ton code est long; ce qui me fait dire que je prefererais une instruction simple codé par la team de pb; genre : FlipSprite(1,4)

_________________
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.70LTS - 32 bits


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Dim 04/Nov/2018 17:39 
Hors ligne

Inscription: Jeu 07/Juin/2007 22:54
Messages: 261
SPH a écrit:
Heu, on peux tout faire avec PB. J'ai fais un jeu et un editeur de niveau , et ca a ete facile !

Alors pour ma part je me suis lancé dans un tout petit jeux en pb pour voir ce dont le language était capable, j'en suis actuelement à 3200 lignes (dont 200 pour le netcode (qui en est tout juste au début)) sur ces 3000 lignes je dirais que 2000 sont des lib que je doit faire dès que je veux afficher quelque chose et je n'ai pas encore fini de coder les menus ! (Donc pas 1 lignes concernant le jeu lui même).

Si tu parle de ton scrabble, evidament pure est capable de ça, mais un jeux sans un minimum de feedback et de designe responsive, c'est pas ce que j'appel un "jeu".

Rien qu'afficher du text pure n'en est pas capable ! A quel moment tu peux dire qu'on peux faire un jeu sans text ???

Pour ma part je rejoint totalement microdevweb, pure est un très bon language pour du soft, mais obsolète pour du jeu.


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Dim 04/Nov/2018 19:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 09/Nov/2005 9:53
Messages: 4067
boby a écrit:
Rien qu'afficher du text pure n'en est pas capable ! A quel moment tu peux dire qu'on peux faire un jeu sans text ???

Image

J'ose croire que tu plaisantes... 8O :?

_________________
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Portable LENOVO ideapad 110-17ACL 64 bits
Version de PB : 5.70LTS - 32 bits


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Lun 05/Nov/2018 10:29 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1662
Localisation: Belgique
@SPH,

Je comprend que tu défendes Pb, mais à tu essayer essayé d'autres moteurs pour vraiment être réaliste.

Perso dans le cadre de formations j'ai réaliser un flappy - bird en Godot engine et cela à été assez simple et j'ai même peu compiler pour Pc et Android sans changer une ligne de code.

Exemple l'animation de l'explosion du bird, réaliser directement dans l'éditeur et sans aucune ligne de code si ce n'est à l’exception de son déclenchement.

Ui réaliser dans l"éditeur et les éléments se place automatiquement (même à l’agrandissement) de la fenêtre.

Ce projet reprend un niveau menu un niveau game avec des niveaux incrémentés.

La compilation pour Pc donne 2 fichiers une exe de 25.358 Ko et fichier pck de 5.028 ko et pour android un fichier apk de 18.859 Ko.

Pour ma formation pour Pb j'ai voulu réaliser le même projet.

Voici mes constations.

Pb ne gère pas la physique donc j'ai du réalisez moi même la chute de l'oiseau ainsi que sa montée cela fonctionne mais c'est moins fluide.

L'animation à du être également réalisée en code.

Les bûches ben déjà premier problème en rapport le sujet de ce topic, pas de fonction pour faire un flip de ma bûche (et faire une copie de l'image en miroir est à mon sens utopique)

Problème avec un son wav qui pourtant fonctionnait avec Godot, j'ai du en prendre un autre.

La je n'en suis qu'au début et me rend compte que si je poursuit je vais prendre 10 fois plus de temps de développement.

Pour les perf évidement difficile de comparer puisqu'il n'est pas terminé mais à première vue la taille devrait avoisiner les 7.000 ko donc nettement inférieur. (mais avec les pc actuel cela est t'il vraiment un véritable atout).

Donc et cela évidement est un choix personnel je ne choisirais jamais Pb pour la réalisation d'un jeu un minimum conséquent.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Lun 05/Nov/2018 12:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8785
SPH relevait l'affichage de texte, rien d'autre. Et ce dernier est évidement possible via drawtext.. je vois pas le soucis de ce coté.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Lun 05/Nov/2018 14:14 
Hors ligne

Inscription: Jeu 07/Juin/2007 22:54
Messages: 261
Ar-S a écrit:
SPH relevait l'affichage de texte, rien d'autre. Et ce dernier est évidement possible via drawtext.. je vois pas le soucis de ce coté.

SPH a écrit:
J'ose croire que tu plaisantes... 8O :?


Ahh mais si faire bosser le CPU pour vos rendu graphique vous conviens, très bien, évidement quand je parle d'afficher du texte je parle coté GPU, par-ce qu'il y a des rumeurs qui courent comme quoi une carte graphique serait fait pour calculer les petits points lumineux sur vos écrans et que même qu'en plus qu'il parait qu'il serait, dans ce domaine de compétences, plus doué que le CPU, mais ça ne reste que de la rumeur hein...

Démonstration : lancez votre gestionnaire de tâche puis compilez ces 20 ÉNORMES !!! lignes (j'ai testé sur une machine moyenne "I5 2430M"; J'ai une moyenne de 7% CPU) pour afficher 5 lignes de text... WOUHOU !! Les PERFS !!! (Et je ne parle pas de l'absence de fonction de retour à la ligne, l'impossibilité d'afficher une ligne avec plusieurs couleurs j'en passe et des meilleurs.

Non SPH je ne plaisante pas...
Code:
InitSprite()
OpenWindow(0,0,0,600,400,"",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,600,400)
SetFrameRate(60)
LoadFont(0,"Arial",30)
LoadFont(1,"Arial",56)
Repeat
  ClearScreen($FFFFFF)
  StartDrawing(ScreenOutput())
  DrawingFont(FontID(0))
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawText(10,10,"BLA BLA du text !!",$000000)
  DrawText(300-TextWidth("Du bla bla centré !")/2,50,"Du bla bla centré !",$CCFFCC)
  DrawText(10,100,"Allé encore un pitipeut",$99CC33)
  DrawText(10,150,"Je mets des couleurs au pif, ça va surement être moche",$CC7755)
  DrawingFont(FontID(1))
  DrawText(10,200,"Pour la forme une dernière",$112233)
  StopDrawing()
  FlipBuffers()
Until WindowEvent() = #PB_Event_CloseWindow


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Lun 05/Nov/2018 18:45 
Hors ligne

Inscription: Ven 29/Juin/2007 17:50
Messages: 3524
@ "Boby"

Fais comme tout le monde, moi y compris : pose tes questions dans la section "Débutant".

Mesure les perfs de ce programme de 2015 (et encore, je suis très loin d'être pionnier ) :

https://www.purebasic.fr/french/viewtopic.php?f=6&t=16298&start=41


Haut
 Profil  
 
 Sujet du message: Re: Flip sprite
MessagePosté: Lun 05/Nov/2018 18:57 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8785
Bon ok y'a des lacunes. Mais je me fais un peu l'avocat du diable. On a déjà dit qu'une double boucle avait sont intérêt quand on mélangeait openwwindow et openwindowsscreen.
Ainsi en ajoutant le double repeat et un Event = WaitWindowEvent(10) on gagne encore en % proce
Enfin, tu crées non stop ton texte dans le screen. Je trouve que ça bouffe aussi anormalement de ressources, mais il suffit de le dessiner dans un sprite et d'afficher ce dernier.
Le cpu apprécie d'autant plus.

Avec ce code qui ressemble tout de même beaucoup au tien, je suis entre 0.8% et 1.2%

Code:
InitSprite()
F1 = LoadFont(0,"arial",30)
F2 = LoadFont(1,"arial",56)
OpenWindow(0,0,0,600,400,"",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,600,400)

CreateSprite(2,600,400)
StartDrawing(SpriteOutput(2))
Box(0,0,640,480,$ffffff)
DrawingFont(F1)
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(10,10,"BLA BLA du text !!",$000000)
DrawText(300-TextWidth("Du bla bla centré !")/2,50,"Du bla bla centré !",$CCFFCC)
DrawText(10,100,"Allé encore un pitipeut",$99CC33)
DrawText(10,150,"Je mets des couleurs au pif, ça va surement être moche",$CC7755)
DrawingFont(FontID(1))
DrawText(10,200,"Pour la forme une dernière",$112233)
StopDrawing() 

SetFrameRate(60)

Repeat
    Repeat
    Event = WaitWindowEvent(10)
   
    Select Event   
      Case #PB_Event_CloseWindow
        End
    EndSelect 
  Until Event=0
 
    ClearScreen($FFFFFF)
   
    DisplaySprite(2,0,0)

  FlipBuffers()
 
Until WindowEvent() = #PB_Event_CloseWindow


Donc ok si un moteur 2D sortait un jour ce serai le gros pied. Mais faut pas cracher dans la soupe non plus.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Ce sujet est verrouillé, vous ne pouvez pas éditer de messages ou poster d’autres réponses.  [ 53 messages ]  Aller à la page Précédente  1, 2, 3, 4  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 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 à:  
cron

 


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