Sujet n°4715
Posté par Krosk le 3 Aoû - 11:14 (2009)
Titre : [Script] Anti-no-such-file
Vous avez produit une démo d'un jeu PSP (cryptée, qui plus est), et vous êtes confiant que la démo marche et que vous allez faire un carton. Tout content, vous distribuez votre lien partout, et des milliers de joueurs téléchargent votre démo.

. . . . .

"No such file or directory - Graphics/Picture...." ou bien "Le fichier .... est manquant."

C'est le message qu'on vous rapporte au bout de 10 minutes de jeu, et il est impossible d'aller plus loin car c'était un passage obligatoire... OTL... Je vous laisse titrer les conclusions.
_____

Pour parer à ce genre de situation que les makers et les joueurs sur RMXP ont déjà tous rencontrés, le petit script suivant permet de ne pas faire planter votre jeu si une ressource graphique ou audio manque, que le projet soit crypté ou non. La ressource sera simplement ignorée...

Il s'agit d'un filet de sécurité pour vos productions, qui ne vous dispense pas bien sûr de vérifier soigneusement qu'aucune ressource ne manque, mais qui au moins ne frustrera pas les joueurs coupés en pleine aventure.

Et l'infameux bug du battleback manquant ne vous empechera pas de continuer à jouer, en plus.


Code:
# --------------------------------------------------------
#  Anti-"No such file"
#  ou comment dédramatiser le manque d'une ressource
#    par Krosk - merci à Wawower et berka
# --------------------------------------------------------
# Ce script permet de continuer le jeu malgré
# l'absence d'une ressource graphique ou audio
# que le projet soit crypté ou non.
#
# Il n'empêche pas le crash en cas
# de manque d'une map ou d'un fichier data...
#
# L'image manquante est substituée par
# une image vide, mais vous pouvez
# à la place utiliser une image de substitution.
#
# Le son manquant n'est tout simplement pas joué.
#
# Par ailleurs, personnalisez vous même le message
# NOSUCHTEXT pour signaler au joueur la conduite à adopter.
#  (utilisez \n pour sauter une ligne)
#
# Vous pouvez aussi couper les messages d'avertissement
# en commentant les lignes de print dans ce script.
#  (en placant # en tete de ligne)
# --------------------------------------------------------

NOSUCHTEXT = "Veuillez me contacter pour me prévenir\nque cette ressource est manquante."

class << Bitmap
  alias_method :alias_new, :new unless method_defined?(:alias_new)
  def new(*args)
    alias_new(*args)
  rescue
    if args.size == 1
      print "La ressource #{args[0]} manque.\n" + NOSUCHTEXT
    end
    alias_new(32, 32)
  end
end

module Audio
  class << self
    alias_method :temp_se_play, :se_play unless method_defined?(:temp_se_play)
    alias_method :temp_me_play, :me_play unless method_defined?(:temp_me_play)
    alias_method :temp_bgm_play, :bgm_play unless method_defined?(:temp_bgm_play)
    alias_method :temp_bgs_play, :bgs_play unless method_defined?(:temp_bgs_play)
  end

  def self.se_play(filename, volume = 100, pitch = 100)
    self.temp_se_play(filename, volume, pitch)
  rescue
    print "La ressource #{filename} manque.\n" + NOSUCHTEXT
  end
 
  def self.me_play(filename, volume = 100, pitch = 100)
    self.temp_me_play(filename, volume, pitch)
  rescue
    print "La ressource #{filename} manque.\n" + NOSUCHTEXT
  end
 
  def self.bgm_play(filename, volume = 100, pitch = 100)
    self.temp_bgm_play(filename, volume, pitch)
  rescue
    print "La ressource #{filename} manque.\n" + NOSUCHTEXT
  end
 
  def self.bgs_play(filename, volume = 100, pitch = 100)
    self.temp_bgs_play(filename, volume, pitch)
  rescue
    print "La ressource #{filename} manque.\n" + NOSUCHTEXT
  end
end

Posté par Newtiteuf le 3 Aoû - 12:03 (2009)
... mais tu es un dieu Krosk ?  :shock:

C'est exactement ce que je cherchait :shock:

Merci :^^:

Posté par Sphinx le 3 Aoû - 12:20 (2009)
=) Intégré d'office à 4G+


^o^ finalement t'as trouvé comment aliasser cette satanée méthode xx_play ^o^

Posté par Lén le 3 Aoû - 12:41 (2009)
J'avais filé un script a MK qui vérifiait quelles ressources étaient utilisés dans le jeu, pour pouvoir supprimer le lots de truc inutiles qui trainent dans nos dossier ^^

Maiq la c'est génial d'avoir pensé a faire ça ! merci krosk !

Posté par nathan818 le 3 Aoû - 13:19 (2009)
Ou c'est qu'on le met le script?

Posté par Krosk le 3 Aoû - 15:34 (2009)
n'importe ou au dessus du script Main (celui tout en bas de la liste)

Posté par Mini' le 3 Aoû - 16:23 (2009)
Compatible pour tout projet je suppose, pas obligatoirement PSP puisqu'il est dans générique.
Je l'intègre, merci beaucoup. =)

Posté par Sphinx le 3 Aoû - 18:23 (2009)
Krosk, il y aurait moyen de lister toutes les ressources appelées (en parcourant son jeu), non ?

Posté par Krosk le 3 Aoû - 21:55 (2009)
Les scripteurs experts sur Creative m'ont indiqué deux optimisations possibles, le script est donc mis à jour et encore plus compatible.

Sphinx >> ressources rencontré au cours d'une partie, ou ressources utilisées par le jeu ?

Posté par Sphinx le 4 Aoû - 10:35 (2009)
les ressources appelées par le jeu =)

Posté par Krosk le 4 Aoû - 12:02 (2009)
des scripts qui font ça existe, j'ai en tete celui de Zeus81 qui fait l'inventaire des ressources utilisées. Trouvable par exemple sur Oniromancie.

Posté par Sphinx le 4 Aoû - 12:55 (2009)
Mais ca n'est pas compatible avec PSP, si ? (celui que j'avais trouvé et testé ne marchait pas sur PSP, trop de fichiers à passer en revue)

Posté par Krosk le 4 Aoû - 16:19 (2009)
Je ne sais pas, je ne l'ai jamais testé pour PSP.

Posté par nathan818 le 4 Aoû - 16:25 (2009)
Merci pour ce script!!
Il est GENIAL^^

Posté par Lén le 5 Aoû - 17:58 (2009)
Sphinx a écrit:

Mais ca n'est pas compatible avec PSP, si ? (celui que j'avais trouvé et testé ne marchait pas sur PSP, trop de fichiers à passer en revue)

Demande a Mister K il en a un fonctionnel ! du moins il en avait un au mois de mars.

Posté par Krosk le 5 Aoû - 23:13 (2009)
Petite alerte : mon script, semble-t-il, causait un léger bug à l'appui de reset (F12) quand je l'ai testé avec Reincarnations. J'ai corrigé la ligne.