COSMOS THE SECRET MELODY

Programmation avancée de jeux en PureBasic
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

COSMOS THE SECRET MELODY

Message par drfloyd »

Voilà, j'ai débuté le remake de mon jeu COSMOS CHRONICLES, maintenant que j'ai acheté la licence !

Je vous tiendrai au courant de l'évolution du jeu ! C'est le premier jeu procédural qui simule l'univers dans son entier.

MAJ du 18/04/2020
j'en suis a 13% de développement

Image

Image
Dernière modification par drfloyd le dim. 19/avr./2020 14:16, modifié 2 fois.
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: COSMOS THE SECRET MELODY

Message par SPH »

Ca fait tres annees 80 mais ca peut etre cool si le scénario tiens la route 8)
Dernière modification par SPH le ven. 06/mars/2020 22:03, modifié 1 fois.
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
case
Messages : 1528
Inscription : lun. 10/sept./2007 11:13

Re: COSMOS THE SECRET MELODY

Message par case »

ca a l'air cool :)
ImageImage
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: COSMOS THE SECRET MELODY

Message par Ollivier »

Rien que le visu donne à t'encourager. Bon courage dans ton travail.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: COSMOS THE SECRET MELODY

Message par Fig »

Je ne connais pas le jeu original, je vais aller voir.
En tout cas bravo 8O
La question est de savoir si c'est juste un visuel ou est ce que c'est déjà fonctionnel ? :?:
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: COSMOS THE SECRET MELODY

Message par Zorro »

@Fig , DrFloyd est un vrais codeur Basic a l'ancienne
il a deja un prg qui tourne ... il est coutumier du fait, il code depuis tres longtemp en Basic :)

je lui ai permis de voir que le Purebasic etait un bon langage , il a accroché, c'est cool
plus il va coder avec, plus il va kiffer ....

le seul probleme, c'est qu'il viens de tomber dans un piege
car il ne pourra plus changer de langage maintenant :lol:

DrFloyd a son propre Site et Forum , plutot orienté ancien jeux,anciennes machine (consoles compris ) tres intéressant a lire
si ce n'est quelques membres un poil lourding , mais c'est pas de sa faute :mrgreen:

ps: il a fait un article sur notre MajickEric ;) qui nous avait bien caché son identité , le coquin :)
https://www.purebasic.fr/french/viewtop ... ic#p205437
et dont la photo apparait meme dans le bandeau du forum de notre ami DrFloyd
Image



voir ici :
https://www.gamopat-forum.com/
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: COSMOS THE SECRET MELODY

Message par drfloyd »

ahah merci Zorro ;) Tu nous manque sur Gamopat ! Et merci aux autres pour le soutiens !

Le plus compliqué je pense c'est d'accrocher... quand on le decouvre comme ça, franchement le Pure basic n'inspire pas confiance :) Mais une fois dedans, whaouuu... Ce langage cache bien son jeu... Sans Zorro j'aurai lâché.

J'ai seulement un peu galèré au départ avec le paramétrage du mode fenetré plein ecran et/ou fullscreen.... Pure ne facilite pas le boulot pour ça. Pour l'instant le jeu est en 640x400 mode windows (fenetre plein ecran)... mais ce n'est pas du pixel perfect du coup, j'ai envie de passer vrai fullscreen pour la version finale mais je crois que 640x400 n'est pas une definition native ?

Je code effectivement à l'ancienne, à l'instinct :lol: Je pense avoir de bons concepts, car mes 2 jeux précédents COSMOS ont été adapté sur Atari ST et ont tous deux gagné des prix dans des conventions rétro.

Pour répondre à la question : oui ca tourne, c'est fonctionnel (jeu à la souris et clavier, et 5 ecrans fonctionnels)... je bosse un peu chaque semaine dessus.

Je vous posterai des screenshots de l'évolution du développement
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: COSMOS THE SECRET MELODY

Message par drfloyd »

nouvelles images du jeu :

Image

Image

Image
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: COSMOS THE SECRET MELODY

Message par MLD »

Merci vivement la fin :lol:
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: COSMOS THE SECRET MELODY

Message par drfloyd »

ca avance, mais j'ai une question technique :

Un sprite, comment l'inverser en mode miroir horizontal ? Il n'y a pas de commande pour ça.

Ca doit etre avec Transformsprite... mais je ne trouve pas les parametres a indiquer... c'est un chaud à maitriser cette commande pour moi.

Image
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: COSMOS THE SECRET MELODY

Message par Ar-S »

Il ni a pas de commande pour cela effectivement.
Donc soit tu mets plus images dans tes spritessheets, soit tu peux essayer cette solution (non testé).
https://www.purebasic.fr/english/viewto ... 13&t=16501
et ici
viewtopic.php?f=1&t=1352&view=next
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: COSMOS THE SECRET MELODY

Message par Ollivier »

Code : Tout sélectionner

Procedure SpriteHorizontalFlip(N.I)

 Structure DWORD
  L.L[1 << 14]
 EndStructure

 Define.I W = SpriteWidth(N), X, Y
 If StartDrawing(SpriteOutput(N) )
  Define *A.DWORD = DrawingBuffer()
  For Y = 0 To (SpriteHeight(N) - 1)
   For X = 0 To (W >> 1 - 1)
    Swap *A\L[X], *A\L[W - X - 1]
   Next
   *A + DrawingBufferPitch()
  Next
  StopDrawing()
 EndIf
EndProcedure
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: COSMOS THE SECRET MELODY

Message par Ar-S »

Très cool Ollivier.

Mise en pratique dans l'exemple PB sur openswindowedscreen()

Code : Tout sélectionner

Declare SpriteHorizontalFlip(N.I)


If InitSprite() = 0
    MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
    End
  EndIf
  
  If OpenWindow(0, 0, 0, 220, 160, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ButtonGadget(0, 170, 135, 45, 20, "Quitter")

    If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160)
      CreateSprite(0, 40, 40)
      If StartDrawing(SpriteOutput(0))
        Box(0, 0, 20, 20, #Red)
        Box(20, 0, 20, 20, #Yellow)
        StopDrawing()
      EndIf
    Else
      MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
      End
    EndIf
  EndIf
  
  direction = 2
  Repeat
    ; Il est très important de traiter tous les évènements restants dans la file d'attente à chaque tour
    ;
    Repeat
      Event = WindowEvent()
      
      Select Event 
        Case #PB_Event_Gadget
          If EventGadget() = 0
            End
          EndIf
        
        Case #PB_Event_CloseWindow
          End 
      EndSelect
    Until Event = 0
  
    FlipBuffers() 
    ClearScreen(RGB(0, 0, 0))
    DisplaySprite(0, x, x)
    x + direction
    If x > 120 : SpriteHorizontalFlip(0) : direction = -2 : EndIf
    If x < 0   : SpriteHorizontalFlip(0) : direction =  2 : EndIf
    Delay(1)
  ForEver
  
  
  
  
  
  Procedure SpriteHorizontalFlip(N.I)
; Ollivier
Structure DWORD
  L.L[1 << 14]
EndStructure

Define.I W = SpriteWidth(N), X, Y
If StartDrawing(SpriteOutput(N) )
  Define *A.DWORD = DrawingBuffer()
  For Y = 0 To (SpriteHeight(N) - 1)
   For X = 0 To (W >> 1 - 1)
    Swap *A\L[X], *A\L[W - X - 1]
   Next
   *A + DrawingBufferPitch()
  Next
  StopDrawing()
EndIf
EndProcedure
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

Re: COSMOS THE SECRET MELODY

Message par drfloyd »

merci pour vos réponses

c'est un peu lourd

je pensais qu'une simple commande genre :

TransformSprite(0,1,1,100,0,1,100,0,100)

suffirait

Non ?
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: COSMOS THE SECRET MELODY

Message par Ollivier »

Non, elle permet de faire de la 3D et d'éviter le calcul de l'état de la face : cachée ou pas. Si tu sais le faire de tête, t'es un bon en méca (c'est un torseur), mais pas en optimisation puisque tu dois calculer chaque face à chaque frame d'affichage.

Là, TransformSprite() t'épargne ce travail et charge le GPU de faire le calcul donc ton CPU pionce pendant que ça s'affiche.

Le flip horizontal (ou vertical, même constatation) se calcule avant l'affichage, une bonne fois pour toute, donc, pareil, pas de perte de temps.

Il ne faut pas oublier que TransformSprite(), c'est déjà jusqu'à 10 paramètres donc rajouter l'option de face cachée optionnelle, ça aurait fait fuir d'autres survivants !
Répondre