LiXu.pbi : Animation & Particule 2D

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

Whaou joli la démo snow. Je regarde lixu.pbi et j'ajoute une tout petite modification qui permet d'afficher un simple texte.

Je publie par la suite et j'ajoute ton nom dans les contributeurs avant de le basculer sur GitHub :)
blendman a écrit :je pense que Fred devrait les inclure avec purebasic (ainsi que cette lib)
Tout à fait d'accord avec toi :)
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

Pas d'animation du personnage mais je trouve ça génial. Tu sais que tu peux ajouter un sprite aux particules.

Ma version 1.2 était un add-on aux fonctions existantes de PureBasic. Avec ta version (1.3) on est en train de créer un vrai framework 2D.
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
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

J'ai du mal à comprendre la différence entre la fonction native DisplaySprite() ou DisplayTransparentSprite() et celle que tu as ajoutée DrawSprite() ?
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

falsam a écrit :Pas d'animation du personnage mais je trouve ça génial.
Oui, à l'époque, j'avais laissé tombé car c'était trop long de faire un petit jeu de plateforme. Du coup, je n'ai pas fait l'animation du personnage ^^.
Tu sais que tu peux utiliser ajouter un sprite aux particules.
j'ai vu ça ;).
Ma version 1.2 était un add-on aux fonctions existantes de PureBasic. Avec ta version (1.3) on est en train de créer un vrai framework 2D.
Si ça facilite la création de jeux vidéos avec purebasic, ce sera vraiment intéressant ;).

Il manque encore quelques fonctions pour simplifier la création de jeux, mais les modules pour ça sont vraiment excellents !

Code : Tout sélectionner

J'ai du mal à comprendre la différence entre la fonction native DisplaySprite() ou DisplayTransparentSprite() et celle que tu as ajoutée DrawSprite() ?
vu que tu gères les sprites avec une map(), c'est juste parce que c'est plus court d'écrire DrawSprite() que ce qu'elle contient ;). D'autant que j'y ai ajouté le blendmode(), mais on pourrait ajouter d'autres choses par la suite, on ne sait jamais ^^.
En fait, l'idée c'est de simplifier au maximum le code qu'on va utiliser pour créer un jeu par exemple, donc cette fonction est plus courte que d'écrire ce qu'elle contient plus sieurs fois.
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

falsam a écrit :l'idée c'est de simplifier au maximum le code qu'on va utiliser pour créer un jeu par exemple, donc cette fonction est plus courte
Adopté :)

■ Un peu de sémantique si ça ne te dérange pas. (Oui je suis emmerdant :mrgreen: )

J'ai essayé de normaliser le plus possible les différentes fonctions de lixu.

Les fonctions liées aux particules commences par Particle
- ParticleRate(), ParticleSpeedRange(), ParticleRotateRange, etc ....

Les fonctions liés aux Sprites commences toutes par .... Sprite
- SpriteAddAnimation(), SpriteSetAnimation(), SpriteUpdateAnimation()

La structure d'une fonction est Objet + Verbe + Complément (Facultatif)

Au passage j'ai modifié SetSpriteSheet() par SpriteSetSheet()

Peut'on faire de même pour tes fonctions liée aux Sprites?
- AddSprite() deviendrait SceneAddSprite() - Tu remarqueras la notion de scéne.
- SetSprite() deviendrait SpriteMoveTo()
- DrawSprite deviendrait SpriteDraw()

Et celles liées aux ScrollSprites ?
- AddScrollSprite deviendrait ScrollSpriteCreate()
- La fonction existante ScrollSprite() deviendrait ScrollSpriteUpdate()
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

Pas de soucis pour moi, au contraire ;)
Je fais d'ailleurs souvent ça dans mes codes (Layer_Add(), Layer_Delete(), etc...)
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

Je viens de voir un truc, si cette lib est destinée aussi à une démo de ce que permet purebasic, en peu de code, il faut penser à ce qu'elle soit utilisable avec la version démo ;).

Donc, il faut que tu découpes ton fichier Lixu.pbi en plusieurs fichiers, avec des xincludefile "".
Je l'ai fait et j'ai testé sur la 5.20 démo, ça marche nickel, ce qui est top. Ca signifie que ceux qui veulent tester la démo pourraient avoir une chouette idée de ce que permet purebasic avec ces fichiers ;)

Sinon, tu as avancé sur la suite de lixu ?
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

La version 1.3 de lixu est disponible

