Lephenixnoir :
Qualité du code, bugs, programmation 1.5 / 3
Commençons par les bugs. J'ai peur d'en avoir trouvé pas mal, bien que
certains d'entre eux sont sans doute voulus ou oubliés, mais je les cite
dans la mesure où ils ne correspondent pas au comportement attendu par
le joueur.
- Le démarrage de la voiture dans le menu de sélection. Je parlerai de
l'idée dans la section gameplay, mais l'implémentation ne fonctionne pas.
Lorsque la voiture part, je n'arrive parfois pas à choisir l'entrée sélec-
tionnée en appuyant sur EXE. De même, si j'y parviens et que je lance une
partie, que je quitte avec EXIT, à peine de retour au menu la voiture
repart, ce qui est agaçant.
Au passage si on fait ça, on ne peut pas non plus relancer de partie...
La gestion du compteur n'est à mon avis pas complète, puisque chaque retour
au menu devrait engendrer la réinitialisation du compleur.
- On peut rentrer dans les obstacles par le côté. Alors ça c'est de la
hitbox de compétition : si je laisse un obstacle passer et que je rentre
dedans en passant par au-dessus ou par en-dessous, je ne subis aucune
pénalité. Pareil pour les objets, je ne les ramasse pas. On avouera quand
c'est quand même embêtant pour un jeu dans lequel les collisions avec les
objets qui défilent constituent le cœur de l'interaction...
- Le génération aléatoire est incomplète. J'ai eu une fois une section de
route suffisamment longue sans croiser un seul baril d'essence, si bien que
je pouvais conduire comme un as que je perdais quand même parce que mon
réservoir était vide.
- À certains moments en fin de partie, le jeu a freezé monumentalement sur
un plantage de la gestion des touches, de sorte que seule des combinaisons
de touches tordues pouvaient rendre à la machine la gestion de l'interface
clavier.
Darks m'a touché deux mots d'un bug semblable qui apparaissait dans Fruit
Ninja. Je n'ai pas regardé en détail mais ça doit être dans le code...
Pareil sur le menu, ou en tentant de sortir de l'application, à plusieurs
reprises la gestion des touches ne fonctionnait plus.
- Dans le garage, on peut rajouter des jolis carés même si l'amélioration
est déjà à son niveau maximum. Alors que sais que c'était expérimental,
mais même quand c'est expérimental on ajoute la condition niveau < 5.
Par ailleurs, ça n'a pas la moindre influence sur le jeu lui-même, mais ça
c'était prévu dès le début.
- Ça manque de clipping. L'interface est simple, il est possible d'éviter
que les objets disparaissent d'un coup avant d'avoir atteint le bout de
l'écran.
- Les objets disparaissent parfois. Oui, comme si de rien n'était, un objet
disparaît de l'écran en plein milieu de sa course effrénée vers le bord
gauche au niveau duquel se trouve le véhicule. Je n'ai pas pu voir de quel
type d'objet il s'agissait mais je suis un peu sceptique sur la justifica-
tion conceptuelle d'une telle fonctionnalité...
Ensuite, voyons la qualité du code.
Premier bon point : les sprites sont codés correctement. Les données sont
dans un fichier C, les déclarations externes dans un header protégé contre
la double inclusion, c'est très propre de ce côté-là. Ce serait presque
élégant si la simple idée de mettre des tableaux de valeurs dans le code
pour substituer des fichiers ressources n'était pas horrible depuis le
début. x)
Par contre, je vais être *très* chiant mais je serai intraitable : IL FAUT
INDENTER LE PREMIER NIVEAU DE CODE. Je n'arrive pas à trouver les fonctions
dans ce petit fichier à cause de ce foutu manque d'indentation au premier
niveau. Je n'ai rien à dire sur la position des accolades ou le style
d'indentation en général, puisqu'il est subjectif, mais là ça ne peut pas
être considéré comme une caractéristique d'un style d'indentation parce que
ça empêche juste la bonne lecture du code.
En plus, là où c'est indenté, c'est chaotique. Les trois lignes 127, 130
et 136 du fichier voiture.c, je copie littéralement :
'
ML_bmp_or(IMG_GARAGE, 0, 0, 128, 64);
for(i=0;i<choice[0];i++)
for(i=0;i<choice[1];i++)
'
sont supposées être au même niveau mais ont trois indentations différentes.
Je vois que tu utilises des tabulations, c'est pas mal parce que c'est très
pratique à utiliser, mais fais attention quand même, là c'est limite le
bordel. La lisibilité en prend un coup énorme, comme une phrase avec une
ponctuation chaotique.
L'usage des switch est intéressant et utile (sauf quand il n'y a que deux
valeurs), particulièremeent avec les identifiants de touches parce que ça
améliore beaucoup la lisibilité.
Au niveau de la ligne 233 :
'if(IsKeyDown(28) && appuie==0) // KEY_CTRL_UP'
Outre que 'appui' ne prend pas de 'e' et que je conseille de nommer en
anglais, tu peux mettre 'IsKeyDown(KEY_CTRL_UP)' en redéfinissant la macro.
D'ailleurs, le fichier SH4Comp.c le fait.
Dans l'ensemble, le code est suffisamment propre et structuré pour qu'on
y voie clairement à quoi sert chaque partie. Cependant, il faut vraiment
que tu poses tes conventions de nommages : je cite 'Jeu()', 'mort()' et
'init_obstacles()', français/anglais, snake/camel, fixe tes usages.
Originalité 1.5 / 2
Au niveau du jeu pur, je n'avais pas croisé ce genre de gameplay jusqu'à
présent, mais vu le nombre de tests que je fais je ne pense pas que ce soit
un argument vraiment valable.
Le fait d'éviter le typique karting/course de voiture permet d'éviter le
cliché habituel et puis, disons-le, de bonnes difficultés au niveau du
développement.
D'autres types de jeux comme le trial (c'est bien comme ça qu'on dit ?
)
auraient pu sortir, et je pense que là ç'aurait été moins original. Donc
par rapport aux différents programmes types qui auraient pu sortir du
thème, je le trouve plutôt original. Innovant, pas spécialement, mais en
54 heures on ne peut pas tout avoir.
Les objets mis en jeu sont classiques. On regrettera cependant le manque
d'interaction avec l'espace de l'écran, qui se limite aux avancées (avec
un objet) et reculs. On aurait volontiers imaginé également des interac-
tions avec les voies (rétrécissements, arrêt temporaire d'une voie, etc.).
Le concept, en lui-même, est à mon sens sous-expoité. On y pert tout le
supplément qui rend le jeu, au-delà de distrayant, intéressant, prenant,
et qui fait sa rejouabilité en se démarquant du concept de base. Enfin, je
suis conscient qu'il n'y a que 54 heures, mais si je limitais la critique
à ce qu'on peut attendre dans ce délai, ce serait bien moins intéressant...
Graphismes, présentation visuelle 1 / 2
Au niveau graphismes, ça commence malheureusement mal : l'icône par défaut.
Alors c'est sûr que c'est pas grand-chose, mais ce n'est qu'une raison de
plus pour la changer. D'autant plus qu'exploiter d'autres images du jeu
était simple et peu coûteux en termes de temps.
Le menu principal en jette : une voiture de 20-25 par 40 pixels, un titre
sympa dans la simplicité, des boutons agréables (il faudra quand même
m'expliquer pourquoi il n'y a qu'une icône et pas la même taille de police)
et une imitation d'un compte à rebours qui fait démarrer la voiture. C'est
pas irréprochable mais déjà largement à la hauteur de ce qu'on peut atten-
dre d'un CPC.
Le garare, pour pouvoir ne garder que le gros pour la fin, utilise visible-
ment une police différente, qui, après un petit tour dans le code, s'avère
être une image, ne prend malgré pas le temps de réécrire 'argent' et 'prix'
qui se retrouvent désavantageusement rendus avec la police la moins
régulière imaginable, et présente une flèche un peu trop simple pour créer
une "immersion graphique" qui aurait permis au joueur de se sentir tout à
fait dans le jeu -- ce qui est toujours un plus.
Des carrés pour remplir les cercles, simple mais efficace, et ça exploite
bien les fonctions de MonochromeLib : pourquoi pas ?
Au niveau de l'écran de fin, les images sont bien réalisées selon les dif-
férentes manières de perdre, même si la police de PrintMini() reste
toujours... peu esthétique. Autant utiliser PrintXY(). De plus, mettre
l'accent sur 'Vous êtes mort' vaut bien de ne pas oublier le 's' à 'metre',
je pense. Un peu comme un point dans la phrase en-dessous.
Sur le jeu en lui-même, l'interface est simple et on comprend immédiatement
le concept de base. Au niveau des icônes qui passent, j'aurais quand même
à ajouter que la rémacence de l'écran rend difficile leur reconnaissance,
donc même si vous développez sur émulateur payez-vous le luxe de tests
machine pour vous assurer de l'expérience utilisateur réelle.
En l'occurrence, si les bidons d'essence et les pièces (il y a juste le
texte des pièces qui est moins lisible qui s'il était simple en 3x5), en
plus des "avancées", sont facilement détectables, les obstacles ainsi que
la vitesse sont plus difficiles à comprendre. Par ailleurs, je pense que
l'icônes "avancée" (en forme de chevron '>') irait mieux à la vitesse.
Les limitations de voies en pointillés sont simples et suffisants, mais
c'est vrai qu'on reste un peu sur sa faim en terme de graphisme pur. Il y a
les icônes des objets, mais plus ensuite que des lignes et du texte
standard. D'ailleurs, pourquoi avoir laissé tant d'espacement vertical
autour du texte au lieu d'en profiter pour laisser un pixel d'espacement
dans les voies ?
De manière générale, l'aspect graphique du jeu est bien poussé et agréable
sur l'ensemble des écrans, excepté celui du jeu, qui manque de lisibilité
en plus d'avoir le "défaut" sans solution de la rémanence de l'écran avec
la vitesse. Un maillon faible qui gagnerait beaucoup à être réparé.
Gameplay, ergonomie, durée de vie 1.5 / 3
Le gameplay est simple : se déplacer sur les voies pour récupérer des
objets tout en évitant les obstacles. À mon avis, cette simplicité facilite
la compréhension du jeu et va éviter que le joueur perdant ne se retourne
contre le jeu. Les objets présents (obstacles, argent, essence, avancées,
vitesse) sont classiques mais suffisants. En ajouter trop complexifierait
le jeu au-delà de ce qu'on peut attendre.
Pour améliorer le gameplay existant, ce qui peut être attendu réside dans
les bonus et améliorations qu'on peut trouver, modifications de la chaussée
en terme d'interface, et quêtes/récompenses pour la rejouabilité. Je ne
vais pas détailler ces points parce qu'ils sont justement absents du jeu,
mais étendre le gameplay est à mon avis une des priorités du projet.
Il manque cruellement un tutoriel. On débarque dans le jeu, alors oui, le
concept est simple, mais une explication sur le rôle de chaque objet serait
infiniment plus simple que de nombreux essais à jouer aux devinettes avec
ce qui change ou pas à l'écran.
Le score est potentiellement infini mais curieusement ça ne suffit pas à
obtenir une rejouabilité intéressante. Je pense que le manque à gagner au
niveau du gameplay est responsable de cette impression qui fait qu'on a
vite l'impression d'avoir fait le tour du jeu (je ne perds pas les 54
heures de vue, bien entendu).
Au niveau de l'ergonomie (interface homme-machine), qui se limite à la
gestion des touches (ce qui est tout aussi bien par ailleurs), on déplore
des bugs récurrents sur des appuis non pris en compte pour des retours
de fonctions mal gérés. C'est assez rageant par moments.
Synthèse 5.5 / 10
Le score final est plus faible que ce que je pensais, mais je pense que ça
reflète le manque d'exploitation des concepts mis en jeu. On frôle la
surface mais on n'est pas immergés. Le jeu nécessite encore du développe-
ment et des ajustements, conceptuellement comme graphiquement.
Si divers éléments sont ajoutés au gameplay pour varier l'idée initiale, on
pourra obtenir un ensemble complet autour d'un concept simple, dans un jeu
à la durée de vie potentiellement infinie si bien gérée.
Legolas :
Qualité du code, bugs, programmation 2 / 3
D'abord, le plus important : les bugs. Je n'en ai pas beaucoup recensé, mais je déplore le fait que l'on ne puisse que changer de choix dans le menu quand la voiture vient de partir. On ne peut pas qualifier cela de bug, mais les améliorations du garage ne fonctionnent pas, c'est dérangeant, et les carrés débordent des cercles établis. J'ai aussi l'impression (dis le moi si je me trompe) qu'à certains moments, le nombre de bidons d'essence n'est pas suffisant pour conduire. Peut-être ai-je mal vu ?
Concernant le code, je n'ai pas la prétention d'être un expert en la matière, mais je compte bien faire part de mes impressions. Déjà, bonne utilisation des headers, rien à voir avec la mocheté dont je peux être capable… (en plus ils sont un peu commentés, que demander de plus?) Tu as même laissé les commentaires par défaut du SDK que j'enlève dès le départ, quelle belle attention ! Bon, le « voiture.c » ne contient aucun autre commentaire, dommage… Par contre tu as une bonne indentation en général (à des endroits, tu ne mets pas tout au niveau qui le devrait, enfin la plupart est bien), le fichier est donc quand même bien lisible. Je salue l'utilisation de la rom pour un concours qui ne laisse que peu de temps, et les sprites me paraissent bien stockés. Par contre, tu aurais à la limite pu faire un fichier de plus pour plus séparer les parties de code.
Originalité 1,5 / 2
On ne peut dénier le fait que le jeu soit complètement dans le thème de cette édition, c'est-à-dire l'automobile, dans son concept même, ce qui se voit dans son nom. Toutefois, je trouve qu'il s'agit d'une « variante », certes éloignée mais cela en reste une, de jeux bien connus, ce qui ne me permet pas de donner la note maximale. Par contre, le menu un peu dynamique est un « plus » en originalité.
Graphismes, présentation visuelle 1,5 / 2
Je trouve que ce jeu présente de bons graphismes dans l'ensemble,que l'on peut sans gène qualifier de très bons si l'on prend en compte le faible temps de programmation caractéristique du concours. Le menu montre tout de suite le thème, et est assez esthétique. La voiture, dans le mode « jouer », est plutôt réussie par rapport au nombre de pixel qu'elle utilise : je n'aurai jamais la prétention de concurrencer au niveau du pixel art. Néanmoins,le garage reste un peu simple, tout comme le décor du jeu. On dénote surtout que le jeu « bave », si je puis me permettre l'expression, ce qui est assez gênant. Ah oui, il manque un « s » à « metre », enfin c'est un détail.
Gameplay, ergonomie, durée de vie 2 / 3
Le gameplay est simple et compréhensible, ce qui en fait un bon point. Je trouve l'idée d'éviter des obstacles tout en avançant (pour caricaturer la chose) assez intéressante, mais néanmoins répandu, comme j'en ai parlé ci-avant (je ne sanctionnerai pas au niveau de la notation à deux endroits pour la même chose). Je déplore quand même le fait que le garage ne marche pas encore, ce qui empêche de rajouter une dimension de « perfectionnement par l’entraînement » dans le jeu.
Concernant l'ergonomie, peu de choses à dire en somme, puisque qu'elle est bien gérée.
La durée de vie est trop courte à mon goût, étant donné que l'on s'y lasse assez vite du fait de l'absence de fonctionnement du garage et de la petite monotonie du parcours.
Synthèse 7 / 10
Au final, ce jeu est une bonne production compte tenu du temps très serré, et mériterait qu'il soit finalisé !
Citer : Posté le 24/08/2015 16:16 | #
Enfin Bravo au
xparticipantsCiter : Posté le 24/08/2015 16:17 | #
Je suis désolé -florian66-, mais au moins tu pourras participer à la prochaine édition et la gagner avec le brio que l'on te connaît ! Bravo quand même !
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 24/08/2015 16:34 | #
Je remarque que le test de lephenixnoir est au moins 3x plus gros que celui de Legolas.
Citer : Posté le 24/08/2015 16:36 | #
Je remarque que le test de lephenixnoir est au moins 3x plus gros que celui de Legolas.
3x plus de retard aussi. x)
Bravo à toi -florian66-, malgré tout ce jeu reste sympa pour 54 heures de temps disponible !
(Au passage je pensais que j'allais tourner autour de 6-7, mais bon la somme des parties c'est la somme des parties quoi, il n'y a pas trop moyen de s'arranger...)
Citer : Posté le 24/08/2015 16:39 | #
En gros sur l'indentation ce que tu voulais dire c'était cela :
fonction _1(){
instruction_1
...
}
Citer : Posté le 24/08/2015 16:45 | #
Évidemment. Le premier niveau d'indentation correspond à ce qui se trouve juste dans une fonction.
Citer : Posté le 24/08/2015 18:45 | #
Je remarque que le test de lephenixnoir est au moins 3x plus gros que celui de Legolas.
En même temps, comment veux-tu concurrencer, on dirait une réponse de Ne0tux !
Pong400
PierrePaCiseaux (CP400)
Les Triangles
Menu
ASCII
Nombres premiers
Citer : Posté le 24/08/2015 22:41 | #
Interessant les tests, tres objectifs. Pour avoir aussi j'ai testé le jeu je trouve que la note globale est en adéquation avec le jeu.
Citer : Posté le 24/08/2015 22:44 | #
Bravo quand même, j'en profite pour saluer ces très bons tests.
Florian, si tu prends en compte ces remarques, je ne doute pas que le prochain CPC tu remporte la Graph
Citer : Posté le 25/08/2015 08:27 | #
Merci à tous !! Je suis déçu du test de Lephé (
mais non c'est pas vrai ... je te haïrais quand même)Vous avez tous remarqué cette faute monumentale - aussi grosse que ça omg - de 'metre' sans le 's'
@Lephé : j'utilise les tab ce qui est beaucoup plus rapide mais - à mon plus grand désarroi - on dirait que les éditeurs ne prennent pas tous la même chose (chez moi 1 tab ⇒ 4 espaces normalement)
Après niveau code : J'ai fais comme j'ai pu, c'est mon premier CPC mais aussi le dernier ( jusqu'à la prochaine fois )
J'aurais pu faire plus ysmpa mais les obligations personnelles sont prioritaires ... ( comme tous le monde )
[cerebral message : STOPPP to write about our life]
Enfin Bref -je parlais de quoi ? - .... Ah oui je m'en rappelle ...
Donc oui, je disais que : les bugs des touches, j'y peux rien , après faut peut être que je revois le code entièrement pour ça,
y'a aussi des bugs que je savais mais je n'ai pas eu le temps de m'y pencher dessus correctement. L'obstacle qui s'efface est en fait que je veux pas que l'on meurt à cause qu'il y a 4 obstacles en même temps. Mais le temps que réagisse la calto, il est déjà au milieu de l'écran
j'éditerai ce message, je dois y aller
Citer : Posté le 25/08/2015 08:45 | #
Bravo Flo quand même
Ton message est bourré de fautes cependant x)
Citer : Posté le 25/08/2015 09:06 | #
J'ai corrigé celles qui sont du niveau primaire.
Tu dis souvent « fil à pute » toi ?
Et puis, tu oublies les "s" et en ajoute là où il faut pas.
Après je compte pas trop les problèmes de conjugaison, je suis pas non plus irréprochable là-dessus.
Citer : Posté le 25/08/2015 11:29 | #
Merci à tous !! Je suis déçu du test de Lephé (
mais non c'est pas vrai ... je te haïrais quand même)Déçu de la note ou du contenu ?
Pour la note, je suis déçu aussi (en brut, j'aurais mis au moins 6.5), mais j'ai bien pesé chaque partie, après c'est juste la somme arithmétique...
@Lephé : j'utilise les tab ce qui est beaucoup plus rapide mais - à mon plus grand désarroi - on dirait que les éditeurs ne prennent pas tous la même chose (chez moi 1 tab ⇒ 4 espaces normalement)
Dans l'exemple que j'ai cité, il y avait :
- une ligne sans indentation
- une ligne indentée avec un espace
- une ligne indentée avec une tabulation
Du coup je suis un peu sceptique... ^^'
Après niveau code : J'ai fais comme j'ai pu, c'est mon premier CPC mais aussi le dernier ( jusqu'à la prochaine fois )
Tu t'en es bien tiré, c'est plutôt propre
Donc oui, je disais que : les bugs des touches, j'y peux rien , après faut peut être que je revois le code entièrement pour ça,
Tu gères mal les boucles d'évènements : repenche-toi sur leur structure, tu trouveras vite le problème.
y'a aussi des bugs que je savais mais je n'ai pas eu le temps de m'y pencher dessus correctement. L'obstacle qui s'efface est en fait que je veux pas que l'on meurt à cause qu'il y a 4 obstacles en même temps. Mais le temps que réagisse la calto, il est déjà au milieu de l'écran
Faut contrôler ta génération aléatoire x)
Darks :
faut peut être que je revois le code
C'est un subjonctif. Donc on écrit « que je revoie ».
Citer : Posté le 25/08/2015 11:42 | #
Les bugs des touches qui font freeze la calto, c'est du aux fonctions d'écriture dans les fichiers. J'ai eu le même problème dans Fruit Ninja, le code est littéralement un truc du genre :
ML_clear()
ML_bmp(sprite);
ML_display();
if(score >= best_score) save_score(score);
save_success(success),
GetKey(&key);
return;
Citer : Posté le 25/08/2015 11:44 | #
C'est plus plutôt un effet de bord... ?
Oui ça revient au même.
C'est bizarre quand même.