Bibliotheque SDL

BIBLIOTHEQUE SDL YOANN BASQUIN

1) Definition de SDL

 

SDL est une abréviation de Simple Direct media Layer

SDL est une bibliothèque  tierce en C qui permet de coder des jeux vidéos

Pourquoi appelle t’on cette bibliothèque une bibliothèque « tierce » ?

Il existe deux types de bibliothèque

-Standard :  qui est compris par tout les ordinateurs sans n’avoir rien à ajouter , comme «  printf »

-Tierce : qui se télécharge et qui se rajoute ,  c’est-à-dire que l’on rajoute des fonctionnalités au programme grâce à des bibliothèques tierces , elles ne sont pas installés par défaut

 

Sam Lantinga crée la bibliothèque en 1998. L'idée lui vient tandis qu'il faisait un portage d'application de Windows vers Macintosh. Peu après, il utilise SDL pour porter Doom sur BeOS. Sam travailla ensuite pour Loki Software et d'autres bibliothèques libres se joignant à SDL, telles SMPEG et OpenAL.

Doom est jeu video de tir à la première personne qui est le premier jeu à supporter le multijoueur et la possibilité pour les joueurs de créer leur propre contenu

La version 2.0.0 est publiée le 12 août 2013 Au nombre des changements principaux, la possibilité d'accélérer matériellement le rendu et un changement de licence : licence Zlib à la place de la LGPL.. La compatibilité avec certains systèmes n’existe plus comme par exemple Atari

La version 2.0.6, sortie le 22 septembre 2017 ajoute le support multiplateforme de l'API graphique Vulkan via le fichier SDL_vulkan.h, , le support de plusieurs nouveaux contrôleurs de jeu et un certain nombre d'améliorations dans les fonctions utilisées pour leur gestion

 

Vulkan est une interface de programmation graphique qui souhaitent remplacer OpenGL à terme en exploitant plus efficacement les architectures informatiques modernes

 

Quelques caractéristiques :

  • Meilleure gestion du multiprocesseur, les différents processeurs pouvant envoyer en parallèle des commandes à exécuter ;
  • Un pilote simplifié, en donnant davantage d'accès aux commandes du GPU et à la gestion de sa mémoire au CPU ;
  • Une meilleure adaptation aux plates-formes mobiles
  • La simplification des pilotes et le langage unifié devrait permettre de réduire pour les développeurs d'application, les difficultés de portabilité du matériel d'un constructeur à un autre

 

 

1) Les avantages de cette bibliothèque :

 

  • C'est une bibliothèque écrite en C, elle peut donc être utilisée pour les programmes en C et que comme la plupart des bibliothèques écrites en C, il est possible de les utiliser en C++ ainsi que dans d'autres langages.
  • C'est une bibliothèque libre et gratuite: Cela permet de ne pas avoir besoin d’investir pour pouvoir utiliser cette bibliotheque . Trouver des bibliothèques libres et gratuites n'est pas très difficile, il en existe beaucoup aujourd'hui. Une bibliothèque libre est tout simplement une bibliothèque dont vous pouvez obtenir le code source.
  • C'est une bibliothèque multi-plates-formes. Que vous soyez sous Windows, Mac ou Linux, la SDL fonctionnera. Elle peut fonctionner sur des multitudes de système d’exploitation et pas seulement les plus connus , même sur les anciennes machines comme Atari , Nintendo 64 , cela pourrait fonctionner

 

1.2)Les possibilités de cette bibliothèque :

SDL est une bibliothèque « bas niveau » ce qui signifie que elle disposent de fonctions basiques , souvent il n’y a pas beaucoup de fonctions car on peut tout faire avec , donc les programmes sont écrit plus rapidement

Quelques exemples :

Afficher des images

Faire des dessins

Pouvoir ajouter une manette à son jeu vidéo

Parmi les modules disponibles pour la SDL, les plus connus sont :

  • SDL_ttf : gestion des polices TrueType Font
  • SDL_image : gestion de plusieurs formats d'images: BMP, GIF, JPEG, PNG
  • bibliothèque de primitives pour le dessin 2D
  • SDL_net : gestion réseau.
  • SDL_gfx : rotation et zoom sur les surfaces.
  • SDL_mixer : gestion de plusieurs format de sons (MP3...).

 

Toutefois il est impossible de faire des jeux en 3D avec SDL , son utilisation se limite à la 2D donc des jeux comme casse brique ( même des jeux comme Sonic ,Mario  existent en 2D)

Pour l’installation de la bibliothèque , tout dépend du logiciel de programmation que vous utilisez et quelle OS , il y a plusieurs façons de l’installer et c’est assez complexe , des tutoriels sur internet sont disponibles

FreeCIV qui est un jeu Open Source de stratégie à était crée avec la bibliothèque SDL

 

2) Presentation de la manette

Cette manette est une manette Xbox , elle fonctionne avec la Xbox One de Microsoft et fonctionne aussi nativement sur PC

J’ai choisit cette manette pour mon exemple sur SDL car elle est intégrée nativement à Windows , donc pas besoin d’ajouter des pilotes etc , contrairement à la manette de son concurrent qui n’est pas reconnu nativement sur Windows

Cette manette contient 9 Boutons , 4 gachettes et fonctionne avec ou sans fil quand elle est connectée à la console  , et fonctionne en filaire au PC ( Micro USB )

1 Stick analogique droit 8 Touche START
2 Bouton multidirectionnel (BMD) 9 Gâchette droite
3 Stick analogique gauche 10 Gâchette haute droite
4 Touche Back A Touche A (touche verte)
5 Gâchette haute gauche B Touche B (touche rouge)
6 Gâchette gauche X Touche X (touche bleue)
7 Touche Xbox Guide Y Touche Y (touche jaune)

3) Presentation du code

3.1) Code pour savoir les caractéristiques de la manette

http://hpics.li/b1a1bb2 ( j'ai uploadé en ligne car l'upload sur wordpress ne fonctionne pas)

Ce programme permet de reconnaitre une manette connecté sur un OS ( ici Windows ) et permet de donner des informations précises sur cette manette

On remarque que pour pouvoir faire reconnaitre la manette on utilise les fonctions de la bibliotheque

Par exemple pour savoir simplement le nombre d’axes , de joystick etc , il suffit d’utiliser SDL_JoystickNum «le nom de la caracteristique » (pJoystick) comme SDL_JoystickNumButtons(pJoystick) pour savoir le nombre de boutons

Je rajoute un system(« PAUSE ») ; à la fin du code pour permettre de laisser la console ouverte ,sinon elle se ferme directement

3.2) Code pour savoir les mouvements de la manette

http://hpics.li/9a0ecd2 (j'ai uploadé en ligne car l'upload sur wordpress ne fonctionne pas)

Ici ce code permet de savoir si un Bouton est appuyé ou non !

Lorsque qu’il est appuyé la console affiche «  Bouton 1 appuyé » par exemple

Pour pouvoir faire cela nous avons besoin de SDL_JoystickUpdate qui prends en temps reel l’information que fait l’utilisateur sur la manette

On crée une variable i qu’on initialise à zero et lorsque un bouton est utilisé on lui rajoute +1

On remarque que l’on utilise encore la même fonction SDL_JoystickNumButtons( pJoystick) comme utilisé dans le code precedent

 

http://hpics.li/760c4b6 ( (j'ai uploadé en ligne car l'upload sur wordpress ne fonctionne pas)

Ce bout de code permet de savoir l’action exercé sur le chapeau en temps reel

On utilise encore SDL_JoystickNumHats(pJoystick) comme dans le premier code pour savoir l’information sur la chapeau

Le chapeau à 4 position , haut/bas/gauche/droite et elles peuvent être affichées en temps reel sur la console grâce à ce code

 

4) Conclusion

 

Cette bibliothèque permet de nombreuses choses, les bouts de code présentés sont des simples fonctions permettant d’avoir les informations sur la manette et pour pouvoir ensuite essayer de l’implémenter dans son jeu vidéo actuelle ou dans son futur jeu vidéo qui peut être crée grâce à cette bibliothèque

Pour les personnes voulant créer des jeux en 2D , SDL est une bibliothèque superbe, simple d’utilisation

Lorsque des personnes veulent créer des jeux commençant à avoir des graphismes plus élaborées ,gameplay plus efficace etc , alors ils devront se tourner vers d’autres bibliothèques comme OpenGL , Unity qui est un moteur de développement

 

Actuellement les nouveaux jeux videos sont tous en 3D , les consommateurs veulent des jeux avec des graphismes toujours plus poussés , les jeux en 2D ne sont plus à la mode , mais pour apprendre à programmer , cela suffit amplement.

 

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *