Les points compliqués de la Migration PSP -> PSDK, parlons-en !

3 Réponses • 512 Vues

Bonjour,

Depuis un moment déjà, de nombreux makers se sont penchés sur la question de passer de PSP à PSDK, notamment pour avoir un support plus actif et des fonctionnalités plus approfondies que ne leur offrait plus PSP qui a connu une pause énorme de développement pendant une petite dizaine d'années.

Après le message de décembre publié par Yuri sur le topic de PSDK : https://pokemonworkshop.fr/forum/index.php?topic=17.1200#msg122629, un débat a vu le jour. Même si je sais que celui-ci a fait coulé beaucoup d'encre, il a été très bénéfique sur certains points, notamment dans l'implication de plusieurs membres dans la réalisation du wiki (dont je salue le dévouement ainsi qu'à Rey et Aerun pour en avoir été les instigateurs).

Après ce débat, il est devenu clair que PSP 1.0 est censé être une mise à jour de PSP de façon à corriger les bugs des versions antérieures et de soulager les  fangames "poids lourds", au niveau des bugs et de certains manques de fonctionnalités de PSP, qui mettraient un temps très conséquent à passer sous SDK. De même, sur le forum, on peut également apercevoir des nouveaux membres qui se plaignent de cette migration puisqu'elle ne paraît pas facile.

C'est pour cette raison qu'il serait bon de mettre en place un outil qui puisse convertir un maximum de choses de PSP vers SDK pour limiter le travail "à la main" comme il a pu être fait pour certains fangames (comme Prisme par exemple). C'est là que je fais appel à vous chers makeurs-makeuses. Que vous soyiez sur PSP ou PSDK votre aide peut être utile !

En effet, comme j'en discutais avec Yuri et Damien tout à l'heure, nous allons essayer de standardiser les données de manière à faciliter un outil pour effectuer la conversion des données entre les deux. Cependant, il reste de nombreuses fonctionnalités difficiles à exporter de PSP vers PSDK. Je viens donc vous demander votre aide, que vous soyez sur PSP ou PSDK, que vous ayez ou pas effectué la migration, pour dresser une liste des fonctionnalités qu'il serait utile de pouvoir convertir.

Je ne vous demande pas une liste de ce type : https://pokemonworkshop.fr/forum/index.php?topic=17.0, ce que nous recherchons est plus précis. Exemple :
Citer
On ajoute un dresseur sur PSDK via RubyHost [...] (Description un peu détaillée du processus s'il y en a) alors que sur PSP ça se fait dans l'onglet Troops par commande scriptée avec telle ou telle condition.

Vous pouvez très bien mettre un lien vers le Manuel de Krosk ou le yard et le wiki de PSDK pour éviter de tout détailler, bien entendu.

En vous remerciant par avance de votre aide.

« Modifié: 21 avril 2020, 07:36:38 par yyyyj »

"On ne voit bien qu'avec le coeur, l'essentiel est invisible pour les yeux",  Antoine de St-Exupéry

Proposition

Nuri Yuri

HostMaster

Points compliqués mais solvable :
- Portage des interrupteurs et variables
- Portage des données du jeu (Pokémon, Item, Map links etc...)
- Tilesets (PSP n'a aucune idée de ce qu'est un systemtag, il faut donc assigner les systemtags manuellement en passant de PSP à PSDK).
- Déclencheur des dresseurs : PSDK a besoin d'une petite variable en plus ou il propose une alternative qui évite d'écrire un événement long comme le bras :
- - https://psdk.pokemonworkshop.fr/yard/Interpreter.html#trainer_eye_sequence-instance_method (pour la detection)
- - https://psdk.pokemonworkshop.fr/yard/Interpreter.html#start_trainer_battle-instance_method (pour le lancement du combat)

Points très compliqué nécessitant du travail en amont :
- Les UI ne sont pas compatible. PSP utilise les draw_text et Window_Base alors que PSDK utilise les SpriteStack et affiche des sprites à l'intérieur des Window (pas de draw_ en gros).
- La plupart des scripts ne peuvent pas être repris (incompatibilité)
- La compatibilité des sauvegardes

Points insolvables :
- Les scripts du type "Lecteur de Video" sont totalement inutilisables sous PSDK, PSDK n'expose pas la Win32API car d'une c'est déprécié et de deux c'est pas portable.

Pour ce qui est de résoudre certains de points, on peut travailler ensemble pour uniformiser PSP et PSDK d'une certaine manière (il ne s'agit pas nécessairement d'avoir exactement le même système mais d'avoir une base de fichiers qui soit échangeable entre les deux kit).

Notez que les fonctions de script pour événement de PSDK sont toute documentées ici : https://psdk.pokemonworkshop.fr/yard/Interpreter.html
S'il y a des manques par rapport à PSP, il est tj possible de les ajouter. S'il y a besoin de traductions, il est toujours possible de créer un alias.
ln(yo) = <3
Aaaaah... La transition vers PSDK, j'en aurai eu des boutons avec ce truc :teatime:

Au-delà des systèmes particuliers qui nécessitaient un script (combat aléatoire, HOF, crédits...) je crois que les deux plus grosses purges étaient les suivantes :
  • Les quêtes - Parce qu'on passe quand même d'un script où tu hardcodes tout à RH donc faut repasser sur tout (coucou 80 quêtes)
  • Les interrupteurs et variables - Le fait que PSDK réserve les 100 premiers m'a forcé à trier et ranger mes placards à interrupteurs et variables pour ensuite remettre le bon numéro sur chaque event du jeu.

Un des autres points problématiques était bien évidemment la gestion des groupes de Pokémon sauvages vu qu'il a fallu tout passer sur RH et que RH ne dispose pas d'une fonction copie/coller pour les groupes (je peux voir dire que voir les mots "Magicarpe" et "Canne" me font faire des cauchemars maintenant, 7.8/10 too much water).

Pour les Dresseurs c'était plus ou moins okay parce que j'utilise pas RH sur ce point, j'ai quand même dû repasser pour les adapter au format PSDK mais y en avait "que" quelques centaines donc faisable.

Côté pratique, à chaque fois que je bougeais un event au format PSDK (mettre le bon objet parce que les IDs sont pas les mêmes entre PSP et SDK par exemple), j'ajoutais un commentaire "DONE" tout en de l'event. Ensuite, grâce à un script, je sortais les positions des events (X, Y, Map ID) qui n'ont pas ce "DONE" en première commande pour voir ce qu'il me manquait.

Tout cela bien sûr en gardant un oeil sur comment SDK lui-même évoluait et qui pouvait aussi potentiellement casser des trucs :siffle:
Super initiative de ta part en tout cas, merci pour ce topic  :3

