Sprite engine : de la 2d facilement

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

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.