Accueil > Développement, Jeux en ligne > La première pierre est posée avec Zend Framework

La première pierre est posée avec Zend Framework

Comme promis, un billet pour la fin de ce week-end plutôt ensoleillé. Je vais parler un peu plus de technique, ça ne va pas forcément tous vous parler, je vais cependant essayer d’être le plus clair possible. J’ai vu un peu d’activité sur le forum, merci à ceux qui font encore un peu vivre le projet ;) . L’activité reprendra pleinement son cours lors de l’intégration de VOS idées le mois prochain.

Le développement, d’ailleurs, qui n’a, on ne dirait pas comme ça, pas commencé ce mois-ci, vient de voir sa base effective avec Zend Framework. Pardon ? Zend Framework ? De quoi parle-t-on ?

Zend Framework

Bon… Nous allons déjà revenir au début du projet. Tout a commencé en 2006, je sortais d’un DUT informatique et, pour ne pas perdre la main, et comme le web m’a toujours bien intéressé, j’ai souhaité rejoindre un projet de jeu en ligne. Je me suis dit que s’il y avait d’autres personnes autour de moi, ce serait plus facile de ne pas perdre sa motivation. Mais j’ai l’impression que c’est quelque chose que l’on rencontre pas mal dans les projets personnels, il faut savoir se motiver.

phpA donc commencé le développement. En PHP. Tout le monde connaît ? Au pire, allez faire un tour sur leur site, http://www.php.net. Il s’agit d’un langage de programmation côté serveur. Pour faire un jeu en ligne orienté navigateur, il y a plusieurs solutions : jeux flashs, d’autres langages… PHP est populaire et c’est ce que je maîtrisais le mieux jusqu’à présent. Après quoi j’ai commencé par faire la partie membre du site, messagerie, etc. Pour au final m’arrêter sec car la structure n’allait pas : au fur et à mesure, cela devenait complexe.

Ah oui. Peut être est-ce le souk dans la tête du programmeur ? Les choix difficiles ? Qui plus est, depuis 3 ans, la structure a du changer deux ou trois fois, entièrement. C’est dire. C’est plus qu’embêtant, de partir quelque part pour recommencer à zéro. Peut-être certains d’entre vous connaissent ce dilemme ?

Ne nous égarons pas : après trois pâtés de site infructueux, j’avais besoin d’une structure viable pour développer le jeu. N’est-ce pas ? Disons que l’on peut tout développer en deux semaines comme un barbare (ou pas, cela dépend des gens, à nouveau), mais dans un souci de rigueur et de maintenance du code, je souhaitais faire les choses bien. Par hasard, je suis tombé sur les « framework », littéralement cadres ou environnements de travail. Et plus particulièrement sur l’architecture « MVC », Modèle-Vue-Contrôleur. Quoi qu’on en dise, ça donne de la structure à votre projet. Si vous avez du mal à en faire une stable dans le temps. La plupart des frameworks tirent cet héritage de RoR, ou Ruby-On-Rails, qui est un framework qui a fait ses preuves dans un autre langage de programmation. C’est ainsi que j’ai eu le choix entre plusieurs frameworks PHP, entre autres, pour ne citer que ceux que j’ai en tête :

  • CakePHP
  • CodeIgniter
  • Symfony
  • Zend Framework
  • Prado
  • Et d’autres…

Je dois avouer qu’au final, j’ai toujours ce problème de choix… certains ont moins de mal à choisir, mais ce n’est pas mon cas. Des fringues, un appareil électronique, la couleur de ma pochette de brouillon… bon, c’est presque être indécis ça non ? Alors tout pareil, on voit des avis pour, des avis contre, chacun défend son outil. J’ai finalement opté pour Zend Framework, comme l’indique le titre de ce billet. Eh oui. Pourquoi, me dira-t-on ?

Symfony fait aussi bien dans son rôle, mais sa structure englobe trop ce que vous voulez faire. Zend Framework permet d’avoir une modularité (je ne voulais pas une vraie structure moi au début ? Je me contredis là…), mais tout en ayant également sa propre structure que l’on est libre de choisir. J’ai aimé la façon de voir les choses de Zend Framework, et commencé quelques petits projets avec, ce qui m’a particulièrement convaincu… Jusqu’à présent. Il est facile de me faire remettre en question mes choix en ce moment j’ai l’impression. Bon, CakePHP et CodeIgniter, allez savoir pourquoi, de même, je n’ai pas autant accroché sur les structures de ces deux frameworks. Cela ne veut pas dire qu’ils ne sont pas bien, au contraire. Ah je crois également que l’un d’eux est resté calé sur PHP4.

