Pages: [1] 2   Bas de page
Imprimer
Auteur Fil de discussion: [Résolu] Activités pour un jeu  (Lu 1797 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 929


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

« 25 Février 2012, 11:57:58 »

Salut à tous !

Je suis en train de faire un tit portage de Scape sur Android pour le convertir en appli Playbook et bénéficier de l'offre  Grin (je remercie Valryon, Minishlink et Arhialia au passage qui m'ont vachement aidé à me lancer !)

Enfin bref, je me posais une question (enfin je vous la pose quoi) :
Pour un jeu vous utilisez plusieurs activités ou vous vous contentez d'une seule ?

J'hésite un peu à faire une activité pour chaque menu ou à simplement tout contrôler à partir d'une seule et gérer uniquement des View.
Après du coup je me demande un peu comment les gérer d'ailleurs…
Parce que j'ai pas le droit de changer la vue de mon activité depuis une vue si ?

Merci de votre aide ! Smiley
Journalisée


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


Voir le profil
« Réponse #1 : 25 Février 2012, 13:23:47 »

Salut,

j'ai pas du tout d'expérience sur Android mais pourquoi tu ne ferais pas simplement une seule activité avec des "états" ?
Selon l'état (intro, menu, jeu ...) tu appelles la méthode correspondante pour gérer les events, faire l'affichage etc non ? Tu faisais comment sur Wii ?
Tiens nous au courant ça m'intéresse  Smiley
Journalisée
Zipler Hors ligne
Full Member
***
Messages: 106


Voir le profil
« Réponse #2 : 25 Février 2012, 14:06:37 »

Je plussoie Reyhn.
Et au passage je pose une question : c'est quoi "l'offre" en quedtion Langue?
Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 929


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

« Réponse #3 : 25 Février 2012, 14:38:55 »

Sur Wii je faisais en procédural or on ne peut pas sur Android (enfin j'ai pas trouvé comment - et le SDK est pas fait pour quoi j'ai l'impression) qui est plus orienté événementiel du coup je suis obligé de changer pas mal de choses…
Avant j'avais une classe Game qui avais différentes méthodes qui correspondaient aux différents états du jeu.

Le truc c'est que sur Android, on affiche dans des vues via une méthode onDraw et on gère les interactions dans d'autres méthodes.
Le truc, c'est qu'il me paraît bête de me contenter d'une seule vue qui se comporte différemment selon où je me trouve (ça serait un peu le bordel).

Du coup, je pense que je suis obligé de passer par plusieurs vues.
Reste à voir ensuite si j'associe une activité à chaque vue ou si je me contente d'une seule.
J'ai du mal à voir ce qui est le mieux…
Journalisée


Pas si petit…
PypeBros Hors ligne
Hero Member
*****
Messages: 726


Voir le profil WWW
Posez-vous les bonnes questions

« Réponse #4 : 25 Février 2012, 17:24:21 »

on pourrait imaginer que tu utilises toujours la même vue, mais que ton objet qui a un "onDraw" peut être lié à différents "States":

Code:
   Game::onDraw(GraphicContext gc) {
       if (state!=null) state.draw(gc);
       else {
           // rendu par défaut (pause?)
       }
       // partie commune ch*ante
       if (effect!=null) effect.render(gc);
       // genre flusher le buffer, positionner la caméra, etc.
   }

   MenuState::handle(Input in) {
       if (input == UP) { selected--; effect=MoveSelection; }
       if (input == DN) { selected++; effect=MoveSelection; }
       if (input == GO) { game.state=menu[selected]; effect=FadeIn; }
   }
ou qqch du genre.
Journalisée

Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 929


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

« Réponse #5 : 25 Février 2012, 19:15:47 »

Oui c'est ce que je disais qui ne me semblait pas adapté…
Je pense que c'est vite le bordel étant donné tout ce que j'ai…

Et puis les différentes vues sont faites pour ça…

D'ailleurs, je ne fais pas les même choses dans chaque.
Je compte de toutes manières utiliser une seule vue pour les niveaux et quand on appuie sur le bouton pause (mais j'en aurai d'autres pour les menus).

Là ce que je me demandais surtout c'est si je devais utiliser plusieurs activités ou pas. Et sinon, comment gérer proprement le changement de vue dans une seule activité ?

Merci Smiley
Journalisée


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


Voir le profil
« Réponse #6 : 25 Février 2012, 19:30:48 »

Ben le modèle est toujours valable en ayant quelque chose dans ce goût là :

Code: (java)
public void onDraw()
{
    switch(gameState)
    {
        case GameState.INTRO:
        // le truc à dessiner pour l'intro
        break;

        case GameState.MENU:
        // idem pour menu
        break;

        // etc
    }
}

Ensuite pour les évènements tu peux avoir un Listener qui écoute tout l'ecran, et selon ton gameState tu dois pouvoir gérer l'action à effectuer en conséquence en fonction de la position de tes objets et tout et tout, par contre là je sais pas du tout si c'est la façon de faire/une bonne idée  laugh

Mais basiquement avoir plusieurs vues doit je pense (je sais pas comment ça marche) nécessiter d'avoir une structure un peu comme je te l'ai mis au dessus pour savoir quelle vue afficher non ?
Dans ce cas ça change pas énormément par rapport à faire le dessin suivant l’état du jeu  Wink

Fin de la parenthèse si ça répond pas trop à ta question Langue
Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 929


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

« Réponse #7 : 25 Février 2012, 19:53:59 »

Pour l'offre c'est RIM qui offre une Playbook a chaque développeur qui envoie une appli sur leur app store avant le 2 mars.

Ben je comprends l'idée hein ?
C'est juste que je demandais ce qu'il valait mieux faire sur Android quoi. Azn
Journalisée


Pas si petit…
t4ils Hors ligne
Branleur
Elite Member
**
Messages: 963


Voir le profil WWW
« Réponse #8 : 25 Février 2012, 20:10:47 »

C'est dommage que leur moulinette soit si restrictive dans le contenu de l'application android de base. Pas de code natif par exemple, et libgdx en utilise plein Azn Donc pas possible pour moi de porter mes jeux Smiley
Journalisée

Le codage amateur ? Parce que je le veux bien.
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 929


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

« Réponse #9 : 26 Février 2012, 00:19:44 »

Oui heureusement que Minishlink m'a mis en garde parce que moi j'ai failli l'utiliser.

Enfin bon… Je suppose que libgdx n'utilise pas de vues et d'activités et que donc tu peux pas m'aider non plus t4ils ?

Je voudrais juste savoir si y'avait quelque chose à privilégier. Je parle de bidouiller un truc qui marche Azn
Journalisée


Pas si petit…
t4ils Hors ligne
Branleur
Elite Member
**
Messages: 963


Voir le profil WWW
« Réponse #10 : 26 Février 2012, 11:26:46 »

Nop, pas d'activité. La librairie configure une zone openGL à l'écran et on vient dessiner dedans, comme sur DS ou Wii.
Journalisée

Le codage amateur ? Parce que je le veux bien.
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 929


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

« Réponse #11 : 27 Février 2012, 20:59:37 »

Ah ouais, ça c'est cool Cheesy

Enfin bref, ça ne résout pas mon problème vu que je l'utilise pas.

-------------------[EDIT]

Bon j'ai finalement opté pour des activités, mais j'ai un problème avec Intent… (merci Arhialia)
J'ai voulu le faire dans la view associée à ma ScapeActivity mais quand je passe en argument ScapeActivity.this, j'obtiens l'erreur : "No enclosing instance of ScapeActivity in scope"… Sad

Bon avec un getContext() ça a l'air de passer.
« Dernière édition: 27 Février 2012, 21:13:48 par Sheeft » Journalisée


Pas si petit…
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 929


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

« Réponse #12 : 29 Février 2012, 18:26:50 »

D'ailleurs par rapport à ce que vous me disiez, pour garder une même vue… (je vais me limiter à deux, une pour le jeu, une pour les menus) vous feriez comment par rapport aux images ?
Journalisée


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


Voir le profil
« Réponse #13 : 29 Février 2012, 21:42:09 »

Comment ça par rapport aux images ?

La méthode classique c'est d'en charger 1 au début du jeu, l'afficher et charger toutes les autres pendant ce temps  Tongue
Tu peux aussi avoir une classe qui se chargera de les charger/afficher/libérer pour toi, et qui te les garde stockées au chaud dans une petite hashmap, classées par leur petit nom (il me semble bien que ça se fait ... et ça évite d'avoir ouate mille Texture fond1, logo, fond2, perso ...; etc dans ta classe).

Si il y a une subtilité liée aux vues/activités ma réponse est sûrement caduque.
Journalisée
Sheeft Hors ligne
Petit slip
Vraiment petit
*
Messages: 929


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

« Réponse #14 : 29 Février 2012, 21:58:07 »

Non pour le coup ça va. Azn

J'ai pas pensé à faire une hashmap, c'est sûr que c'est mieux (mais j'ai pas trop réfléchis à cet aspect).
Mon problème maintenant c'est pour libérer la mémoire justement…
Avec cette méthode si je décide de libérer la mémoire (et encore je suis pas sûr de l'efficacité de la méthode recycle()), même si je le fais après avoir chargé les nouvelles, ça fait quand même planter mon appli puisqu'à priori elle essaie quand même de les afficher… Comme si ça vidait la mémoire en même temps que ça continue à afficher les images concernées et BOUM !

Pourtant j'ai pris soin de changer d'état avant de vider la mémoire (ce qui veut dire que j'ai d'abord chargé les nouvelles images d'abord et que du coup je stocke beaucoup de trucs à la fois pour rien…). Sad
Journalisée


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

Aller à: