Avis des utilisateurs SB

Rubriques generale concernant SpiderBasic
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Avis des utilisateurs SB

Message par G-Rom »

Bonsoir à tous, je m'adresse aux utilisateurs de SB , ne possédant pas de licence SB ( Fred pourrais aurais pu m'en offrir une ;) ) , j'ai parcouru la doc , notamment les sprites & sons.
Mon idée est de créer une fantasy console à l'image de la pico8 ou la tic80. PureBasic à lui toutes les capacités pour le faire très bien sur plusieurs plateforme desktop, je me demandais donc comment en SB ou pourrait éventuellement charger des ressources en mémoire, les fonction Catch...() n'existant pas en SB , quelqu'un à t'il déjà penché sur le sujet ? Autre question, j'aime bien le langage de script LUA , facile à importé dans Purebasic , mais qu'en est il en SB ?
Pico8
Tic80
Avatar de l’utilisateur
Guillot
Messages : 527
Inscription : jeu. 25/juin/2015 16:18

Re: Avis des utilisateurs SB

Message par Guillot »

salut G-Rom,

avec SB je te conseil plutôt d'utiliser la lib vectordrawing, c'est plus puissant et son jeux de fonction est basé sur le canvas d'HTML mise à part sa syntaxe. T'as donc accès a toute les fonction graphique HTML
(en revanche son implémentation dans SB est foireuse (en tout cas sur la 2.1), j'ai publier un correctif sur le forum SB (Pf Shadoko))
quand au chargement des resources il faut utiliser les fonctions loadimage/sprite/sound...avec un événement pour signaler la fin de l'upload
si ça t'interesse je peux te passer une lib de fonction qui simplifie le developpement et qui assure une quasi compatibilité entre SB et PB

j'ai publié 2 jeux :
http://cg.racine.free.fr/puzzle/index.html
http://cg.racine.free.fr/mahjong/
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Avis des utilisateurs SB

Message par G-Rom »

Merci Guillot , pour le chargement des ressources, c'est pas le problème , mais plutôt , peu ton chargé des ressources "packé" , je m'explique ,
si tu as vu mes 2 petits liens, chaque console à des "petites cartouche" , c'est un tout petit fichier qui comporte tout , la texture , le son , le code.
en gros, la structure d'une cartouche pourrais ressemblé à cela :

Code : Tout sélectionner

structure Cartouche
  name.a[32]
  author.a[32]
  texture.a[128*128]
  sound.a[8192]
  code.a[16384]
  ...
endstructure
En PB , c'est facile à faire, avec cette structure , on peut par exemple extraire la texture en 128x128 et en faire une serie de sprite à la volée.
en revanche pour le son , c'est pas la même salade, même si on peut généré un .wav en mémoire, je n'ai pas vu de moyen de chargé cela depuis la mémoire. ( peut être écrire le .wav sur le disque ? )
je ne sais pas si ce genre de code : https://gist.github.com/literallylara/7 ... 119afb51c7 peut être utile ?

Quand à la compatibilité PB/SB, les différences ne me pose pas de problème particulier , ça ressemble un peu à d'autres truc qui se font ailleurs.
Avatar de l’utilisateur
Guillot
Messages : 527
Inscription : jeu. 25/juin/2015 16:18

Re: Avis des utilisateurs SB

Message par Guillot »

pour le son en PB, jusqu'a la 5.4 ou 5.5 on pouvait, mais depuis ça plante
(j'avias fait un petit synthé)

pour creer un son je faisais :

Code : Tout sélectionner

Structure wav
  FileTypeBlocID.s{4}
  FileSize.l
  FileFormatID.s{4}
  FormatBlocID.s{4}
  BlocSize.l
  AudioFormat.w
   NbrCanaux.w
   Frequence.l
   BytePerSec.l
   BytePerBloc.w
   BitsPerSample.w
   DataBlocID.s{4}
   DataSize.l
EndStructure

Procedure soundcreate(num,Array t.w(1),channels=1,fq=44100)
  Protected son.wav
  Protected lg=(ArraySize(t())+1)*2
  Protected Dim b.b(44+lg)
  With son
    \FileTypeBlocID="RIFF"
    \FileSize=lg + 36
    \FileFormatID="WAVE"
    \FormatBlocID="fmt "
    \BlocSize=$0010
    \AudioFormat=$01
    \NbrCanaux=channels
    \Frequence=fq
    \BytePerSec=fq * channels * 2
    \BytePerBloc=Channels * 2
    \BitsPerSample=16
    \DataBlocID="data"
    \DataSize=lg
  EndWith
  CopyMemory(@son,@b(0),44)
  CopyMemory(@t(0),@b(44),lg)
  CatchSound(num,@b(0)) 
EndProcedure
Array t.w(1) contenant le son wave brut

quand à creer un son en js, je pense pas que ce soit possible (à voir)
en revanche je pense que tut trouveras certainement fonction zip (ou autre) en js
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Avis des utilisateurs SB

Message par G-Rom »

voila ta fonction corrigée :

Code : Tout sélectionner

Structure wav
  FileTypeBlocID.a[4]
  FileSize.l
  FileFormatID.a[4]
  FormatBlocID.a[4]
  BlocSize.l
  AudioFormat.w
   NbrCanaux.w
   Frequence.l
   BytePerSec.l
   BytePerBloc.w
   BitsPerSample.w
   DataBlocID.a[4]
   DataSize.l
EndStructure

Procedure soundcreate(num,Array t.w(1),channels=1,fq=44100)
  Protected son.wav
  Protected lg=(ArraySize(t())+1)*2
  Protected Dim b.b(44+lg)
  With son
    \FileTypeBlocID[0]='R'
    \FileTypeBlocID[1]='I'
    \FileTypeBlocID[2]='F'
    \FileTypeBlocID[3]='F'
        
    
    \FileSize=lg + 36
    \FileFormatID [0]='W'
    \FileFormatID [1]='A'
    \FileFormatID [2]='V'
    \FileFormatID [3]='E'
    
    
    
    
    \FormatBlocID[0] = 'f'
    \FormatBlocID[1] = 'm'
    \FormatBlocID[2] = 't'
    \FormatBlocID[3] = ' '
    
    \BlocSize=$0010
    \AudioFormat=$01
    \NbrCanaux=channels
    \Frequence=fq
    \BytePerSec=fq * channels * 2
    \BytePerBloc=Channels * 2
    \BitsPerSample=16
    
    \DataBlocID[0]='d'
    \DataBlocID[1]='a'
    \DataBlocID[2]='t'
    \DataBlocID[3]='a'
    
    \DataSize=lg
  EndWith
  CopyMemory(@son,@b(0),44)
  CopyMemory(@t(0),@b(44),lg)
  CatchSound(num,@b(0))
EndProcedure
quand à creer un son en js, je pense pas que ce soit possible (à voir)
https://stackoverflow.com/questions/347 ... he-browser

effectivement, question a creusé ^^ ca doit être jouable.
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Avis des utilisateurs SB

Message par Cool Dji »

Hello,

Yeah, c'est cool.
1 que G-Rom se mette à SB et Guillot (nickel le mahjong)

Avec SB, j'ai vu une limite que je n'ai pas encore réussi à contourner.
Quand sur windows, l'écran est en affichage à 125% (Faciliter la lecture de l'écran), ça bloque : j'ai l'impression que ça vient des fonctions sprites mais pas certain et j'ai pas cherché plus loin.

Sinon, je profite pour vous faire profiter de 2 vieilles productions (2018) destinée à des animations de groupe.
http://www.jeuxvideobesancon.fr/Quiz/Quiz.html
http://www.jeuxvideobesancon.fr/2050.html => faut juste appuyer sur la barre espace après les pauses

A++
Only PureBasic makes it possible
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Avis des utilisateurs SB

Message par Ollivier »

Une autre soluce qui bave un peu (0 terminal) : utiliser Poke.

Code : Tout sélectionner

PokeS(@\FileTypeBlocID,  "RIFF", 4, #PB_Ascii)
[+]
Version sans bavure :

Code : Tout sélectionner

PokeS(@\FileTypeBlocID,  "RIFF", 4, #PB_Ascii | #PB_String_NoZero)
Avatar de l’utilisateur
Guillot
Messages : 527
Inscription : jeu. 25/juin/2015 16:18

Re: Avis des utilisateurs SB

Message par Guillot »

à G-Rom : saint clou very much (c'était le passage en unicode, j'avais pas creusé...)

à Olivier : c'est ce que je me suis empressé de faire

à Cool Dji : t'as essayé le forum SB, y'a un gars (Peter si mes souvenir sont exactes) qui répond à tous les problèmes (j'espere qu'il est toujours actif)
Répondre