Aller à la page 1 2
Reprise du message précédent:
Gari -
posté le 08/02/2023 à 09:27:50 (5899 messages postés)
- | | Ca veut dire que tu es bientôt prête pour la première démo, si on se fie à la to do list ?
| Suite du sujet:
| Chanter l'hyperchleuasme | Citation: Vent : étourdi ou désorienté
La cible a une chance sur deux d'être étourdie : elle ne pourra pas effectuer sa prochaine action. Cet état disparait après un tour.
Sinon, elle sera désorientée : son tour d'action est retardé et sa capacité d'esquive est diminuée pour la prochaine attaque. Cet état disparait après un tour. |
Ça me semble un peu compliqué à expliquer comme statut pour un joueur lambda. S'il lit ça en tutoriel, ça va le décourager tout de suite, non ? Pourquoi ne pas juste avoir la première partie, avec des ratages pendant deux-trois tours ?
Citation: La cible devient insensible aux dégâts et aux altérations d'état (sauf l'empoisonnement et la brûlure). |
Pétrifié, c'est changé en pierre, non ? On peut brûler et empoisonner la pierre ?
Citation: Si tous les ennemis sont pétrifiés, le combat est remporté.
Si tous les ennemis sont gelés, le combat est remporté. |
Même un boss ?
Citation: La cible devient insensible aux dégâts et aux altérations d'état (sauf l'empoisonnement). |
Le gel ralentit le métabolisme, donc le poison ne devrait plus circuler, ou presque plus, non ?
C'est peut-être mon habitude de pokémon mais, les altérations qui s'additionnent, ça me semble un peu bizarre. Pas d'un point de vue gameplay, mais d'un point de vue réalisme.
Citation: La cible a une chance sur deux d'attaquer un ennemi aléatoire (sans effet sur une attaque multicible), une chance sur quatre de manquer son attaque (sans effet sur une attaque multicible) et une chance sur quatre d'agir normalement. |
Ça serait rigolo qu'il attaque un allié aussi !
Si la pétrification protège des altérations et par exemple diminue les dégâts généraux, ça peut être un sort positif de pétrifier un allié pendant quelques tours pour lancer une grosse attaque qui blesse tout le monde (ennemis+alliés). Une idée comme ça.
Tout ce que je dis, tu prends, tu prends pas, c'est comme tu veux
C'est juste ce que ça m'évoque. Si ça t'aide, si ça te fait réfléchir, tant mieux.
|
L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko |
Kisth -
posté le 08/02/2023 à 10:06:32 (998 messages postés)
| Yeoun, mage-archère-louve | Citation: Ça me semble un peu compliqué à expliquer comme statut pour un joueur lambda. Pourquoi ne pas juste avoir la première partie, avec des ratages pendant deux-trois tours ? |
Ce sont deux statuts. À l'application de l'effet, le joueur voir lequel des deux s'est activé.
Citation: Pétrifié, c'est changé en pierre, non ? On peut brûler et empoisonner la pierre ? |
Nope, je vois plus ça comme un ralentissement du métabolisme. Tu ne peux plus appliquer d'état, mais ces deux-là continuent d'agir. Ma phrase est un énorme raccourci. En détaillé : tu ne peux plus appliquer d'état quel qu'il soit et ça supprime tous les états sauf le poison et la brûlure.
Citation:
Comme dans la totalité des jeux auxquels je joue : un boss c'est quasi invulnérable à tout ce qui est grosse entrave (voire même les stuns). Je n'ai pas tout détaillé parce que ce serait trop long à lire.
Citation: Le gel ralentit le métabolisme, donc le poison ne devrait plus circuler, ou presque plus, non ?
C'est peut-être mon habitude de pokémon mais, les altérations qui s'additionnent, ça me semble un peu bizarre. Pas d'un point de vue gameplay, mais d'un point de vue réalisme. |
C'est un jeu ou les enfants se mettent littéralement des cailloux sous la peau pour gagner des compétences magiques. Niveau réalisme, c'est mal barré
Cependant, ça m'intéresse d'avoir des effets un minimum logiques (du genre, le feu ça s'éteint avec de l'eau).
Citation: Ça serait rigolo qu'il attaque un allié aussi ! |
J'y ai pensé. Honnêtement, ça ne me branche pas pour l'instant. Mais j'ai le temps de changer d'avis un bon paquet de fois.
Citation: Si la pétrification protège des altérations et par exemple diminue les dégâts généraux, ça peut être un sort positif de pétrifier un allié pendant quelques tours pour lancer une grosse attaque qui blesse tout le monde (ennemis+alliés). Une idée comme ça. |
Bien évidement que les sorts peuvent avoir des applications détournées !
Reste à voir si le jeu est prévu pour guérir ce genre d'altérations... Et non : tu peux te protéger à 100% d'une altération (même de l'eau qui te trempe), mais tu ne peux pas guérir une altération qui n'a pas de contre.
À la limite, tu peux toujours déclencher un game over rapidement avec cette technique. Ce qui devrait avoir son utilité, vu comme sont pensés mes deux donjons et le lore du jeu.
Par contre, ce que tu décris marche avec le gel.
Mais ce ne sera pas possible dans la démo, par fainéantise soucis de constance des items de ma base de donnée.
Oups, j'avais pas vu ce petit message.
Gari a dit: Ca veut dire que tu es bientôt prête pour la première démo, si on se fie à la to do list ? |
Techniquement, la première est déjà sortie, mais pas sur Oniro.
La to do list n'apporte pas beaucoup de précision sur la date de sortie d'une démo. Mes impératifs IRL par contre... Et j'en ai pas mal. J'ai un peu avancé sur le projet pour faire une coupure, mais va falloir que je m'y remette.
|
M.V. |
Gaetz -
posté le 09/02/2023 à 16:07:18 (2382 messages postés)
| ...passe... | Oh, je ne savais pas que tu avais ce projet. Je vais lire le background. En attendant, tous mes encouragements !
|
Lije : démo 0.5 | Powered by Geex |
Kisth -
posté le 09/02/2023 à 22:11:47 (998 messages postés)
| Yeoun, mage-archère-louve | Merci Gaetz ! La lecture a dû être rapide (sauf si t'es allé voir du côté du fichier sur Overleaf, mais il n'est plus à jour).
En ce moment, le plus amusant dans le développement c'est de réécrire des bouts du core script pour l'adapter à mes idées.
Et c'est amusant de tomber aussi, parfois, sur des fonctions qui ont été créées dans le seul but d'être modifiées par l'utilisateur. Elles ne font strictement rien sinon.
Bref, la pétrification est fonctionnelle, je peux avancer dans ma liste. Oui, je fais un état par jour. Il sortira ce jeu un jour, promis.
|
M.V. |
| Chanter l'hyperchleuasme | Ouh la, si tu te fais écraser par un camion demain comme Roland Barthes, tu vas te retrouver dans la 74e couche de l'enfer de Dante, celle des gens qui ont promis que leur jeu RPG Maker sortirait mais il n'est jamais sorti
Attention à ne pas avoir la promesse facile, ça n'apporte que des emmerdes.
|
L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko |
Kisth -
posté le 12/02/2023 à 12:52:48 (998 messages postés)
| Yeoun, mage-archère-louve | Tous les états sont codés, la map de test est prête (je l'ai postée ailleurs, il n'y a pas grand chose à voir).
Reste à ajouter les visuels des ennemis, créer des faiblesses aux ennemis, créer les troupes et l'event de sélection des troupes pour les testeurs.
Edit : et changer l'affichage des combats, pour que les persos soient à gauche. Parce que j'avais envie.
En enfin, modifier les règles d'ajout/suppression d'états en fonction des états déjà appliqués. Et la démo pourra être postée.
Edit du lendemain : il ne me reste plus qu'à nettoyer le projet, réduire la taille des images et compresser, et c'est bon pour être posté !
Du coup, j'ai un peu de temps pour essayer de coder les restrictions de ciblage des ennemis.
Je repense toujours à ce que t'as dit Rots sur l'aveuglement, et c'est beaucoup moins relou à coder que je le pensais, maintenant que j'ai regardé. Basiquement, l'état fait ça :
Spoiler (cliquez pour afficher)
1
2
3
4
5
6
7
8
9
10
| var consecutiveRates = 0.50;
if (Math.random() < consecutiveRates) { // 50 % de chances d'attaquer un ennemi aléatoire
$gameTemp.requestAnimation ([user], 123);
this.decideRandomTarget();
} else {
if (Math.random() < consecutiveRates) { // 25% de chances de rater l'attaque (le skill 33 ne fait absolument rien)
$gameTemp.requestAnimation ([user], 123);
this.setSkill(33);
}
} |
et la seule ligne de code à changer c'est la 4. il faut juste que je crée une fonction alternative à decideRandomTarget() ce qui n'est pas du tout la fin du monde. Donc c'est tout à fait faisable. C'est aussi très rigolo quand c'est un ennemi qui attaque l'un des siens.
Cependant, je ne le sens pas, ce truc. C'est beaucoup moins rigolo quand un perso tape un de ses alliés. Et le RNG en ma défaveur, en tant que joueur, je n'aime VRAIMENT PAS ça.
Je peux favoriser légèrement les persos pour que seuls les ennemis puissent s'attaquer eux-mêmes. Ce n'est pas bien dur à coder. Il suffit de vérifier la nature de user. Est-ce que ça vaut le coup ? Les joueurs vont bien sentir qu'il y a une espèce de cheatcode activé. Ou alors, je laisse ça en option, si je crée un mode "facile".
Bref, il y a de quoi débattre éventuellement, mais ça ne fait pas avancer mon proto. Donc je laisse ça là temporairement.
|
M.V. |
Falco -
posté le 12/02/2023 à 13:09:11 (19591 messages postés)
| Indie game Developer | Comme tu as l'air de me bouder depuis quelques années tu zapperas probablement mon message, mais en tout cas je suis content que tu reprennes ce projet, ca se voit que c'est travaillé et coté gameplay ca a l'air très sympa de ce qu'on voit.
Bon courage pour la suite !
|
Inexistence Rebirth - Inexistence - Portfolio |
Kisth -
posté le 12/02/2023 à 14:13:55 (998 messages postés)
| Yeoun, mage-archère-louve | Citation: Comme tu as l'air de me bouder depuis quelques années |
J'ai zappé un mail ou un message récent ?
Je suis juste absente d'Oniro 99% du temps. Là je suis malade et j'en ai un peu marre de mon taf, donc j'ai sacrément réduit le temps que je dédie à mon travail et j'en profite pour passer. Par contre j'ignore pas mal de topics, ça c'est vrai. Fin je lis mais je ne réponds pas.
Merci pour les encouragements ! Venant de quelqu'un qui a passé le cap du dev amateur, ça fait encore plus chaud au cœur.
|
M.V. |
Kisth -
posté le 13/02/2023 à 13:52:47 (998 messages postés)
| Yeoun, mage-archère-louve | C'est bon, la démo est là ==>
Je rappelle que c'est un prototype. Il n'y a vraiment pas grand chose à faire. Il n'y a même pas de bugs à reporter. Il y en a, des bugs, mais je les connais.
De plus, dans les menus, certaines étiquettes ne sont pas traduites.
Ce qu'on peut faire avec cette démo :
- se rapprocher du PNJ "Ambiance" pour l'écouter gazouiller
- parler au PNJ "Ambiance" pour faire apparaitre des lucioles
- se balader sur la map (on en fait très vite le tour !) et essayer de trouver tous les bugs de mouvement
- pêcher, même si l'utilité est proche du néant pour le moment
- parler au PNJ "Combat" et tester les états négatifs sur les ennemis (ou en recevoir du coq, s'il est bien luné)
- lancer suffisamment de sorts pour voir les animations des transcendances (nom des limit break de FFXIV)
Information importante : vu le peu de dégâts que font les deux héros et les ennemis, les seules façons de gagner un combat sont de :
- brûler un adversaire
- empoisonner un adversaire
- pétrifier un adversaire
Sinon, il suffit d'appuyer sur Echap et choisir abandonner, c'est encore plus rapide.
Sur certains combats, on ne peut pas cibler l'ennemi du fond. C'est normal. C'est pour une mécanique de jeu qu'il faut que j'introduise proprement.
Ce qu'on pourra faire dans la prochaine démo :
- accéder aux deux derniers éléments (eau et glace) et aux skills physiques
- choisir sa classe (conditionne l'équipement autorisé)
- choisir son équipement et accéder à des skills supplémentaires (invoquer une arme, se soigner, faire des combos de magie...)
- combattre pour de vrai
- avoir de vrais skins pour les héros ?
- se balader dans les quatre premières maps du jeu
Par contre, il faudra possiblement attendre Juillet pour avoir y avoir accès.
|
M.V. |
| Chanter l'hyperchleuasme | Citation: Information importante : vu le peu de dégâts que font les deux héros et les ennemis, les seules façons de gagner un combat sont de :
- brûler un adversaire
- empoisonner un adversaire
- pétrifier un adversaire |
Heuuuu, c'est normal (pour forcer le joueur à jouer intelligemment) ou c'est temporaire ?
Ou bien c'est juste que le héros n'a pas encore de bonnes armes ?
|
L'essentialisme c'est quand ta voiture a un moteur essence. | Es-tu une star ? | Kujira no Hara | Polaris 03 | Planète Glutko |
Kisth -
posté le 20/05/2023 à 11:08:21 (998 messages postés)
| Yeoun, mage-archère-louve | New 4 mois plus tard (et pas un an plus tard)
Presque personne n'a joué à la démo. Du coup, plus de démo techniques, ça me fera gagner un peu de temps. C'est que c'est plus contraignant que d'habitude à déployer à cause des termes d'utilisation des ressources.
J'ai toujours la discussion de Rots dans la tête au sujet de la complexité de certains états. Du coup, petite simplification.
De manière générale, j'essaie d'appliquer l'inverse du fameux "pourquoi faire simple quand on peut faire compliqué" en virant des mécaniques.
Exit la pêche
Exit la moitié des états spéciaux
Exit le casse-tête des combos à dupliquer entre les effets d'armes et les effets d'armures (fin, presque tous, le mage, t'es toujours relou...)
Exit le plugin quasi impossible à configurer d'effets de terrain, cool sur le papier, mais trop foireux à configurer (problèmes de compatibilité) et à rendre un minimum acceptable à l'oeil
Et la formule de combat est là (et est plutôt fidèle à Lyrium)
Spoiler (cliquez pour afficher)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| if (action.isCertainHit()) { return 0; }
const item = action.item();
const a = action.subject();
const b = target;
const sign = [3, 4].includes(item.damage.type) ? -1 : 1;
const v = $gameVariables._data;
let value = Math.max(eval(item.damage.formula), 0) * sign;
let attackValue = 0;
let defenseValue = 0;
if (action.isPhysical()) {
attackValue = LoS_pphy(a);
if (!action.isRecover()) { defenseValue = LoS_pphy(b); }
} else if (action.isMagical()) {
attackValue = LoS_pmag(a);
if (!action.isRecover()) { defenseValue = LoS_pmag(b); }
}
const rate = 100 + Math.min(Math.max(attackValue - defenseValue, -100), 100);
value *= rate / 100;
return isNaN(value) ? 0 : value; |
La coloration syntaxique des commentaires JS étant de toute bôté, je les ai virés.
Crédits pour le squelette de la formule : VisuStella MZ
J'ai aussi vaguement une sorte de workflow pour recoloriser mes ressources, dans l'idée d'homogénéiser l'ensemble, mais j'ai aucune idée de comment automatiser certaines étapes (dissocier le calque alpha et le réappliquer à la fin, par exemple)
|
M.V. |
trotter -
posté le 20/05/2023 à 13:21:54 (10607 messages postés)
| | Tu veux pas la remettre je suis motivé là :
https://lo-shen.itch.io/forgotten/devlog/489377/version-116-dmo-disponible
|
ౡ |
Kisth -
posté le 20/05/2023 à 13:54:57 (998 messages postés)
| Yeoun, mage-archère-louve | J'en remettrai peut-être une cet été, quand j'aurai fini de virer tout ce que je veux enlever. Ce sera, je l'espère, plus plaisant à tester que celle qui était dispo ici.
Note : à cause du popcorn, je ne sais même pas si tu trolles ou si t'es sérieux X)
|
M.V. |
Gari -
posté le 20/05/2023 à 14:00:44 (5899 messages postés)
- | | Je pense qu'il est sérieux.
J'avais vu le post de la sortie de démo, et j'arrive pas à me souvenir si j'avais essayé ou pas (j'étais pas chaud à cause du descriptif de la démo technique il me semble). Si c'était sur une map unique (ou presque), il me semble que j'y ai joué, mais j'avais pas de retour particulier à faire parce qu'il n'y avait pas vraiment contenu.
|
Kisth -
posté le 20/05/2023 à 14:21:50 (998 messages postés)
| Yeoun, mage-archère-louve | Ah, alors un de mes cobayes s'est planté sur le fait d'avoir DL et c'est toi l'unique DL (et qui a testé du coup). J'édite là-haut.
Il n'y avait effectivement pas grand chose à explorer, mais il y avait pas mal de trucs à tester (mais c'était planqué dans les menus ou il fallait avoir la science infuse).
Edit : pour le fun, mon ancien village hanté (sur MV) puis le proto du village hanté pour MZ.
C'est bien plus simple pour repérer les erreurs de mapping, les problèmes de navigation et pour vérifier la passabilité et les mécaniques de mouvement.
En spoiler, parce qu'elles sont grandes ces images.
Spoiler (cliquez pour afficher)
Et ici une comparaison en jeu entre une des maps du village hanté de MV et la nouvelle. Il manque l'effet de lumière. Et les vrais tilesets aussi...
Spoiler (cliquez pour afficher)
Une semaine plus tard...
News mapping
Pour tous ceux qui aiment se balader, voilà le brouillon map de la zone 1 sur Tiled (en cachant la couche technique qui gère les passabilités et les TP en bord de map).
Petit tour du propriétaire :
- Sur la colline du haut se trouve le village hanté, qui sera la seule zone jouable de la démo à venir. C'est l'ancien village qui a été détruit par la fureur du volcan.
Le volcan est une sorte de dieu qui est capable de prendre forme humaine. Son pouvoir, c'est de rendre les gens rageux. En général, ça se finit dans le sang et les flammes quand il rend visite aux iliens.
- En bas à droite, sur une autre colline, c'est le nouveau village.
Je trouve que la disposition est ultra mal foutue, c'est la raison principale pour laquelle il n'est pas accessible dans la démo...
- Entre les deux villages, en marron, ce sont les terres agricoles. C'est basiquement le type d'endroit où on rencontre des slimes ou des rats, le genre de monstres que mêmes les iliens peuvent chasser.
- En bas à gauche se trouve la forêt. À part la bande de terre cultivable (et les pâturages, hors zone) toute l'ile est recouverte de forêts ou de plages. Le volcan entre rarement en éruption, il préfère payer une visite aux habitants, c'est plus fun.
En regardant bien, sur une des trois maps sur la gauche, on voit une entrée de caverne. C'est la "maison" des deux héros, baptisée tout simplement grotte.
J'ai prévu de ne mapper proprement que le village hanté, mais de laisser le joueur libre d'explorer toute la zone 1 une fois qu'il aura fini la petite histoire de la démo technique. Il n'y aura strictement rien à faire à part se balader sur les maps et voir la tête des PNJ villageois. Mais ça donnera une idée de ce que les maps pourraient devenir avec les bonnes ressources.
Et comme tout est bien configuré sur Tiled, maintenant, si une personne souhaite améliorer le mapping, cette personne n'aura pas à acheter MZ pour participer.
Mécaniques de combat
Les formules de combat sont actives ! Tous mes sorts de dégâts directs font enfin des dégâts.
À ce niveau, il ne me reste plus qu'à purger la base de données de tout ce que je ne veux plus garder et à donner des stats aux ennemis et mes combats ressembleront enfin à des combats.
L'invocateur est en mesure d'invoquer des bestioles !
Le problème étant que j'avais abandonné l'idée de créer cette classe à cause de la difficulté technique que cela représentait. Maintenant que c'est techniquement possible, il faut que je réfléchisse un peu pour l'intégrer et lui donner une utilité qui ne soit pas redondante avec une autre de mes classes. Sinon, il finira en classe cachée, un peu comme le mime de FF5.
Pour la petite histoire, à la base, ses bestioles génèrent une aura qui donne des boosts ou des malus à l'équipe. Elles peuvent également servir de punching ball.
La première idée est redondante avec une des classes avancées, spécialisée dans les auras. La seconde est redondante avec le kit du clerc (il pose des boucliers) ou du chevalier (manipulation de l'aggro).
Edit début juin : l'invoc posera les boucliers, le clerc se contentera de soigner.
Reste à savoir si c'est l'invoc qui pose les boucliers ou ses bestioles qui connaissent le sort de base (pas trop difficile à faire a priori, une petite condition en JS)
Spoiler (cliquez pour afficher) Lors de l'invoc, stocker l'ID de l'invocateur dans une variable. Condition JS de l'affichage de la compétence : battler d'ID stockée possède tel équipement.
Déclinable pour d'autres skills que la bestiole n'aurait pas nativement, comme les attaques élémentaires.
Implémentation des classes
Là par contre, vu que j'ai changé beaucoup de choses... Retour au point de départ, basiquement. Si la démo sort au début de l'été, ce sera un exploit.
Apparence des persos et ennemis
Il y aura enfin un peu de diversité dans la prochaine démo. Ce sont des placeholders, mais à terme, à part la fluidité de l'animation et peut-être un peu de personnalisation, l'apparence ne devrait pas changer.
Edit de fin d'année (il neige sur Oniro, IRL aussi d'ailleurs)
J'ai un taf de dingue (à défaut d'avoir le pognon) et le jeu est en pause à durée indéterminée. Ma santé d'abord.
Nous sommes maintenant en 2024. L'année est bien entamée. Ma santé aussi... Ce projet est au point mort.
|
M.V. |
Kisth -
posté le 02/06/2024 à 20:31:35 (998 messages postés)
| Yeoun, mage-archère-louve | Je poste du nouveau juste parce que je veux me faire un nouvel article dans mon blog. Il n'y a pas grand chose à voir pour le moment (message en cours de rédaction).
Peut-être que ça fera un article de tuto à la fin, si c'est assez intéressant.
Comment organiser son projet RM
Suites à plusieurs lectures et visionnages ici et là, j'ai eu envie de tout centraliser à un seul endroit. Mes sources sont toutes disponibles en bas de page.
Création du projet
Objectif : Créer rapidement un projet.
Pour ma part, la création d'un nouveau projet sur RM se fait deux-trois ans après avoir réfléchi au projet, mais la création en elle-même ne prend que quelques secondes.
1) lancer RM ;
2) choisir un titre temporaire* pour le projet ;
3) choisir un dossier, de préférence facilement accessible ;
4) lancer la création et attendre que toutes les données soient créées.
* Cette étape ne doit pas être bloquante. Ce titre servira surtout à nommer le dossier contenant le jeu (à moins de vouloir le changer à la main), donc privilégier un titre sans espace ou caractère spécial. Le titre peut être changé à tout moment dans l'éditeur.
Pour ma part, je choisis pour titre un code ("Tuto", "Test1" ou même "Titre"). Plus, tard, je je rajoute au code un numéro de version et la date à laquelle j'ai effectué la dernière révision des plugins.
Le projet initial s'appelait "RPG". Maintenant il s'appelle "RPG V0.1 - Révision 16 mai 2024".
À l'issue de la création des ressources et du peuplement de la base de données, on arrive sur notre première map, vide à l'exception de la position de départ du joueur. Le jeu est immédiatement jouable, mais on ne peut pas faire grand chose.
Premières préparations
Objectif : Vérifier que l'idée de base tient la route.
Avant toutes choses, je construis les maps suivantes :
Technique
Todo
WIP
Cinématiques
Zone0 (tutoriel)
Zone1
Zone2
Zone3
Zone4
Zone5
Ces maps servent de dossier pour les autres maps. Les dossiers ZoneX correspondent aux différents moments de l'histoire du jeu. On peut aussi les appeler ChapitreX ou tout autre nom parlant. On peut même tout regrouper sous le nom Finies si l'histoire est courte ou si les maps sont peu nombreuses.
Dans Technique, je crée les maps suivantes :
Templates (requise pour un plugin)
Tests
Debug Room
Dans Cinématiques je crée la map suivante :
Synopsis (qui me sert de post-it géant sur l'histoire)
Et enfin, dans Todo, je crée quelques maps correspondant à ma future zone 0, si jamais l'envie de mapper se manifeste.
Une fois tout ceci fait, je retourne sur la map Tests, je choisis son tileset (j'en prends un au hasard, ils vont être modifiés un peu après) et je la recouvre d'herbe. Puis je place la position de départ du joueur sur cette map.
Ensuite, je récupère les principaux plugins qui m'intéressent, je les colle dans le dossier prévu pour cela et j'ouvre le manageur de plugins. Dedans, je les active un par un. C'est à dire qu'à chaque nouveau plugin que j'active, je lance un test du jeu et je vérifie
1) que ça ne plante pas
2) que les FPS ne chutent pas (touche F2)
3) que la console ne lance pas plein de warnings (touche F8)
4) que le plugin fait bien ce que je veux.
Au besoin, je crée des petits events pour tester une fonctionnalité précise.
Puis je désactive tous les plugins pas immédiatement indispensables.
À noter : à ce stade, je n'ai pas installé tous les plugins qui m'intéressent. Uniquement les principaux, ceux qui servent de squelette au jeu.
Premiers bidouillages
Objectif : régler certains warnings.
En tout premier lieu, je vérifie que ma version de RM et la version des Core Scripts sont toutes les deux à jour. Je mets aussi à jour pixi (ici).
Versions de pixi.js recommandées fin 2023 : 4.x.x, 5.x.x ou 6.0.4. Au-delà, des problèmes sont signalés.
De plus, j'ai une version de nwjs supérieure à celle fournie par RM. À chaque nouveau projet, j'en profite pour l'actualiser (infos sur le forum officiel, v0.69 si déploiement sur SteamDeck) Par conséquent, j'ai droit à plein de warnings. Cela nécessite d'installer un petit plugin qui contient ceci :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| // RMMZ_CORE.JS L.1742 // Argument willReadFrequently ajouté.
Bitmap.prototype._createCanvas = function(width, height) {
this._canvas = document.createElement("canvas");
this._context = this._canvas.getContext("2d", { willReadFrequently: true });
this._canvas.width = width;
this._canvas.height = height;
this._createBaseTexture(this._canvas);
};
// RMMZ_MANAGERS.JS L.1934 // Unload event listeners are deprecated and will be removed.
SceneManager.setupEventHandlers = function() {
window.addEventListener("error", this.onError.bind(this));
window.addEventListener("unhandledrejection", this.onReject.bind(this));
//window.addEventListener("unload", this.onUnload.bind(this));
document.addEventListener("keydown", this.onKeyDown.bind(this));
}; |
Note : c'est codé avec les pieds, il y a des manières plus propres de faire.
Ma version de nwjs est la 0.87.0 (taper process.versions dans la console, touche F8)
Enfin, petite touche perso, je remplace le fichier css par un autre personnalisé il y a quelques temps déjà.
Nettoyage du projet
Objectif : Faire de la place pour pouvoir créer une base de données ordonnée.
Cette étape est ridiculement courte. Ou très longue si on y ajoute un système de traduction.
Premièrement, la limite maximale d'entrées en base de donnée est augmentée partout. Puis toutes les entrées sont copiées et collées plus loin, de sorte à laisser beaucoup d'espace en haut de liste.
Attention, certaines entrées ne doivent pas être bougées (ou alors, il faut modifier le code). C'est le cas des compétences Attaque et Garde et du statut KO.
Inventaire des systèmes et des plugins
Objectif : Préparer les deux étapes suivantes.
C'est un excellent moment pour faire le point sur les problèmes de compatibilité entre les plugins retenus (et VisuStella en a un certain nombre).
Ma liste personnelle en spoiler
Spoiler (cliquez pour afficher) Battle Core - Boost Action
When using Action Sequences, Boost effects for damage, turn extensions, analyze, etc. will not occur for anything other than the Action Sequence: "MECH: Action Effect" in order to maintain controlled effects. However, if you do want to apply bonuses for Boosts, utilize "MECH: Boost Store Data" to store inside a variable how many times Boosts were used. This can be used however which way you want it to as long as it is manageable through events and Common Events.
Items and Equips Core - Core Engine
If the VisuStella Core Engine is added to your game with Modern Controls enabled, then the Item Menu Scene, Equip Menu Scene, and Shop Menu Scene's controls will be changed a bit.
The Item Menu Scene will automatically have the Item List Window active, with using the Left/Right (for single column) or Page Up/Page Down (for multi-columns) to navigate between the Item Categories. Similar will occur when trying to sell items in the Shop Menu Scene.
The Equip Menu Scene will automatically have the Equip Slots Window active and only activate the command window upon moving up to it.
Items and Equips Core - Battle Core
Changing the "Damage Multiplier" or "Healing Multiplier" vocabulary for the Item and Equip Core's Shop Status Window is not done with the Item and Equip Core's Plugin Parameters if you have the Battle Core installed.
Instead, go to Battle Core's Plugin Parameters, Damage Settings, Damage Styles, and adjust the style's version of the "Damage Multiplier" or "Healing Multiplier" text instead.
Why does this work this way? Because not all damage styles work off "Multipliers" so in order for it to convey the proper message to the player, each damage style has its own vocabulary to be more accurate.
In case you forget about that, when you visit the Item and Equip Core's plugin parameters for these, it should also remind you in the parameter's description on where to change it.
Items and Equips Core - Weapon Swap
The custom equip slots feature from the VisuStella MZ Items and Equips Core allowed you to add in extra weapon slots. This is now curated up to a max of one weapon slot per character. This needs to be done to make the Weapon Swap System viable.
Summon Plugin - OTB System / STB System
L'invoc ne pourra pas agir tant que le "tour suivant" ne sera pas réinitialisé, donc 2 tours d'inactivité au lieu d'un !
Cet effet est présent aussi pour le STB system, mais c'est moins marqué et ça peut s'expliquer par le "mal d'invocation" intuitivement.
Bestiary - Core Engine VisuStella MZ
When used together in the same project as VisuStella MZ's Core Engine, this plugin will display the Extended Parameters dictated by the Core Engine. The icons assigned by the Core Engine will also be utilized, too.
Bestiary - Battle Core VisuStella MZ
When used together in the same project as VisuStella MZ's Battle Core, the notetags <Display Icon: x> and <Display Text: string> will be used on top of displayed enemy skills to portray their displayed appearances.
Bestiary - Elements and Status Menu Core VisuStella MZ
When used together in the same project as VisuStella MZ's Elements and Status Menu Core, any excluded elements found in that plugin's Plugin Parameters will also be used here to exclude certain elements, too.
Bestiary - Class Change System VisuStella MZ
When used together in the same project as VisuStella MZ's Class Change System plugin, the CP and JP gains from enemies can be displayed under the "Rewards" page as long as the rewards are intended to be shown in the victory reward gains.
Class Change System - Core Engine VisuStella MZ
The Core Engine will determine if icons are displayed next to class names for menus. If you do not wish to use them, then you will need to disable them via the Plugin Parameters:
Core Engine > Plugin Parameters > UI Settings > Text Code > Class Names
Then, set that value to false.
Date and Time - Lighting Effects VisuStella MZ
If you have using VisuStella MZ's Lighting Effects plugin, tints/tones will not be used, but instead, overlay values will be. This is so that the overlay can utilize the lighting system in play. Do not be surprised if any changes to this plugin's tone-related Plugin Parameters do nothing as long as Lighting Effects is enabled.
Lighting Effects - Battle Core VisuStella MZ
Without the VisuStella MZ Battle Core installed in the same project, there will be no darkness overlay in battle and as such, no lighting effects. The Battle Core provides the needed architecture for lighting effects to go through properly.
Lighting Effects - Weather Effects VisuStella MZ
Weather patterns placed on the lower layer will be affected by the darkness overlay that the VisuStella MZ Lighting Effects plugin utilizes. This means that even the supposively "brighter" weather patterns will be dimmed out (such as the Flame Wall or Aurora to name a few). To deal with this, use the Lighting Effects plugin's "Auto-Light Regions" and mark the parallax visible tiles with those said regions.
Weather patterns placed on the upper layer will not be affected by the darkness overlay in order to allow the weather have better contrast in addition to following RPG Maker MZ's decision to not have weather affected by tints either. If you want to tint the upper layer weather, you can add the tint manually through the weather pattern's custom Image Settings and apply a hue.
Chain Battles - Extra Enemy Drops VisuStella MZ
Extra Rewards will be carried over into subsequently chained battles instead of being cleared. However, Forced Rewards will still overwrite everything. Keep this in mind as you use these Extra Enemy Drops Plugin Commands.
Event Chain Reaction - Core Engine VisuStella MZ
Due to the nature of this plugin, the VisuStella MZ Core Engine's plugin parameter "Smart Event Collision" will be automatically turned on in order for the features provided by this plugin to properly work.
Evolution Matrix Skills - Message Core VisuStella MZ
If you are using the VisuStella MZ plugin library's Message Core plugin, the UI Tooltip Plugin Parameters will be enabled and tooltips can be used and will be visible when hovering the mouse cursor over the UI buttons. The tooltip window will display the skill's description.
Evolution Matrix Skills - Skill Cooldowns VisuStella MZ
When using skills with cooldowns through the Evolution Skill Matrix, you may have noticed that the cooldowns may seemingly have -1 less turn. The reason is because the actor's skills may have gone through a cooldown update before the next instance of the Evolution Skill Matrix appears. It is more noticeable when using <Cooldown: 1> with 1 turn. Here's a step by step of what's happening:
Input phase occurs.
Actor picks Matrix skill.
Battle turn starts.
Cooldown updates occur.
Actor's Matrix activates and actor selects a skill with a cooldown.
Cooldown is applied to the skill.
Battle turn ends.
Input phase occurs.
Actor picks Matrix skill.
Battle turn starts.
Cooldown updates occur.
Actor's Matrix activates and it appears the skill is usable again.
Normally, upon regular input for selecting skills normally, the actor does not go through the second cooldown update so a skill with <Cooldown: 1> does have its effect "immediately" reduced.
To remedy this, adjust the Plugin Parameter "Adjust Cooldowns" to alter how many extra turns should be applied to cooldowns when used through the skill matrix. We recommend +1.
Consumable Defensive States - Anti-Damage Barriers
The VisuStella MZ Anti-Damage Barriers notetag effects cannot be used together with the Consumable Defensive States notetag effects. They utilize the same state display. Priority will be given to Anti-Damage Barriers if both of them are detected on the same state.
If you absolutely need for multiple effects from both to occur at the same time, we recommend that you create them as separate states and apply both (or more) states simultaneously.
Multi Layered HP Gauge - Battle Core VisuStella MZ
To reduce redundancy, there are options to remove the HP Gauges if an enemy already has a dedicated Multi-Layer HP Gauge shown at the top of the screen. Likewise, the same is done for state icons.
If you don't want these UI elements removed, you can disable this change by altering the respective Plugin Parameters.
Since the position of the Multi-Layer HP Gauge will most likely overlap with any turn order or action count UI elements at the top of the screen, this plugin provides the option to offset them via how many Multi-Layer HP Gauge rows are present.
Unique Tile Effects - Movement Effects VisuStella MZ
Smart Rush, Smart Jump, and Smart Blink cannot be used while on certain unique tiles, like slippery tiles and force move tiles. This is because the movement behavior will conflict with these tiles' properties. Some actions like Smart Rush will be cut short when going onto these regions.
The general footstep sound effects will also stop playing on these unique tiles. Instead, different sound effects declared through the Unique Tile Effects plugin will be played instead.
Both Smart Rush and Smart Jump can move the player into a pitfall and other similar tiles. Smart Blink, however, will not.
Unique Tile Effects - Event Chain Reactions VisuStella MZ
While on certain unique tiles, some objects cannot be pushed or pulled. For example, the player cannot pull objects with the Plugin Commands while there is a slippery tile or force move tile behind the player.
Objects also cannot be pulled while on unique tiles like slippery tiles and force move tiles.
Note : Auto Skill Triggers est incompatible avec les systèmes FTB / ETB / PTB (les systèmes où une équipe joue après l'autre)
Planification de la base de données - variables, switches et events communs
Objectif : pouvoir accéder aisément aux variables/switches/events les plus communs et ordonner les éléments relevant des systèmes de jeu.
Par défaut, la première page de variables et de switches est dédiées aux variables et switches temporaires.
La seconde et la troisième est dédiée aux variables et switches système (qu'ils soient réservés par un plugin ou bien par un système en events). À titre d'exemple, voici ma seconde page de variables.
Spoiler (cliquez pour afficher) Battle Core
22 : damage
23 : healing
Boost Action
24 : boost tracker
Evolution Matrix Skills
25: evo stade tracker
Battle Talk
26 : talk tracker
Chain Battle
27 : chain tracker
Skill Mastery
28 : last skill lvl
Encounter Effects
29 : Repel steps
30 : Lure steps
Date And Time
31 : Calendar Year
32 : Calendar Month
33 : Calendar Date
34 : Full date (reel)
35 : Time Hour
36 : Time Minute
37 : Time Second
38 : Full time (reel)
39 : Weekday
40 : Diff btw Saves (reel)
Planification de la base de données - autres entrées
Objectif : Se repérer aisément dans la base de données
Féliciations ! Le projet est enfin créé, place au making !
Sources
- Blog de Yanfly
- Blog officiel
- chaine Youtube RPGGameMaker
|
M.V. | Aller à la page 1 2Index du forum > Jeux en développement > [RM MZ] Forgotten - avancement : prototype (plus téléchargeable)
|