Un autre avantage pour ZF, bien que jeune, celui-ci est développé par des gens qui contribuent directement à l’avenir de PHP. Autant dire que niveau pérennité, ça va. Symfony a son avantage dans sa communauté également : la documentation, les tutoriels pour démarrer, là, j’avoue, ils se débrouillent bien.

ZF, pour débuter, il faut un peu lutter. Il n’y a pas de « cookbook » avec un joli manuel sur comment démarrer au jour le jour. L’architecture MVC des frameworks s’est vue quelques fois critiquer d’ailleurs, comme quoi la plupart des frameworks PHP ne respectaient en fait pas la vraie architecture… A vrai dire, cela ne change rien pour moi. Le patron de conception est là, ça aide et c’est tant mieux. tant pis si ce n’est pas vraiment du MVC… on trouvera un autre nom ^^.

Bref, je m’y suis fait, et maintenant, je suis prêt à démarrer. Reste un autre problème des frameworks en général : ils sont… LENTS. Tous intègrent un système de cache qui permet de conserver des données au lieu de les régénérer à chaque fois. Maintenant, allez appliquer ça pour un jeu par navigateur… pas très possible. On verra après ce que l’on peut faire mais cela reste très dynamique.

En tout état de cause, nous verrons les tests préliminaires à partir de septembre, reste que le choix d’un framework, une fois initié, accélère considérablement le développement: plus besoin de s’occuper de votre structure, des gens s’en occupent pour vous… Vous n’avez plus qu’à vous concentrer sur la partie « cool » du développement.

D’ici là, rendez-vous bientôt pour d’autres billets sur le développement, les technologies web appliquées aux jeux en ligne (ou par navigateur), n’ayez pas peur de réagir !

  1. Alexandre
    Alexandre
    25/08/2009 à 00:27 | #1

    Salut,
    Dans le cadre de la création d’un site web, une sorte de Cityvox, je me vois d’utiliser soit un CMS du type Joomla, Spip, et intégrer des modules. Soit tout coder à la main, ou soit coder à la main en utilisant un framework. J’en ai jamais utilisé.

    Pense tu que quelle solution serait la meilleure ?

    Sinon bonne chance pour le développement du jeu !

  2. scorpe51
    scorpe51
    25/08/2009 à 10:07 | #2

    Salut Alexandre!

    Eh bien je pense que tu as en tête l’éventail de solutions qui s’offrent à toi pour un développement plus rapide de ton application.

    Au point où j’en suis arrivé, je dirais tout d’abord que tout dépend de tes besoins (ça c’est la phrase bateau ^^). Cependant je suis très orienté modularité, maintenance et évolution facile et rapide, donc même pour un petit projet j’aime avoir une structure relativement bien faite pour accomplir ces tâches. Cependant pour un tout petit site, c’est vrai qu’il est possible de coder le tout depuis le début, à la main.

    Maintenant à chaque projet on a le droit à une répétition des tâches comme la structure du site, la partie utilisateur, inscription, sessions, etc… Donc là tu te dis, pourquoi ne pas réutiliser toujours le même outil?

    Dans cette optique, un CMS ou un framework ça te permet de te concentrer sur la partie applicative et fonctionnelle de ton site, son but en clair. D’autres font très bien pour toi ce que tu pourrais te taper à chaque projet. Après, il faut avoir confiance en la structure que tu choisis. Pour ma part, comme je l’ai écrit dans ce post, à force de faire ma structure, j’ai préféré en choisir une mûre qui m’aide plutôt que de refaire la mienne. Avoir la sienne, ça impose, en plus de ta partie fonctionnelle (le coeur de ton application), d’avoir la structure à maintenir, corriger, etc… Forcément tu la maîtrises parfaitement, mais imaginons que quelqu’un veuille développer avec toi? Enfin je me voyais pas en plus faire une doc de ma structure.

    Du coup, la belle affaire, le développement rapide en choisissant une structure. Cependant, il y a aussi une courbe d’apprentissage. Que tu choisisses le CMS ou un framework, il faudra apprendre la structure pour pouvoir adapter ou créer ton site.

    D’ailleurs, profitons-en, ces développements basés framework et CMS sont à la mode. C’est hype ;) . Mais ça aide!

    Le CMS (il existe Drupal aussi qui me paraît également puissant, mais les deux que tu as cité sont bons également, j’ai utilisé Joomla auparavant), c’est d’abord orienté génération de contenu. Sûr, il existe pour la plupart une tripotée de plugins, et il te faudra apprendre comment écrire ton module. Alors je connais peu Cityvox, mais si tu penses que tu n’auras pas à retoucher les fondements du site, il est effectivement possible d’adapter des modules afin que cela corresponde à tes besoins. Il faudra aussi apprendre le schéma du style du site pour l’adapter à tes besoins, mais tu peux effectivement obtenir quelque chose de très personnalisé. De plus, si la communauté est active, tu as souvent des mises à jour… qui impliquent que ton code et tes modules doivent être compatibles. C’est là où si tu veux avoir ton CMS à jour, ça posera sûrement quelques problèmes si tu as retouché au coeur de l’application. Je suppose que ces CMS sont suffisamment bien pensés pour que tu puisses adapter le site sans trop changer le noyau.

    Du côté du framework, là encore, si tu as des besoins spécifique, ça va t’aider à développer plus rapidement mais il faut apprendre à développer sur le système que tu as choisis. Zend Framework ne t’impose pas de structure bien que j’ai choisi celle qu’ils proposent, et ZF tends à se rapprocher de Symfony de ce côté (c’est ce qu’on lui a reproché au début, de pas être assez orienté « framework »). Symfony propose sa structure et tu es « contraint » de t’y adapter. C’est plus fort côté Symfony je pense mais au moins tu ne te prends pas la tête à savoir comment tu réalises telle ou telle action.
    En utilisant un framework, tu vas pouvoir faire des applications plus personnalisées je pense, mais ça te demanderas peut être un peu plus de travail que d’adapter un CMS. Pour ce qui est de leur lenteur, un site comme cityvox doit pouvoir être bien adapté à un système de cache, pas de problème de ce côté là je pense.

    Pour faire un jeu web, en tout cas, j’ai abandonné l’idée de tout faire à la main (à moins que j’y sois à nouveau contraint), et ça ne m’arrangeais vraiment pas d’adapter un CMS.

    Je vais couper court, ça fait un sacré commentaire, limite j’aurais pu en faire un billet (ce que je vais peut être faire ^^), mais pour conclure, là encore c’est difficile de t’orienter. Ça dépend vraiment de tes besoins. Tu ne vas peut être pas aimer devoir te plier au CMS, ni te plier au système du framework (je trouve les principes du framework attrayant, surtout quand on est une brebis égarée sur sa structure ^^). Si ça ne te dérange pas, alors réfléchis vraiment à la personnalisation de tes outils, en se posant les bonnes questions. Malheureusement c’est le matin là, je vais pas pouvoir le faire à ta place ^^.

    Je sais bien que la plupart du temps, ce genre de commentaire ne fait que éclairer la situation, développer les avantages et inconvénients de chaque solution, et souvent il se trouve qu’on n’est pas satisfait. Mais je vais difficilement pouvoir choisir à ta place ;) .

    Je pense tout de même que l’adaptation d’un CMS type Joomla, Spip, Drupal, etc., te permettrais d’aller plus vite. Mais si tu as des besoins vraiment spécifiques et que tu ne te sens pas aller dans les fondements du CMS, adopte plutôt un framework, qu’il faudra apprendre mais dont tu maîtriseras la partie application de ton site avec une structure bien connue.

    Si les deux solutions ne te plaisent pas, alors… Notepad(++) forever :D .

    J’espère que ce commentaire t’aura été utile, et merci de suivre le développement ;) .

  3. Alexandre
    Alexandre
    25/08/2009 à 16:59 | #3

    Salut,

    Merci pour cette longue et claire réponse. Je commence par la fin (ce que j’ai lu en dernier ^_^) Je suis sous Linux (Gnome) donc Bluefish ou Gedit forever ! (J’utilise gedit depuis quelques mois mais sinon Bluefish)

    J’ai donc installé Joomla pour voir si il pouvait convenir à mes besoins. Il en couvre je dirait 60 % avec ses modules je dirait 90 % Le problème viens du fait que sa deviens vite fouillis, créer la dizaine de modules, la dizaine de catégories, la dizaine de menus qu’a besoins UNE SEULE ville sa fait le bordel à la fin (Déjà qu’avec une sa commence à faire le bordel …) J’hésite donc encore … Je ne peux pas dire que mon niveau en PHP soit énorme (Le Site Du Zéro apprend le « minimum »). La chose qui me fait le plus redouter de « coder moi même » est la sécurité. En effet, sur un CMS comme Joomla la communauté est active, les dev aussi, c’est vite corrigé. Alors que coder tout de A à Z (ou utiliser un framework) peut être décisif pour la sécurité de mon site. Reste à voir … Le mieux est qu’a la fin, l’ajout d’une ville, l’ajout d’un administrateur pour une ville, se fasse de manière rapide (Type le formulaire d’une page)

  4. scorpe51
    scorpe51
    25/08/2009 à 17:52 | #4

    Je vois ^^. C’est vrai que j’ai eu cette impression aussi. Les CMS permettent d’énormes possibilités s’ils sont correctement exploités, mais, forcément, ils proposent une légion de modules et ça peut devenir problématique.

    Par exemple, le problème que j’avais eu avec Joomla était le passage à la version 1.5. J’étais en version 1.0 avec moult modules installés, et la procédure de mise à jour avec les modules m’a toujours paru très galère avec possibilité de perte de données entre temps. Je suis du coup toujours en version 1.0.

    Après c’est vrai que coder des besoins spécifiques inclut le fait de comprendre correctement la structure (penche toi également sur Drupal tout de même, ça m’a l’air puissant, ou va faire un tour sur http://php.opensourcecms.com/). En revanche, comme tu le dis, niveau sécurité tu es plutôt tranquille, mais cela n’exclut toujours pas les failles que tu pourrais créer de par tes modules.

    A savoir tout de même que les frameworks que j’ai évoqués (je pense que c’est le lot de tous) permettent l’utilisation de modules d’accès restreint avec authentification. Tu peux également contrôler facilement qui a le droit d’accéder à quelle page grâce à leur système, et eux seuls maintiennent la librairie, tu ne fais que l’utiliser. Cependant, je soulignerai tout de même le fait qu’une utilisation incorrecte des capacités du framework ou du CMS peut conduire à des problèmes de sécurité…

    On va croire que j’ai un penchant pour le framework (disons que j’ai fait ce choix), mais d’un côté comme de l’autre les failles peuvent être présentes. C’est vrai que ponctuellement pour ta situation, un CMS te permettrait de réaliser quelque chose plus rapidement. Car le temps d’apprentissage de la structure du CMS et de la création de composants de permettra d’attaquer directement les parties nécessaires à tes besoins, alors que le temps d’apprentissage du framework te permet de commencer tout le site à partir du framework. Après, pour les deux, c’est un gain de savoir développer avec pour des projets futurs.

    Dans tous les cas, bon courage ;) .

  5. Alexandre
    Alexandre
    25/08/2009 à 22:45 | #5

    Merci :)

    Alors oui, je vais tester Drupal, j’ai mis sa sur mon serveur dédié, mais j’arrive pas à l’installer avec PgSQL, je vais attendre une réponse sur le forum. À ce que j’ai lu, oui il m’a l’air performant et puissant. Je vais creuser :)

    Ah oui ! Les CMS et les mises à jours ! Il faut faire attention à chaque fois

  6. Alexandre
    Alexandre
    02/09/2009 à 11:02 | #6

    Drupal installé avec succès, maintenant j’ai un problème avec ma version de PHP incompatible … Bref … J’ai choisi d’utiliser un Framework pour développer mes applications. Seulement je ne connait pas du tout les différences entre tous les framework existants. Un coup de wikipédia m’a aidé et en effet Zend Framework me parait pas mal, me faut juste l’essayer ! Sinon il ne demande pas un hébergement en particulier ? Un simple hébergement Php/MySQL/PostgreSQL lui suffit ?

  7. scorpe51
    scorpe51
    02/09/2009 à 13:00 | #7

    Eh bien en effet un simple hébergeur PHP/BDD suffit. Il faut cependant PHP5 pour faire fonctionner le framework, et même php5.2 au minimum je crois. A voir.

    Les expériences et retours d’utilisateurs doivent être disponibles sur internet.

  8. Alexandre
    Alexandre
    02/09/2009 à 18:37 | #8

    J’ai un hébergement mutualisé MySQL/PostgreSQL/PHP 5.2.9 un dédié sous PHP 5.3.0

    Sa devrait le faire ^^

  1. Pas encore de trackbacks