# USpeed Game Engine© 2011 - http://u.speed.free.fr/

### v2.1.0.230.2013.06.01

USpeed Devs©

## Qu'est-ce que le "USpeed Game Engine" ?

1. C'est un moteur de jeu : il permet de créer une application en C++ compatible avec les systèmes suivants :
   1. Sony PlayStation Portable©
   2. Microsoft Windows© (Testés : XP, Vista, 7)
2. Il est totalement gratuit ! Ne l'achetez pas et ne le vendez pas !
3. Il est la propriété intellectuelle de USpeed. Merci de me citer lors de son utilisation.

## Que contient ce document ?

Dans ce document, vous trouverez l'intégralité des informations disponibles sur le moteur de jeu "USpeed Game Engine" en ce qui concerne les outils proposés : les fonctions, les classes, les structures, les namespaces.

## Que contient le "USpeed Game Engine" ?

Le USpeed Game Engine contient un certain nombre d'outils qui ont pour finalité de faciliter le développement d'un jeu. Les fonctionnalités actuellement disponibles sont les suivantes :

- Couche audio avec chargement1 de fichiers WAVE (16 canaux possibles) et MODULES (1 canal disponible).
- Gestion des entrées/sorties :
  - Gestion des touches du clavier.
  - Gestion de la position de la souris, des pressions des boutons et de la molette.
  - Gestion des contrôleurs de jeu (Win32) et des contrôles de la PlayStation Portable.
  - Demande de connexion Wifi (assistant PlayStation Portable1).
  - Demande de saisie de texte de la part de l'utilisateur (PlayStation Portable et Win32).
  - Affichage d'une boîte de message de type notification ou question (PlayStation Portable et Win32).
- Chargement1 et rendu de polices d'affichage True Type Font (ttf) en UNICODE ou UTF-8.
- Chargement1/création d'images aux formats PNG, JPEG et TGA avec gestion de la transparence (si possible).
- Traitement de la couche réseau1 avec client et serveur TCP/IP. (8 à 32 clients possibles selon la plateforme).
- Affichage 3D accéléré OpenGL ou PSP-GU selon la plateforme :
  - Traçage en mode TRIANGLES (3 points par triangle) ou en TRIANGLE_STRIP (4 points pour un carré).
  - Application de textures issues de fichiers JPEG, PNG et TGA avec gestion de la transparence (si possible).
  - Application de caractéristiques "matériau" pour la surface : rendu Smooth ou à facettes, couleurs ambiantes, spéculaires, diffuse ou d'émission, taux de surbrillance.
  - Gestion de caméras (2 types : libre et avec point de visée).
  - Gestion de l'éclairage (8 sources de lumière possibles).
- Gestion physique :
  - Initialisation et sauvegarde d'états physiques (position, orientation, vitesses de déplacement et de rotation).
  - Choix d'une forme-type pour les collisions : cube, sphère, capsule ou cône.
  - Soumission à un champ de gravité et gestion des collisions.
- Gestion d'animation :
  - Système d'interpolations des translations et rotations en fonction du temps.
  - Prise en charge d'une liste de trames clés pour des animations plus élaborées.
  - Calcul de la rotation minimale entre deux orientations par simplification des angles.
- Gestion d'objets 3D :
  - Liste de "vertex".
  - Rotations/translations et mise à l'échelle.
  - Application d'un état physique pour être pris en charge dans le moteur physique.
  - Application d'un point d'ancrage pour fixer un object 3D à un parent.
  - Chargement1 de fichiers "USpeed 3D Model"2.
  - Utilisation d'un objet 3D en tant que surface pour de l'affichage 2D.
- Extension par script :
  - Intégration de l'interprêteur Lua.
  - Chargement1 de scripts Lua.
- Traitement divers de données :
  - Décodage/encodage en base 64.
  - Calcul de signature en md5, sha-256 et sha-512.
  - Chiffrage/déchiffrage AES.
  - Compression/décompression ZIP.
- API en C minimaliste permettant l'animation et l'affichage de surfaces 2D.
- Outils divers tels que :
  - Calcul matriciel 4x4 et mathématique des quaternions.
  - Approximations mathématiques.
  - Parcours de fichiers/repertoires.
  - Lecture de fichiers de PlayStation Portable© de type SFO.
  - Lecture1 de fichiers de paramétrage au format INI/properties.
  - Lecture/écriture de fichiers de ressource (pack de données) avec lecture en streaming, compression et cryptage AES-256.
  - Chronomètre précis à la milliseconde (voire à quelques microsecondes).

## Remerciements

- Merci à tous ceux qui ont fait les différentes bibliothèques utilisées (ZLib, PNG, Mikmod, JpegLib, Freetype, Bullet et Lua).
- Merci aux auteurs du PSPSDK Toolchain Kit qui permet de faire des Homebrews pour la PSP.
- Merci aux contributeurs de GCC et G++ ainsi que MinGW pour leurs super outils !
- Merci aux testeurs : Darlinko, Magdaluna, YY, Boss3000.
- Merci à pspZorba pour ses explications sur l'OSK (On Screen Keyboard).

## Les bibliothèques externes

Le "USpeed Game Engine" intègre les bibliothèques externes suivantes :

       Bullet Lib   : 2.76
       FreeType Lib : 2.3.5
       JPEG Lib     : 8b  16-May-2010
       MikMod Lib   : 3.1.11 (modifiée par USpeed)
       PNG Lib      : 1.2.8
       ZLib         : 1.2.3
       Lua Lib      : 5.1.4

- 1 : les chargements signalés sont réalisables à partir d'une zone mémoire (load from buffer) ou bien depuis un fichier (load from file).
- 2 : format particulier dont le convertisseur "OBJ/ASE -> US3DM" est disponible en téléchargement sur USpeed Devs - http://uspeed.fr/.
- 3 : actuellement indisponible pour l'exécution sur Sony PlayStation Portable en Firmware Officiel.