Sprite engine : de la 2d facilement

Soyez le premier à donner votre avis sur cette source.

Vue 10 946 fois - Téléchargée 741 fois

Description

SpriteEngine : de la 2d facilement !

Mais comment ?

J'ai réalisé 2 (enfin 3) classes pour gérer ca très facilement

Tout d'abord 1 classe TSprite:

gère :
  • la transparence (Couleur de transparence )
  • l'opacité (Canal Alpha )
  • les bitmaps 32 bits (forcement)
  • les collisions (Rectangle seulement pour le moment)
  • les ombres (pas encore très développé mais la base fonctionne )
  • les multi-images (présence de plusieurs Image au sein d'un même Bitmap

(horizontalement et verticalement )
  • vitesse et direction ... [ la méthode ComputeSPD et ce qui touche à ça sont de foxi ]


et une autre pour gérer ts les sprites facilement : TSpriteEngine
méthode pour afficher , bouger , effacer ,... tous les sprites présents dans le "moteur"
plus plein d'autres choses ...


la source SpriteEngine est un essai de traduction du SpriteEngine de Jedi-Sdl
Enfin plus inspiration que traduction ...

2 exemples sont dans le zip :

un mini jeu (c'est juste 1 exemple, donc pas très poussé) :
Flamme :
Vous contrôlez par la souris un personnage(Mario) et vous devez éviter les flammes

Utilise ParentList , isCollide , alpha , Coord.Z
Tous les sprites sont animés...

utile pour comprendre les bases :

Z-test : un exemple pour comprendre la coordonnée Z d'un sprite

Pur GDI , donc ni OpenGl ni DirectDraw , DirectGraphics ...
Facilement compréhensible par n'importe quel débutant amateur ;)

Pas d'installation nécessaire , juste uSprite à ajouter dans Uses et c'est parti :)

NB : uSprite et uFPS se trouvent dans le repertoire LIB , soit les ajouter
dans le répertoire LIB de Borland , soit les copier dans le dossier du projet

8 / 02 / 2009 :
Ajout de TAnimation pour faciliter l'animation des sprites
Procedure SetAnimation
Nouvelle technique pour la procedure SetIndexFrames (détaillé )
uFps , s'occupe de calculer les FPS
Ajout de ShowFPS dans SpriteEngine
Exemple MAJ avec SetAnimation

9/02/2009 :
Oups , petite erreur dans SetIndexFrames , corrigée

10/02/2009
Grosse MAJ , ajout de plusieurs choses utiles :
TypeCollisionClientRect
Show; Hide ;
Animation "PingPong "
+ Plusieurs démos :
SimpleAnimation
MultiAnimation
SimpleMove
ZTest
Flamme
Tous ont été MAJ % à la dernière modif de la lib

28/02/09
MAJ :
uBASS , unité pour initialiser facilement BASS (www.un4seen.com ), plus d'autres choses utiles

uStream , unité pour charger,lire,stopper,mettre en pause,... un son facilement (mp3,wave,ogg)

La fonction SetAnimation peut recevoir un son à jouer (en répétition ou pas )

Flamme à été MAJ (2 types de sol , un ennemi , un "score" ) ->utilise le son
Animation&Sound -> un exemple tout simple pour utiliser SetAnimation avec un son...


06/04/09 :
Maj de uSprite : 2 nouvelles procedures
il est seulement possible pour l'instant d'agrandir , et seulement en entier (donc 2 , 3 , n * plus grand )
procedure Scale ( AScale : integer);
procedure SetSize(AX,AY:integer);

uBASSMedia remplace uStream
uBASS a beaucoup changé (voir le Mixer proposé dans les démos pour comprendre )

2 nouveaux Exemples dans les démos :
SizeTest pour tester Scale et ScaleXY

et BASSMedia pour montrer l'utilisation de uBASS et uBASSMedia
c'est en fait un Mixer (comme une source que j'avais faite )
Utilisation de tous les effets de BASS (Chorus , Distortion , Echo , Flanger , Compression , Gargle , Reverb ) , possibilité de les personnalisé ( voir capture d'écran )

/!\ NB : cette source utilise la TcySimpleGauge de Maurico , à installer avant si vous voulez compiler /!\
->BASSMedia_Maurico

Il reste encore beaucoup trop de choses à faire , je poste et je modifierais ... mais blocus d'avril , faut bossé ;)


Flamme à changer : son midi joué en arrière plan pour montrer comment ce servir des Plugin avec uBASS

07/04/09 :
bon vu que je suis trop gentil , j'ai fait une version de mon mixer sans composants externes , donc tout le monde peut l'essayer
(mais il est moins beau (j'ai changé en brut dans le DFM et quelque petit truc dans le code ))
->BASSMedia

Utilisation de la propriété Precision du composant TcySimpleGauge dans la source BASSMedia_Maurico

Source / Exemple :


Devient vraiment trop gros pour être mis ici 

voir le dossier Lib&Bin :

uSprite.pas
uSpriteFPS.pas
uBASS.pas
uBASSMedia.pas

Bass.pas ->www.un4seen.com
bass.dll ->www.un4seen.com

cySimpleGauge.pas ->http://www.delphifr.com/codes/COMPOS-TCYCOMPONENTS-V2-02-DELPHI-DELPHI-2009_49709.aspx : auteur Maurico

Conclusion :


En cours d'évolution , la rotation arrivera bientôt
28/02/09 : Je ne pense pas qu'il y aura encore de grande évolution de cette librairie
mais des optimisations surement ... quand j'aurais plus de temps

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Nicolas___
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
ne t'inquiète pas, j'ai laisser les 2 versions dans le zip ^^
cs_MAURICIO
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Je vais pleurer si tu utilises plus mes compos ...

lol
Malheureusement, ce sera pas ajourd' hui non plus que je pourrais tester cette super source!

A+
Nicolas___
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
j'ai été trop vite pour faire la source BASSMedia sans la TcySimpleGauge de Maurico ,
il faut retirer des uses cyBaseMeasure, cyCustomGauge, cySimpleGauge

et dans procedure TMainForm.ProgressBarFxOnChange (Sender : TObject)
il faut remplacer case TcySimpleGauge(Sender).Tag of par
case TTrackBar(Sender).Tag of

désolé ;)

PS : je changerais ça demain ... ou au moins fin de semaine :)
Nicolas___
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
désolé du double post : pour voir la capture il faut vider le cache du browser (ou sous FF : ctrl+F5 )
Nicolas___
Messages postés
992
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
24 avril 2013
2
Maj plus ou moins importantes :

La source BASSMedia (Mixer ) est moins complet que mon précédent mais ce n'était pas le but , il permet toute fois de réaliser un mix avec tous les effets décrits plus haut

La source Flamme a aussi changé (ajout d'une musique de fond en midi pour montrer comment charger un plugin avec BASS )

la capture ne passe pas :(

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.