■ Ajout
SceneAddSprite(sprite,file$,CenterX=0,CenterY=0,alpha=255,BM=0,color=#White) (by Blendman)
SpriteSetXY(sprite, x, y) (by Blendman)
SpriteDraw(sprite, x=0, y=0) (by Blendman)

SpriteMirrorHorizontal(Sprite) (By dige)
SpriteFadeOut(SpriteID, Offset.b, Intensity.b) (By dige)

Voir l'exemple lixu - 9 Mirror & Fade.pb

:arrow: Télécharger lixu.zip (Source et exemples )

■ Les exemples sont corrigés.

@Blendman:
- Ta variable alpha correspond à ma variable opacity je pense ?
- CenterX et CenterY ne servent à rien pour le moment. On enlève ? ou pas ? :mrgreen:

[Edit] Mise à jour de l'exemple lixu - 9 Mirror & Fade.pb suite à une erreur.
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

falsam a écrit :- Ta variable alpha correspond à ma variable opacity je pense ?
je pense que oui.
- CenterX et CenterY ne servent à rien pour le moment. On enlève ? ou pas ? :mrgreen:
On garde, c'est le centre de tes sprites ;)
Si tu veux faire une rotation non pas en width/2 height/2 comme c'est le cas, je pense que ça peut servir ce centre ;).
Ainsi que pour placer correctement tes sprites, si plus tard, on ajoute le Zordering ^^.
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

blendman a écrit :Si tu veux faire une rotation non pas en width/2 height/2 comme c'est le cas, je pense que ça peut servir ce centre
Certes mais pour le moment je ne suis pas arrivée à créer une fonction comme SpriteAnchor(Sprite, x, y) pour changer se point de rotation. (x et y varie de 0 à 1)

Exemple : SpriteAnchor(Sprite, 0, 0.5)

J'ai pu le faire en JavaScript par contre :p

Version sans modification du point de rotation
http://www.falsam.com/forum/data/tuto-S2D/demo1.html

Version avec modification du point de rotation
http://www.falsam.com/forum/data/tuto-S2D/demo1B.html

Juste pour le fun le code correspondant (Oui c'est hors sujet)

Code : Tout sélectionner

// Déclaration des sprites
var background, logo;

// Ouvre un écran et déclare la procédure de mise à jour de la scéne
OpenScreen("game", 10, 10, 800, 600, Update);

// Chargement de l'image représentant le background
background = LoadSprite("assets/image/blur1.jpg", 630, 410);

// Chargement de l'image représentant le logo 
logo  = LoadSprite("assets/image/html5logo.png", 256, 256);

// Définition du point de rotation (au centre)
AnchorSprite(logo, 0, 0.5);

// Procédure de mise à jour de la scéne
function Update() {
	// Efface la totalité de l'écran avec la couleur html spécifiée
	ClearScreen('#000000');
	
	// Affichage du background et redimentionnement en 800 * 600. 
	DisplaySprite(background, 0, 0, 800, 600);	
	
	// Affichage du logo)
	DisplaySprite(logo, 400, 300);	
	
	RotateSprite(logo, 0.1, true);
};
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
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

La version 1.4 est disponible.

Ajout
- SpriteFlipVertical(Sprite) Retourner un sprite verticalement.
- SpriteColorGrayScale(Sprite) Colorise un sprite en dégradé de gris.

Modification
- SpriteMirrorHorizontal(Sprite) devient SpriteFlipHorizontal(Sprite)
- SpriteFadeOut(SpriteID, Offset.b, Intensity.b) devient SpriteColorFadeOut(Sprite, Offset.b, Intensity.b)

Les exemples sont modifiés.

:arrow: Télécharger lixu.zip (Source et exemples )

On laisse mijoter tout ça le temps de déboguer si besoin.
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

falsam a écrit :Certes mais pour le moment je ne suis pas arrivée à créer une fonction comme SpriteAnchor(Sprite, x, y) pour changer se point de rotation. (x et y varie de 0 à 1)
visiblement, j'ai confondu avec un autre langage, on ne peut pas changer le point de rotation, Fred l'a mis en w/2, h/2, il faudrait lui demander d'ajouter une fonction SpriteHotSpot() ou SpriteAnchor() qui détermine le centre (qui servirait pour l'affichage et pour le centre de rotation, et zoom)

PS : c'est qui au fait, Dige ?
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: LiXu.pbi : Animation & Particule 2D

Message par falsam »

Dige est un membre du forum anglais. J'avais récupéré il y a quelques années une de ses fonctions.
Mais finalement je ne la retiens pas dans la version 1.4 que je viens de publier.
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
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: LiXu.pbi : Animation & Particule 2D

Message par blendman »

falsam a écrit :Dige est un membre du forum anglais. J'avais récupéré il y a quelques années une de ses fonctions.
Mais finalement je ne la retiens pas dans la version 1.4 que je viens de publier.
ben oui, il me semble que pour le miror, c'est mieux avec la transformation, c'est plus rapide (enfin, je crois).
Mais ça ne marche pas avec la 5.31 x64, uniquement en x86 ^^.
Répondre