Matrix fall 3d 3.2 (screensaver matrix en 3d)

Description

Ecran de veille Matrix en 3D.
Mise a jour vers la 3.2

pour telecharger l archive complete contenant les textures:
http://simpleproject.open-design.be/index.php?page=show_project&id=2

Hello tout le monde.

Cette troisième version a été, en très grande partie, re-écrite afin d'optimiser du mieux que je pouvais certaines routines qui réduisaient considérablement le nombre d'images par seconde lors du passage à la 3D.
Une des nouveautès les plus importantes est l'ajout de la profondeur. Une classe permet de contrôler la caméra et de la faire voyager aléatoirement dans l'espace.
Comme pour la version précédente, j'ai utilisé Dx8.

Voici donc en gros laliste des différentes fonctionnalités personnalisables :

-affichage de texte personnalisable (différent de la deuxième version) avec effet. Les textes et timings sont modifiables via le panneau de contrôle.

-contrôle du nombre d'images rendues par seconde (permet de brider la vitesse d'affichage des images afin de garder un certaine stabilité au niveau de la vitesse)

-contrôle du multiplicateur de vitesse. Le multiplicateur de vitesse permet d'augmenter la vitesse de l'écran de veille sans pour autant devoir augmenter le nombre d'images rendues par seconde. Le multiplicateur de vitesse et le nombre d'images rendues par seconde sont liés, l'un affectant l'autre.

-contrôle des dimensions des caractères.

-contrôle du nombre maximum de lignes à afficher.

-choix de la carte graphique et de la résolution.

Personnellement, j'arrive à le faire tourner sans problème dans une résolution de 1280*1024*32 avec 100 lignes affichées. Le nombre d'objets affichés peut monter jusqu'à +- 2100.
Ma config : AMD 1.4 Ghz, 896 RAM, GeForce Ti 4200 128 Mo, Win2K

Quelques explications sur le fonctionnement de certaines fonctionnalités :

en gros, il existe une classe pour chaque "objet". L'objet le plus simple (de niveau 1) étant un caractère ou un effet (une surface sur laquelle est "collée" une image et/ou une couleur)
Ensuite viennent les objets de second niveau, il s'agit des classes gérant un groupe d'objet de premier niveau (caractère, effet,...).
Ensuite, il y a les classes de niveau trois qui gèrent les classes de niveau 2, et ainsi de suite.
Ce procédé permet de centraliser les opération afin de construire des effets plus complexes (effets de lumière, ligne composée de plusieurs caractères...)
Chaque objet de niveau 1 (caractère, effet) sait exactement ce qu'il doit faire dans une limite de temps qu'il lui est définie ou qu'il s'est définie. Il gére ainsi sa position, son opacité, sa durée de vie, sa texture,...

Contrairement à un plan 2D, la 3D nécessite que l'on affiche les objets dans un ordre particulier lorsqu'il s'agit de surfaces contenant une couche alpha. La surface se trouvant le plus près de la caméra doit impérativement être affichée en toute dernière. Dans le cas contraire, certaines surface peuvent se trouver cachées par d'autres censées se trouver derrières elles (parce que les surface se trouvant derrière ont été affichées après celles se trouvant devant...)
... en bref, il faut vérifier la profondeur de chaque ligne afin de les afficher de la plus eloignee a la plus proche de la camera.

Pour accentuer l'impression de profondeur, j'ai ajouter une fonctionnalité qui réduit l'opactié d'une ligne (composée de caractères) en fonction de sa distance par rapport à la caméra. Plus une ligne est loin de la caméra, moins elle sera visible.

La plupart des évènements sont contrôlés aléatoirement grace a un systeme d etat. Chaque objet possede donc un etat qui change tout au long du processus.

Comme d'hab, la source est entièrement commentée !
Laissez vos commentaires, remarques, idees, ... ca fait toujours enormement plaisir.

Bon coding à tous !

.: NoRabbit :.

Source / Exemple :


'
' pour telecharger l archive complete contenant les textures:
'
' http://simpleproject.open-design.be/index.php?page=projects
'
'
' faites aussi un tour parmis mes differents projets... ils sont pour la plupart sur les sites CodesSources.
'
' http://simpleproject.open-design.be/

Conclusion :


les touches :
f = affiche qques infos utiles lors du developpement
click souris = pause
escape = termine le programme

Compilez le avant de le lancer pour de meilleures performances.
Pour le "transformer" en ecran de veille, renommer l'exe en scr (matrix_fall.exe -> matrix_fall.scr), c est aussi simple que ca.
Et pour que windows le reconnaise en tant qu ecran de veille, copiez simplement tous les fichiers dans le dossier windows de votre disque.

Voila, ca ne devrait pas etre trop difficile a comprendre, la source est entierement commentee... desole pour les fautes d'ortho...

ciao et bonne prog.

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.