Nouveau problème sous glulxe, et un gros cette fois

Bon

Alors je suis en train de faire un jeu sous glulxe.

vous pouvez télécharger le .blb du début du jeu sur

attracteurs-etranges.com/files/ekphrasis.blb (7 Mo)

Je peux sauvegarder mais…

…quand je lis une partie, et que j’essaie de faire une action autre que « inventaire », j’ai l’erreur suivante :

Glulxe Fatal Error : Reference to nonexistent Glk Object

Et gluxle plante.

Des idées ?

JB

wow, cela en jette ! Excellent, avec les effets sonores etc…
je sens que ce jeu va faire parler de lui ! En plus l’histoire semble bonne aussi. La charmante dame est d’accord pour figurer dans le jeu ?

Pour ton problème, je ne pense pas bcp pouvoir t’aider, mais je crois me souvenir que j’avais une erreur similaire un jour dans mon jeu (mais pas à la sauvegarde), il y avait une petite erreur de syntaxe ou de conception, qui rendait le jeu très instable en version glulx. Est-ce qu’il te serait possible d’essayer de compiler en Z5 ou Z8 ? Ainsi tu pourrais peut-être mieux identifier l’erreur.
Tu devrais aussi essayer de compiler avec les fonctions de deboggage, et voir s’il n’y a pas un objet qui pose problème.

Enfin, tu peux aussi essayer de faire des coupes franches dans ton code (enfin, une copie), si c’est possible, et voir pour une partie puis l’autre si la sauvegarde pose encore pb.
J’ai remarqué aussi que la sauvegarde ne replace pas l’image d’où on avait sauvegardé, mais cela est sans doute inévitable

Bah, j’y suis presque, mais voici le coeur du problème et la solution.

Coeur du problème et identification :

Glulx gère une fenetre principale qui s’appelle mainwin.

On peut coller des images, ecrire, jouer, interagir, le principe de sauvegarde / chargement est géré sans problème.

Si on ouvre une autre fenetre (par exemple mapwin dans mon exemple), le système sauvegarde / restauration ne prend pas en compte la gestion de cette nouvelle fenetre et fait planter l’interpreteur.

La solution est toute simple, il vous suffit de copier « aveuglement » :

[IdentifyGlkObject phase type ref rock res id;
res = res; id = id; ! ← These are just warning squashers
if (phase == 0) { ! Zero out references to our objects.
gg_mapwin = 0;
}
if (phase == 1) { ! Reset our windows, streams and filerefs.
switch (type) {
0: switch (rock) {
GG_MAPWIN_ROCK: gg_mapwin = ref;
}
1: ! stream
2: ! fileref
}
}
if (phase == 2) { ! Update our objects.
! RedrawMapInMapWindow(); ! Or do anything you like…
}
return;
];

ou vous voulez dans votre code, en remplacement gg_mapwin par gg_cequevousvoulezwin suivant le nom de votre (ou vos) fenetre(s).

J’ai annulé la fonction redrawMapinMapWindow(); car elle présuppose qu’on utilise le même principe d’update d’image dans la fenetre graphique que celle décrite dans Gull de Adam Cadre, ce qui n’est pas le cas de mon projet actuel…

Très sympa comme jeu!
Par contre c’est codé jusqu’où? J’ai très vite été bloqué :blush:

Euh, jusqu’à l’ascenseur dans la bibliothéque ste genevieve, mais si tu en es arrivé là et que tu trouves ca court, ca me met la pression :wink:

Mais il me semble qu’il n’est plus en ligne ?

T’es bloqué où ?

JB

Je l’avais téléchargé le jour où tu as posté le 1er message.

Et en fait j’étais bloqué dans le premier bureau. Je suppose qu’on peut demander au collègue de nous faxer une photo du tableau ou je ne sais quel document, mais lorsque je l’appelle je tombe sur quelqu’un d’autre, et je n’arrive pas à parler à cette personne.

C’est peut-être une fausse piste :slight_smile: mais en tout cas j’ai surtout insisté sur le téléphone, sans arriver à avancer.

Peut être parce que quand on appelle de l’étranger en France la numérotation est différente ? :wink:

Oh la laaaaaaaaa!
Excellent, hehe… pas l’habitude de jouer à des jeux aussi réalistes :wink:

Ca a été chiant à coder…surtout que tu reviens à Paris ensuite et que là il faut que tu puisses téléphoner mais sans le préfixe…

JB