Alors je connais très très mal PSDK donc je ne vais donc pas faire la liste des différences PSDK et PSP mais de ce qui existe sur PSP et qui existera sur PSP 1.0 (vu que c'est vers cette version qu'on se propulse) et qu'il est important d'amener sur PSDK (la mention "#" précise la version d'apparition, actuelle ou à venir) :

- Le portage des interrupteurs

- Le portage des variables

- Les appels dans les events (les events commun et certains scripts pas tous, je préciserai les scripts pouvant être appelés plus-bas)

- Les groupes (pokémon sauvages et dresseur)
=> Leur définition dans la BDD
.Pour les Pokémon sauvages :
écart
[Pokémon 1, niveau, rareté locale],
[Pokémon 2, niveau, rareté locale],
[Pokémon 3, niveau, rareté locale],
[Pokémon 4, niveau, rareté locale],
[Pokémon 5, niveau, rareté locale],
[Pokémon 6, niveau, rareté locale]
.Pour les dresseurs :
Dresseur
Argent gagné
Phrase victoire 1 # PSP 1.0
Phrase victoire 2
Phrase victoire 3
...

Phase défaite 1 # PSP 1.0
Phrase défaite 2
Phrase défaite 3
...
Pokemon
{ "NIV" => ..., "OBJ" => ..., ...}
Objet # PSP 0.10
{ "OBJ" => ..., ...}

- Les tilesets

- Les quêtes # PSP 0.9.2 remastered

- Les audios utilisant fmodEx ou AudioPlus # PSP 0.10

- Les vidéos # PSP 1.0

- Les images fixes sur les maps # PSP 1.0

- Les objets tenus par les pokémon sauvages (script) # PSP 0.10

- Les équipes générés aléatoirement (script) # PSP 0.10

- Les appels à la météo # PSP 0.9.2 remastered

- La personnalisation du jeu avec le système d'option de Metaiko # PSP 0.10

- Appel du dresseur en fin de combat (quand il reste un dernier pokémon comme dans platine) # PSP 0.10

- Les appels aux scripts :
Multichoix de Youspin # PSP 0.9.2 remastered
Mot de passe # PSP 0.9.2 remastered
VoltorbeEvasion # PSP 0.10
Maître des capacités # PSP 1.0
Modifier les interrupteurs locaux à distance # PSP 1.0
Utilisation de variables locales # PSP 1.0

- Les redirections via des interrupteurs / variables (qui sera à modifier dans les events) :
Distributeur # PSP 0.10
Parc Safari # PSP 1.0


Pour les fangames personnalisés :
- Les attaques / talents créés (BDD && Battle_Core)
- Les objets créés (BDD && Battle_Core)
- Les pokémon créés (BDD && Pokemon_Custom)
- Les pokémon animés (gif sur PSDK et png sur PSP) # PSP 0.10
- Les fichiers de configurations # PSP 0.10
=> Gestion_Effets (pour les effets des attaques) / Gestion_Talents (pour les effets des talents) / Gestion_Objets (pour l'utilisation des objets par le dresseur adverse en combat) / Gestion_Graphic_Audio (centralisation des transitions graphiques et audio utilisés en script pour les combats si utilisé car facultatif  + centralisation des audio) / Gestion_Pictures (centralisation des images) / Gestion_Baies (centralisation des effets des baies en combat)

La liste des events communs actuels (je ne connais pas la liste exacte pour PSP 1.0, donc je vais seulement citer ceux de PSP 0.9.2 remastered, liste identique dans PSP 0.10) :
- Centre Pokémon (et event retour + équipe défaite)
- Pension
- Echange
- Carte
- Bicyclette
- Canne / Super Canne / Méga Canne
- Baies # PSP 1.0
- Carte Dresseur
- Coupe
- Vol
- Surf
- Force
- Flash
- Eclate-Roc
- Tunnel
- Journal quête
- Talut (haut, bas, droite et gauche)
- Distributeur - boisson
- Corde Sortie
- Boîte Jetons
- Anti-brûme
- Mot de passe
- PP PLUS
- PP MAX
- Repousse
- Choix Pokemon # PSP 1.0
- Téléporter # PSP 1.0
- Cherch'Objet # PSP 1.0

Les appels en script de l'Interpreter PSP (je fais juste un copier / coller comme les events communs) :
- demarrer_combat / call_battle_wild
- demarre_combat_param
- demarrer_combat_existant / call_battle_existing
- call_battle_trainer
- set_encounter
- set_encounter_name
- demarrer_pc / run_computer
- activer_pokedex / enable_pokedex
- soigner_equipe / heal_party_center
- ajouter_pokemon / add_pokemon
- ajouter_stocker_pokemon_aleatoire / add_or_store_random_pokemon # PSP 0.10
- random_pokemon / PSP 0.10
- ajouter_stocker_pokemon / add_or_store_pokemon
- ajouter_pokemon_param / add_pokemon_parameter
- stocker_pokemon / store_pokemon
- ajouter_et_nommer_pokemon / add_and_name_pokemon
- ajouter_stocker_pokemon_cree / add_store_created_pokemon
- retirer_pokemon / remove_pokemon
- retirer_pokemon_index / remove_pokemon_index
- create_pokemon
- enregistrer_pokemon / make_pokemon
- pokemon_existant? existing_pokemon?
- effacer_pokemon_existant / erase_existing_pokemon
- appel_pokemon / call_pokemon
- Conversions script => "BDD" (normalement obsolète) : skill_conversion / pokemon_conversion / item_conversion
- id_conversion
- draw_choice
- cry_pokemon
- complete_pokedex
- name_pokemon
- trainer_spotted
- player_front_tile
- player_front_terrain_tag
- player_front_passable?
- pokemon_numero / pokemon_number
- pokemon_choisi / pokemon_selected
- appel_menu_equipe / call_party_menu
- enseigner_capacite / teach_skill
- skill_selection
- appliquer_objet / apply_item
- pokemon_possede / got_pokemon
- pokemon_index / get_pokemon
- sauv_retour
- Autre appel variable / interrupteur : var / switch
- equipe_vide?
- actualiser_rencontre
- ajouter_oeuf
- effectif_equipe

Il est largement probable que j'ai oublié des trucs, si je m'en rends compte je modifierai x)
J'ai essayé d'être pas mal complet ^^ je sais que des choses en script vont être on peut dire impossible à faire "automatiquement" mais pour le coup ça permet d'avoir une liste la plus complète possible des choses à tenir compte dans la migration de PSP vers PSDK

« Modifié: 28 avril 2020, 11:51:41 par Damien Linux »

Linux c'est plus qu'un OS, c'est une passion

There was an error while thanking
Thanking...