Help thread for Monster's SaveLoader

This is a help thread of Monster’s SaveLoader.

I do not want to fill the resource thread with bug-fix discussions. It would quickly hide important informations.

Please feel free to ask questions in here or open a new thread.


This is digiman’s file.

I fixed a bug in the SaveLoader.
The skin mesh of the fish gots two properties that it is not restored. This is because the skin mesh is added by it’s parent. Otherwise you would get two skin meshs, but one is part of the character one is just an object laying around.

digiman, I hope it helps you

Monster

Attachments

monstertest_revised.blend (460 KB)

It works great on your revised blend but does not work on my blend I get the same error " The console says " error can’t distingush parents OBArmature.001 for OBEmpty 052" The fish I guess are deleted as they are added, also when saving then restarting the blend there is about a 5 second delay. Here is what i did I added all the four empties from your revised blend. Again the bubbles a light change work consistently but the fish are not added. the only difference i can see is that my fish have textures and more states:confused:

digiman

Hi digiman,

I did not had much time yesterday and I could not remember all the details from the lost thread (hmmm, good name for a game :wink: ).

I will try to get all the little changes together:

  1. take over the new SaveLoad.py (version 2.6)
  2. (optional) I renamed some of the objects to be more meaningful - but this is not important for Save/Load
  3. all SaveLoad.* objects got a change in the property saveLoad.excludeByProps the value is changed from “saveLoad” to “saveLoad skin
  4. The fish’s skin got two properties:
    4.a. skin (type and value do not matter)
    4.b. saveLoad.excludeMe (type and value do not matter)
    I was expecting that 4.b is enough, but for some reason it is not. [Edit] I just tested … you do not need 4.b[/Edit]

Do not forget to clear your save file before starting with a changed scene. Otherwise you will loose all new objects and changes might be lost (Because they will be restored from the save file).

Yeah, I looked at your blend to make sure i was doing it correctly. I tried it with and without “saveLoad.excludeMe” Your blend works great but on mine No fish when restarting and still same error message
I will fool around with it but seems simple enough, so I am not sure where i am screwing up. I even tried int, float since you said type does not matter, again on yours it works perfectly Saturday when i have a bit more time I’ll see if i can find the problem

digiman

You might want to use the file you sent to me or training ;).

Now what happens is so strange I don’t see a way to fix. I tried adding another fish to your blend which worked sort of. I wanted to see what the problem was on my blend. Your blend worked the first time but something odds happens now the"S" won’t save. Is that crazy or what. Then I downloaded again from your thread “monstertest_revised blend” and the “S” saves but when restarting it adds fish from previous saves, like the problem used to have. It was working fine until i added another fish to your blend. I’ll bet it works on your system but not mine. That is strange. Just wanted to keep you updated. I will keep at it. It also seems to have a problem with textures

digiman

Hi Monster! I have a problem with the SaveLoad ^^’

How can I save the slow parent of a camera?

I mean, from one scene to another (A to B) works fine, but when I go back one scene (B to A) I lost the slow parent .-.

I’m doing something wrong? xD

The easiest solution is not to save the parenting. Slow parenting does usually not change during the game. So it should be fine.

You can do that with a property on the slow-parented child:
Type: string
Name: saveLoad.exclude
Value: parent

Unfortunately it does not work as designed. I have to check first. I think I can deliver a fix shortly.

I think excluding the child is not an option, as the position/orientation would not be saved either.

Reasons
This is because of a bug in Blender. Blender does not store the correct local position of a child. (The info I got: This is a feature and will not be fixed :no:).

As a workaround the save loader re-establishes all parent-child relationships by removing the parent and parenting it again. After that all positions are correct and can be stored/restored.

Unfortunately the BGE can’t explicit create slow parent. It sets the time offset, but the slow parenting flag is not available.

Hi RossBlenderArt,

Unfortunatly this is agoose77’s SaveLoader. I really can’t help with that.

This thread is for Monster’s SaveLoader. I will change the title to make it more specific ;). The link to the resource thread would be helpful to I guess :D.

thanks for the detailed reply Monster! =)

hope you can create the fix :o

Short Update, slow parent is quite tricky.

You need to set localPosition AND worldPosition.
localPosition sets the target position (relative to the parent) while worldPosition sets the current position.

This needs a few changes.

The slow parent provides more problems as I expected :frowning:

it’s alright Monster!

thanks for the help ^^

I will try to circumvent this problem, I think there’s a way to simulate the slow parent

Soon I will post if it worked xD

There is a way to simulate slow parent using python

thanks for the tip, Agoose! is another option to me! xD

I did the following here:

a cube with parented camera follow the player! is almost the same effect as a slow parent, heheheheh xD

thanks for the help guys!

Hi Monster, it’s me again! :o
finally i’m trying to make a side-scroller :RocknRoll:
… and a new problem appeared, heheheheh xD

i made the scheme of rotate the character to left and right with a property:

worked perfectly, but only in the direction of scene A > B > C > etc…
I mean, in the direction of C > B > A occurs a issue, the character starts to ‘walking backwards’
When I press left, he goes to left but looking to right, when I press right, he goes to right but looking to left :spin:

so I used the ‘saveLoad.exclude -> dir’ , but no results =/
then I used animation, a ipo curve with keyframes for rotation in Z, but surprisingly I had the same issue 0.o

I suspect this has some relation with the first frame of the scenes and the load of the second frame

I’m doing something wrong and I don’t know what could be
Could you help me? :o

Hi,

To exclude properties from saving you need:

property saveLoad.excludeProps with a (space separated) list a of property names to be excluded.

The property should be present at the object with the properties to exclude.
[After changing the excludeProp -> old savefiles should be deleted or overwritten (as they contain the properties to be excluded and the old exclude property)]

Example to be tried with the Demo:

ship:
saveLoad.excludeProps with “points”

ship.display:
saveLoad.excludeProps “Text”

this will avoid the storage of points
and the storage of the display

@ramoncb:
Regarding your issue.
As far as I see the value of “dir” does not matter. What matter is it changed. (BTW. you can use the toggle mode to achieve this.)

It is not possible to store the change of a property (= sensor event). Regardless of that, it is a general problem, that loading changes the state, as this can be interpreted as “already” running.

The cleanest solution is to start such “game-logic” at the second frame rather than the first frame.

This can be done with a delay sensor, an active property, states etc.

Thanks for the help, Monster! :smiley:

but I must confess to you, I can’t make the logic work properly :spin:

could you look at the .blend I did?

thanks again :o

Attachments

test_left_right.blend (662 KB)

As far as I see the character is working fine. It is the little triangle above the player that faces the incorrect direction.

You might want to add this property to it:
saveLoad.excludeMe Boolean True (important)

ops… xD
the whole problem was in the triangle… :o

thanks again, Monster! now with the ‘excludeMe’ all works properly! :smiley:

you saved my life! really, thank you so much!