![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Ouvrir sur le forum | Recherche | Messages du jour | Marquer les forums comme lus |
Projets Projets de développement amateur sur d'autres supports |
Publicité |
![]() |
|
Outils de la discussion | Modes d'affichage |
![]() |
#1 |
Super Modérateur
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
|
![]() Présentation : Bon ben voilà (encore) une librairie, qui était assez attendue par au moins une personne ![]() Wingraph est un essai de librairie que j'avais fait lorsque j'envisageais de redesigner l'API d'OSLib en C++. Finalement ça ne s'est pas fait et ce n'est pas plus mal. Toutefois j'ai repris la librairie il n'y a pas longtemps en pensant à une solution pour développer un défi de noël auquel tout le monde pourrait jouer. Je lui ai alors ajouté des spécificités avantageuses que ce nouveau modèle permet et "modernisée" un peu. Voici pour commencer un petit exemple de code: Code PHP:
Tout d'abord il faut savoir que c'est du C++. Donc il y a quelques notions à piger avant de commencer. Pour ça je vous suggère vivement de lire la doc, qui a une introduction bien utile à ce sujet. Mais basiquement là où vous aviez des structures dans OSLib vous avez maintenant des objets avec des méthodes et propriétés et opérateurs associés. Par exemple notre objet OSL_IMAGE est remplacé par un objet Image, qui se déclare comme tout objet C++: Code PHP:
Là encore je vous suggère vivement d'utiliser la notation pointeur comme OSLib et de ne pas initialiser directement les objets à moins qu'ils soient locaux. Rappelez-vous qu'on ne peut utiliser la lib qu'une fois initialisée, donc si vous créez un objet global il sera initialisé au démarrage du programme, avant même que main n'ait démarré, alors la librairie ne sera pas initialisée. La notation pointeur: Code PHP:
Sinon vous avez des objets pour d'autres éléments, comme les couleurs. Vous pouvez alors faire du calcul sur les couleurs: Code PHP:
Code PHP:
Code PHP:
Code PHP:
Code PHP:
Si on maîtrise bien, cela permet de généraliser beaucoup d'effets (au final une image n'est rien de plus qu'un rectangle texturé...). On a aussi l'introduction du calcul matriciel, qui peut aider énormément au niveau des transformations (rotation, etc.) et de la détection de collisions. Il est évidemment réservé aux utilisateurs expérimentés, mais il n'y a pas besoin de connaître quoi que ce soit en maths pour l'utiliser. Le projet wingraph_test propose un début d'interface nommé Wingraph UI, qui permet en très peu de lignes de créer des composants tels que des boutons qui peuvent recevoir des événements (cliqué dessus, etc.) et qui peuvent être agrandis ou tournés. Les matrices permettent de simplifier ce genre d'opérations à l'extrême, comme vous pourrez le voir dans le code si ça vous intéresse. Bref tout ça c'est génial mais comme d'habitude avec l'orienté objet: vous ne pouvez pas deviner ce qui est possible ou pas (quels objets, quels opérateurs, quelles méthodes, etc.), et si vous y arrivez par hasard il y a des chances que ça ne soit pas terrible notamment niveau performance, donc je vous recommande vraiment d'avoir la doc sous la main ![]() Il y a aussi quelques exemples, que vous pouvez télécharger directement ici: http://brunni.dev-fr.org/tmp/WGDemos.7z Vous y trouverez un début d'air hockey basé sur les réflexions que j'avais faites à l'époque où je souhaitais aider Dreamkey. Il y a aussi un programme affichant des flocons de koch, qui montre bien comment fonctionne le modèle objet de Wingraph. La lib peut se télécharger ici: http://brunni.dev-fr.org/tmp/Wingraph-1.0alpha.7z C'est une alpha, et comme je l'ai déjà dit c'est un essai. Je la finaliserai en fonction de vos commentaires et autres feedback. Merci! Galerie d'image : Historique : Commencé en... houlà 2007? Première release en ce 20 juillet 2009. Comment utiliser : Lire le readme ![]() Autres informations : -
__________________
[10.12.2018] PatrickBoy: codez vos jeux avec la puissance d'une borne d'arcade 16 bits! [21.01.2010] Emu Game Boy et GUI pour la coloration de jeux GB Partagez vos meilleures musiques de jeu vidéo! ![]() ![]() ![]() Dernière modification par Brunni ; 21/07/2009 à 22h43. |
![]() |
![]() |
Publicité |
![]() |
#2 |
Graphiste / Modérateur
|
![]() Comme d'hab, c'est trop technique pour que je puisse apprécier le truc à sa juste valeur, mais quelque chose me dit que je vais malgré tout en profiter
![]() Bon, il faut une news digne de ce nom... RIOLEHH, LÈVE-TOI ET NEWS, PUTAIN DE TOI ! |
![]() |
![]() |
![]() |
#3 |
Super Modérateur
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
|
![]() Boah c'est pas si technique hein
![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Membre confirmé
|
![]() Brunni tu es mon Dieu.
![]() Tu ne t'arretes jamais. Déjà que tu m'avais bluffé d'une force entre GbaGraphics et la µib... Un seul mot à dire: Bravo |
![]() |
![]() |
![]() |
#5 |
Super Modérateur
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
|
![]() Merci
![]() ![]() |
![]() |
![]() |
![]() |
#6 |
Super Modérateur
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
|
![]() J'ai modifié un peu l'exemple de Air Hockey (pas encore updaté) pour montrer que les fonctions de la lib sont plus générales que mes libs précédentes et ne limitent plus forcément votre jeu à la 2D.
![]() Ce que je vais dire là c'est pour les utilisateurs qui maîtrisent déjà bien la lib. C'est pas super compliqué mais ça fait appel à des concepts un peu plus avancés, qu'on retrouve en 3D. Donc pour faire ça il n'y a pas de fonction native, mais ça consiste en fait juste à définir une matrice de projection pour changer le point de vue. On se débrouille pour faire en sorte que l'observateur regarde notre plan Oxy habituel (2D) et ensuite on opère les transformations qu'on veut pour l'inclinaison et autres. Je sais que c'est du chinois dit comme ça, un exemple sera plus parlant: Code PHP:
Ensuite on peut dessiner sur notre écran incliné comme une table de jeu! Rappelez vous que lorsque vous faites moveScreen ou autre vous n'affectez pas ce qui a déjà été dessiné sur l'écran: ce sont juste les prochains objets qui seront dessinés plus loin en l'occurence. Ces fonctions affectent la matrice nommée "screen" dans Wingraph. Cette matrice définit les calculs à réaliser pour transformer les coordonnées d'un objet sur l'écran. Ainsi même si vous avez l'impression de dessiner les objets "tout droit", les opérations (rotation, déplacement, etc.) définies par la matrice screen feront qu'ils apparaîtront en fait inclinés sur l'écran. Pareil pour la matrice projection ici. On peut donc dessiner en 2D et dessiner par plan: par exemple pour dessiner un objet plus haut on peut faire ceci: Code PHP:
Code PHP:
![]()
__________________
[10.12.2018] PatrickBoy: codez vos jeux avec la puissance d'une borne d'arcade 16 bits! [21.01.2010] Emu Game Boy et GUI pour la coloration de jeux GB Partagez vos meilleures musiques de jeu vidéo! ![]() ![]() ![]() Dernière modification par Brunni ; 25/07/2009 à 09h09. |
![]() |
![]() |
![]() |
#7 |
Membre confirmé
|
![]() Je l'ai téléchargé et regardé un peu.
Je testerai quand j'aurai un peu de temps car ces dernières semaines, je suis full de chez full. Très intéressant l'effet 3D ![]() |
![]() |
![]() |
![]() |
#8 |
Administrateur
Date d'inscription: 09/11/2005
Messages: 3 750
|
![]() Arg saletés de vacances sans connexion au net, j'ai raté le lancement du topic ainsi que des explications
![]() J'ai du faire comme avant et me passer d'msn et de google pour faire ce que je voulais ![]() Sinon j'ai fait 2, 3 projets-conneries histoire de bidouiller avant de me lancer dans le défi, je me suis vraiment amusé (je te montrerais si tu veux). Comme quand j'ai découvert oslib, ça fait trop du bien de pouvoir faire enfin tout ce qu'on a dans la tête sans prise de tête de convertion, nombre de couleurs, nombres de sprites, etc... Merci Brunni ![]() |
![]() |
![]() |
![]() |
#9 |
Elite
Date d'inscription: 10/04/2006
Localisation: Pays de la moutarde
Messages: 901
|
![]() ça a l'air sympa ta lib Brunni
![]() ce serait cool une lib multi plateforme ...
__________________
Mon blog de dev - - Mon tutoriel sur la libfat -- DSPhoto Un bon programmeur est fainéant : il déteste refaire la même chose, il fait donc des fonctions ![]() Il est impossible de tout savoir ![]() 28.59848% au Geek Test |
![]() |
![]() |
![]() |
Liens sociaux |
Publicité |
Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s)) | |
Outils de la discussion | |
Modes d'affichage | |
|
|
![]() |
||||
Discussion | Auteur | Forum | Réponses | Dernier message |
[Projet] PatrickBoy | Brunni | Projets | 9 | 23/06/2009 23h06 |
[PROJET] A Touch of War | dem1980 | [NDS] Divers | 12 | 10/04/2006 17h05 |
[projet] Recherche codeur pour projet RPG | thoduv | [DEV] Divers | 2 | 03/12/2005 18h46 |