Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Mini bibliothèque graphique multi plateforme  (Lu 833 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« 10 Avril 2012, 17:08:25 »

Salut à tous !

Je pensais à un truc depuis un petit moment…
Après avoir porté Scape sur Android et donc avoir du passer de procédural à événementiel je me suis dit que ce serait pas mal pour un jeu de ne pas avoir à s'embêter à changer la structure de mon code d'une plateforme à l'autre.

Du coup, après avoir regardé libgdx et la possibilité de compiler le même code sur différentes plateformes, j'ai eu envie de faire un peu pareil mais en plus simple évidemment.
En fait je ne veux pas utiliser la libgdx pour pouvoir porter mon jeu en deux clics sur la PlayBook aussi.
C'est pourquoi je pensais utiliser le SDK d'Android pour gérer l'affichage en 2D dans une SurfaceView avec un thread. Par contre pour la version desktop je sais pas encore quoi utiliser pour le rendu… :/

Dans l'idée on a en gros un launcher et une gestion événements spécifique à chaque plate forme et pour ce qui est de l'application on a juste à utiliser les classes définies par la bibliothèque pour gérer le rendu et le son.
Le coeur de l'application aurait donc un code indépendant en dérivant d'une classe aussi définie par la bibliothèque qui aurait différentes méthodes appelées par le launcher du genre handleEvent, draw, update (qui seraient par exemple appelées à chaque frame).

Tout ça pour faire un truc léger quoi (je compte pas d'ailleurs créer réellement de bibliothèque à proprement dit, juste avoir un code réutilisable quoi…).

Mais je me demandais comment ils faisaient avec libgdx pour que le projets Android utilise le code de la version Desktop pour compiler… Il suffit de lier les projets comme dans la vidéo ? Je suppose qu'il faut un peu optimiser le truc non ? Ce serait dommage que ça importe aussi tout le code inutile spécifique à la version desktop.

Un autre truc sympa serait de pouvoir gérer également les ressources aussi d'un seul coup… Ça doit être possible aussi je suppose. (Par exemple la version desktop prendrait les fichiers de drawable-hdpi). Mais ce qui serait pas mal ce serait de pouvoir tirer profit de fichiers langues aussi non ?

J'aimerai avoir votre avis.

Merci. Smiley
« Dernière édition: 10 Avril 2012, 17:24:43 par Sheeft » Journalisée


Pas si petit…
Reyhn Hors ligne
Jr. Member
**
Messages: 94


Voir le profil
« Réponse #1 : 10 Avril 2012, 22:19:13 »

Yop,

pour ce qui est du rendu graphique sur desktop (voire évènements et son aussi) je te conseillerais de jeter un coup d’œil à SFML.

Pour le double projet desktop/android de libGDX, si j'ai bien saisi le truc, effectivement le projet android importe toutes les sources du projet "de base" (pour pouvoir créer l'instance du jeu dans l'application android), et ensuite les fonctions de libGDX sont liées aux libs qu'on inclut (gdx.jar, gdx-backend-truc.jar, et les dossiers armeabi pour android) donc comme celles-ci sont spécifiques au projet et à la plateforme, on a les mêmes fonctions mais un code différent suivant la plateforme.

Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #2 : 11 Avril 2012, 08:57:50 »

Oui merci pour la SFML mais c'est du C++, je voulais faire un truc en Java pour que ça aille avec Android. Il y a JSFML qui m'avait attiré mais c'est pas encore sorti…

Sinon j'ai bien compris ça pour libgdx mais je me demandais si ça importait pas des trucs en trop du projet desktop… Dans le sens inverse, le code de l'activité ne serait pas importé par exemple ?

Je me demandais aussi comment étaient gérées les ressources parce que dans libgdx il n'y a pas de différents dossiers selon les résolutions si je ne me trompe pas…
Journalisée


Pas si petit…
Reyhn Hors ligne
Jr. Member
**
Messages: 94


Voir le profil
« Réponse #3 : 11 Avril 2012, 12:16:44 »

Ah oui effectivement j'ai pas trop réfléchi sur le coup ...  Azn
Remarque ça doit être possible d'utiliser les dll de SFML avec une interface java <-> C ou que sais-je ... Si on aime se faire chier  Smiley

Ben normalement y'a pas grand chose en trop dans la version desktop non ? A part le code spécifique au desktop justement.

Pour les différentes résolutions et libGDX je pense qu'il faut gérer ça a la mano suivant la résolution de l'appareil.
Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #4 : 11 Avril 2012, 13:06:27 »

Ah ouais c'est pas cool en effet…
Enfin remarque c'est utile que si on a fait des images avec les différentes résolutions…

Enfin moi ce que j'aimerai faire ce serait un truc du genre mais qui puisse gérer un peu tout ça…
Pour les ressources je sais pas trop… Y'a moyen de générer des headers automatiquement comme pour R (pour les ressources android) ?
Journalisée


Pas si petit…
Reyhn Hors ligne
Jr. Member
**
Messages: 94


Voir le profil
« Réponse #5 : 11 Avril 2012, 17:39:12 »

Y'a moyen de générer des headers automatiquement comme pour R (pour les ressources android) ?
Pour faire quoi ? Avoir une classe qui contient déjà des références des ressources ? (aucune idée  Roll Eyes )

Si tu veux gérer les différentes résolutions de manière transparente pour l'utilisateur, je pense que t'as que deux solutions :
  • le forcer à fournir une version de chaque image pour chaque résolution qu'il vise (ensuite tu peux raffiner en obligeant à les appeler pareil avec un suffixe par ex background_width_height_dpi.png, et en gérant ça toi même, lui se contentera de demander "background")
  • il fait une seule version de ses images et tu la redimensionne à l'affichage suivant la résolution de l'appareil (ou au chargement de la texture, c'est plus efficace)
Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 924


Voir le profil WWW
sexe : oui (ndPyroh : Ouais ouais...)

« Réponse #6 : 11 Avril 2012, 18:29:07 »

Enfin j'ai pas la prétention de créer une vraie bonne bibliothèque je veux un truc qui puisse me simplifier la vie pour faire du multi plateforme c'est tout.
Et je me demandais juste comment faire pour gérer les ressources avec un code unique…
Parce que pour Android c'est un indice (int) et pour pour PC en général on charge ça comme n'importe quel fichier avec le chemin…

Je sais pas si je m'embarque vraiment dans quelque chose de faisable… Je devrais peut-être pas m'embêter et faire mes jeux sur une plateforme puis les porter. Sad
Journalisée


Pas si petit…
Pages: [1]   Haut de page
Imprimer

Aller à: