Wow, je ne pensais pas que ce jeu recevrait autant de tests en si peu de temps, c'est plus que le double d'avant, merci beaucoup, ça fait trop plaisir de lire tout ça!!
Promis, je testerai vos jeux en retour!
Le but principal de cette version démo était d'avoir un aperçu de la rénovation du jeu. Je n'ai donc pas trop prêté attention à la manière dont j'allais annoncer l'histoire, c'est pour ça qu'elle n'est pas follement géniale dans cette version. Mais croyez moi, pour le reste des chapitres, ça se passera bien autrement!
Hackcell a écrit : Pour les combats, selon moi il y a encore du travail, toutes les attaques dspos semble faire les mêmes dégats. et au finals, soit on se repose sur la chance, soit on farm pour ecraser ses adversaires… A première vue, c'est vrai oui. Statistiquement, les attaques ont un faible écart de puissance entre elles (la plus puissante étant "Ice Buster" avec un pouvoir de 100 et derrière "Slash" avec 90 et 200 pour l'attaque spéciale). Aussi, c'est vrai que des attaques qui ne font que "attaquer" et rien d'autre poussent à utiliser la même plus puissante attaque à chaque fois et ça peut devenir vite ennuyeux. Je modifierai cela, merci infiniment pour ton test!
Ne0tux a écrit : Les dialogues et la navigation dans les menus, y compris en combat, sont un peu lents. En particulier l'affichage régulier des visages des personnages dans les dialogues, un point que je n'ai pas bien compris lorsque ledit personnage prend déjà la moité gauche de l'écran. Pour la vitesse de génération, je n'ai sans doute pas tout optimisé en multi-drawstat, mais jusqu'à présent, j'ignore encore comment faire mieux pour les interfaces de navigation menu/combats. En revanche, oui, l'affichage des visages des personnages ayant déjà leur image dans l'écran est assez inutile...
Je pensais que ce serait nécessaire de garder la même syntaxe de dialogue dans les deux cas, mais je pourrai m'en passer.
Je comprends que l’affichage de fenêtres en surimpression sur l'arrière plan contribue énormément à l'immersion, mais certaines fenêtres effacent poussivement des graphismes via la fonction Text avant d'afficher le contour puis le texte. Ponctuellement c'est sans soucis et on accepte volontiers l'animation involontaire qui en découle. Quand c'est plus répété, en combat notamment, c'est plus embêtant. Je pense en particulier à la fenêtre en bas qui répète l'action que vient de choisir le joueur ou qui annonce le coup de l'adversaire. Une suggestion, même si je me doute qu'elle est difficile à réaliser, serait d'avoir une Picture de fond avec l'écran de combat, et la même avec la fenêtre déjà affichée en bas. D'autant que la fonction Text n'efface parfois pas quelques pixels restants à droite de l'écran. Sinon une astuce audacieuse serait d’utiliser une Picture1024 tronquée pour scroller l’affichage complet de disons 1 tiers et d'y afficher du texte. C'est bien un désavantage quand je m'obstine à vouloir insister à fond sur les graphismes . Je n'ai pas la solution pour pallier au temps que met le cadre à s'afficher en combat...Pour la fenêtre de dialogue, c'est aussi un autre problème. En principe, lorsque se génère l'écran de combat, le moteur affiche d'abord l'arrière-plan du lieu actuel s'il y a moyen. Ensuite, il libère de la place sur l'écran pour générer les stats et les commandes de combat, avec les deux adversaires. Une fois l'interface établie, il la stocke en une picture (donc en 2064 octets), puis la ré-affiche, pour pouvoir conserver l'interface en cas de réactualisation. Du coup, je doute que le scrolling avec une picture 1024 soit efficace dans mon cas. Pour ta première suggestion, avoir une picture de fond avec l'écran de combat me semble être une meilleure option. Le soucis, c'est que comme le background ne reste pas le même pour tous les combats puisque les lieux peuvent changer, ça risque d'être un peu délicat à gérer. Ce que je pourrai faire sur cette base, c'est en effet garder une image de l'interface générée en multi-drawstat, puis libérer la place prise par le fond d'écran s'il y en a un, puis afficher l'interface. Le tout se générera alors plus rapidement, et les événements en combat pourraient être affichés rapidement cette fois-ci en haut de l'écran en une ligne, sans passer par la boîte de dialogue en bas de l'écran.
Parfois le texte est un peu à l'étroit dans les fenêtres. Notamment celle des dialogues où plusieurs mots sont reportés à la ligne suivante, ou même à l’affichage suivant. N'est-il pas possible de garder les magnifiques graphismes des personnages à gauche tout en élargissant la fenêtre, quitte à ne pas remettre la tête du personnage en question en haut ? Ou de ne pas réserver un encart pour le nom de celui qui parle, quitte à l'inclure dans le texte quand nécessaire ? Oui, bien sûr! C'est parfaitement envisageable ! J'apporterai ces modifications.
La map est monstrueusement jolie. Le curseur pourrait-il clignoter pour gagner en visibilité ? Dans un lieu, je trouve que l'affichage des choix possibles sous forme de liste avec une petite icône associée est vraiment bien. Pour clignoter le curseur, je n'ai pas la moindre idée de comment le faire ...Comme la carte est grande, afficher une liste serait un peu limité. Par contre, je pourrai afficher le sprite du joueur à l'endroit de la carte où il se situe dessus.
Pour cette version démo j'aurais bien vu un choix "fuite" dans les combats, pour tester un peu plus rapidement. Euh oui, bien vu x)...Je pourrai sûrement l'implanter dans les versions bêta test, avant de le retirer une fois les tests concluants.
J'ai regardé rapidement le code et je pense que tu peux gagner des centaines d'octets en utilisant des boucles lors des effacements avec Text. Souvent les coordonnées sont des multiples donc c'est facilement réalisable (Début de prog "BATTLE"). Le meilleur exemple est le prog CADRE puisque dès lors qu'on utilise une boucle, avec une seule utilisation de la fonction Text, il n'y a plus besoin d'utiliser la Str 4. Donc finalement tu peux réduire de 112 octets ce sous programme !
Il faut utiliser une boucle aussi dans le programme principal lors de l'affichage "Appuyez sur EXE". Là tu affiches puis efface 4 fois le même texte, autant ne l'écrire qu'une fois dans le code mais l'exécuter 4 fois via une boucle For ! Ah, pour gagner de la place je suis tout ouïe!
Merci beaucoup pour ces remarques/conseils, je les appliquerai!
Tu peux aussi gagner 8 octets pour chaque remplacement d'une des nombreuses lignes de type :
230->List 4[2
F=4=>270->List 4[2
par
230+40(F=40->List4[2 Je ne connaissais pas cette manière d'écrire :o ! Mais c'est que j'ai pas mal d'optimisations à faire alors, merci beaucoup!
Quoi qu'il en soit, merci pour tous ces détails très constructifs!
Lephenixnoir a écrit : L'interface a juste du mal à rester lisible quand le fond est sombre, typiquement dans les sélections de dialogues dans le château. Je ne sais pas trop comment tu pourrais arranger ça... mon intuition est la suivante : un problème se pose si trop de pixels noirs de l'UI sont au contact de pixels noirs du fond. Ça se produit surtout sur les icônes de personnages et le curseur. Une façon de l'éviter serait d'effacer les pixels autour des objets de l'UI avant de les dessiner. Oui, je vois. Après je ne sais pas si opérer sur les pixels pour chaque personnage utiliserait du code pour de tels ajustements. Je ne sais pas trop non plus comment y remédier, mais peut-être que si je remplissais de blanc la partie où les personnages s'affichent avant de les faire apparaître ...Après ça gâcherait un peu l'arrière plan, non?
Le gameplay est prenant, même si le système de combat n'est pas assez élaboré (ou pas présenté comme tel) pour qu'on ait un vrai besoin de varier les attaques et de passer sur la défensive. On bombarde la meilleure attaque qu'on a en général. Le fait de commencer à un niveau élevé ne me dérange pas, mais du coup il faudra probablement des parties assez longues pour que l'XP fasse une différence. Si ton jeu est assez court, tu peux peut-être envisager une autre forme de progression, comme faire évoluer les attaques en des versions plus puissantes une fois utilisées assez souvent, ou des objets/équipements externes qui arriveraient au fur et à mesure de l'histoire ? Les stats en combat et les techniques d'offensives sont assez mal gérées pour l'instant, c'est vrai x). En gagnant en niveaux d'expérience, seules les stats d'Attaque, Défense, Points de vies et Maximum d'exp pour passer au prochain niveau augmentent. Dans le calcul des dégats/pvs perdus, j'utilise la formule mathématique appliquée aux Pokémons. Les points d'attaque des capsules techniques/secrètes techniques d'offensives n'évoluent alors pas. Mais tout de même, il me faudra revoir le déroulement des combats.
Ajouter des équipements externes serait efficace aussi, oui. J'y penserai.
Pour l'instant c'est très sous-exploité. Tous ces gens qui te disent que Christine veut te voir pourraient délivrer du lore à la pelle ! Rien que sur les "univers" ou sur leur propre rôle/métier/travail, il y aurait beaucoup à dire. Je ne sais pas comment tu planifies l'histoire et l'information délivrée progressivement au joueur, mais je suis sûr que tu peux commencer dès les premiers personnages avec du contenu solide, ce qui te démarquerait immédiatement du RPG de base.
Je peux également suggérer d'utiliser toute la hauteur de l'écran pour les dialogues en plein écran : comme il y a déjà une Picture du personnage, afficher son visage paraît moins nécessaire. Et tu as bien besoin de l'espace textuel pour délivrer une histoire riche en détails ! Franchement, je ne me suis vraiment pas cassé la tête pour le scénario de cette version démo, je voulais la sortir au plus vite, surtout pour les côtés gameplay et graphismes, et je me suis donc limité dans l'histoire . Mais bien sûr, je mettrai tout cela en vigueur dans la vraie histoire que je détaillerai encore.
Pour les dialogues, je ne manquerai pas de corriger tout ça.
Ha ha... le nom de cet ermite ! Son dialogue ! Et limite une référence à Naheulbeuk !
Ironiquement c'est lui qui en dit le plus sur le lore (à ce point dans l'histoire) ! Il a un caractère bien spécifique qui se voit bien sur son avatar, il nous lâche un "c'est bien son genre" qui aide à définir le caractère des autres, et il est plus précis dans ce qu'il raconte que tous les autres personnages qui précèdent. Eh oui! J'imagine que tu as aussi trouvé la deuxième référence cachée un peu plus loin!
L'ermite est le genre de personnage qui rencontre un inconnu connu par une de ses connaissances et qui en découvre plus sur la venue du joueur. Ainsi, il le teste en face à face.
L'ermite est aussi le moment où il faut prendre le système de combat au sérieux. Tu ne peux pas augmenter la difficulté comme jusqu'ici ad vitam eternam. Il n'y a pas vraiment de stratégie à part spammer l'attaque qui tape le plus fort et essayer de finir l'adversaire avec une attaque spéciale avant qu'il ne se soigne. Je n'ai pas vu de plans détaillés sur le moteur de combat en reparcourant le topic donc je me permets de faire des suggestions :
-Le soin ne devrait pas être aussi pété. Soigner moins, ou en plusieurs tours, ou avec cooldown paraît approprié.
-La diversité des attaques devrait être utile, y compris contre un seul adversaire. Il devrait probablement y avoir un "bon moment" pour utiliser chaque attaque.
-Actuellement on ne sait rien de ce que l'adversaire va faire. Avoir une information disponible pour se préparer est un premier pas vers l'établissement d'une stratégie. (Un cooldown est une telle information par exemple, ou une indication d'attaque spéciale, eg. telle personne a tendance à défendre avant l'attaque spéciale.) Dans cette démo, la stratégie à adopter en combat se base principalement là-dessus: avant de commencer un combat, toujours s'assurer d'avoir fait le plein d'énergie au Sanctuaire de récupération qui, en plus de soigner les points de vies, ravitaille la réserve en Soins du joueur (le joueur peut utiliser la fonction de soin 5 fois). En combat, l'adversaire est capable de se soigner (au maximum 3 fois dans le combat), de s'armer de prudence (augmente sa stat Def), d'attaquer et de lancer son attaque spéciale (une fois qu'il aura porté une attaque au joueur au moins 5 ou 3 fois). Son choix est aléatoire, mais tient tout de même d'une certaine IA: l'ennemi pourra toujours attaquer. Mais s'il décide autre chose comme se défendre, il ne pourra le faire que si sa stat Def est strictement supérieure à celle du joueur. Sinon, s'il décide de se soigner, il faut à la fois que ses Pvs aient baissé durant le combat et que son nombre d'utilisation de soins ne soit pas nul (en gros qu'il ne se soit pas déjà soigné 3 fois dans le combat). Sinon, s'il décide de porter une attaque spéciale, il faut qu'il aie attaqué le joueur au moins 3 fois. Sinon, la boucle recommence jusqu'à trouver aléatoirement la meilleure solution.
C'est ainsi qu'avant d'affronter de puissants adversaires, le joueur doit s'entraîner un maximum à combattre des pnjs et à se ravitailler en soins et en points de vies. Enfin, durant un combat, le joueur doit bien étudier la situation avant de faire le choix de se soigner, se défendre, attaquer ou lancer une attaque spéciale.
Malgré le fait que tout n'y soit pas encore, je devrais modifier quelques éléments, notamment le fait que l'on ne puisse pas voir dans le jeu sa réserve de Soins, j'en suis désolé ...
Pour avoir une petite information sur le choix de l'adversaire, c'est vrai que ça pourrait aider. Mais dans ce cas, je devrais, dès le début du jeu, intégrer une sélection "mode facile" et "mode normal", puisque c'est le genre de feature qui faciliterait pas mal le joueur x).
Au passage ça devient de pire en pire avec le temps. Après quelques combats de tournoi, les ennemis ont le même skill set que toi, mais de meilleurs stats, donc tapent plus fort (plus de 25% alors que tu fais moins de 20%). Même ton attaque spéciale fait que 40% de dégâts, et ils peuvent se soigner à tous les tours... on ne peut qu'attendre d'être chanceux ou grinder à mort...
Et donc tu m'envoies dans le combat final avec ma technique de soin désactivée et sans me soigner préalablement ? Sois sérieux, ma jauge de HP c'est 23/210, je viens à peine de survivre à l'ermite... x) Maaiis euuh, je suis désoléé! x))
En tout cas merci pour ce test trèès détaillé, je vais pouvoir améliorer un tas de choses comme ça!
Filoji a écrit : Déjà, MAGNIFIQUE !!! Il est beau et Rapide, pourtant, super lourd, de grosse optimisation serait vraiment cool, ou même passer en C voir C.Basic afin de ne pas prendre toute la mémoire principale Mais ça te demanderais de tout refaire Merci ! J'ai pas mal d'optimisations à faire, c'est vrai.
Et tu fais bien de parler du C et du C.Basic! Je me demande depuis quelques jours si ça ne vaudrait pas mieux de faire passer le jeu en C.Basic pour pallier à tous ces problèmes de gestion de l'espace (sans pour autant négliger l'importance des optimisations).
Oh, ne t'inquiètes pas, pour "tout refaire", ça ne me posera pas trop de problèmes.
Pourquoi autant de soins ? D'autres personnes te l'ont déjà dit mais les ennemis peuvent devenir intuable à force qu'il spam les soins, je sais pas si c'est de l'IA ou de l'aléatoire, mais il faudrait régler ça
Sinon, le bug sur le programme TXT à un "Prog "SPNAME""
Ha ha, c'est de l'IA aléatoire ! Essayes d'élaborer une stratégie avec les Soins.
Pour l'Error Branch, il y a longtemps que je ne suis plus tombé dessus, c'est bizarre... |