Announcement

Collapse
No announcement yet.

[PLUGIN] Savior 2

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    If not spawned at runtime they don't need a Guid.
    Also only Actors, Components and generic UObjects are supported, instanced meshes are not designed to be serialized. You would have to force them to respawn manually, for example based on an array of saved vectors.
    | Savior | USQLite | FSM | Object Pool | Sound Occlusion | Property Transfer | Magic Nodes | MORE |

    Comment


      What is the SGUID? I can't seem to find a reference to it on google except for in this thread

      Comment


        You can find info in post #6 of first page in this forum thread.
        It's just a FGuid struct always named "SGUID", you give it that name and the plugin knows what to do with it.
        | Savior | USQLite | FSM | Object Pool | Sound Occlusion | Property Transfer | Magic Nodes | MORE |

        Comment


          Originally posted by BrUnO XaVIeR View Post
          You can find info in post #6 of first page in this forum thread.
          It's just a FGuid struct always named "SGUID", you give it that name and the plugin knows what to do with it.
          Thank you, I will be purchasing this plugin.

          Comment


            BrUnO XaVIeR Is there a use case for Savior 2 + USQLite Database (using both within the same project) ?

            Comment


              No, I don't know why anyone would do that.
              | Savior | USQLite | FSM | Object Pool | Sound Occlusion | Property Transfer | Magic Nodes | MORE |

              Comment


                Originally posted by BrUnO XaVIeR View Post
                No, I don't know why anyone would do that.
                Alright, then next question - I already have Savior 2. Why would I want to use USQLite Database instead of Savior 2 ? (let's say in the game I am working on I will have _some_ RPG elements like quests and stats, but nothing even close to the scale of Skyrim)

                Comment


                  Originally posted by motorsep View Post

                  Alright, then next question - I already have Savior 2. Why would I want to use USQLite Database instead of Savior 2 ? (let's say in the game I am working on I will have _some_ RPG elements like quests and stats, but nothing even close to the scale of Skyrim)
                  Savior system is better for offline games.

                  uSQLite plugin was built to be expandable and safe for dedicated servers (where you own the server hardware) and online games, but can also be used on offline games as well.
                  When you build a C++ project in dedicated server mode, the uSQLite plugin is configured to generate DLLs, but when you package a build in Client mode then all its functions will not be generated to the Client, so online games have the security measure of making sure that all the save system is not present on any released Client binaries, while Server have a save system that works pretty close to what Savior plugin does.
                  | Savior | USQLite | FSM | Object Pool | Sound Occlusion | Property Transfer | Magic Nodes | MORE |

                  Comment


                    Hi BrUnO XaVIeR ,
                    Getting my feet wet with Savior 2 and I have a question related to the MarkDestroyed functionality. I have an actor in Level 1 (placed via the editor) that has the 'Destroyed' variable set and SaveGame tag. When it gets picked up it is flagged Destroyed = True. My player character can then overlap a trigger volume in the level blueprint, which calls the Save Level function and goes on to load Level 2:

                    Click image for larger version  Name:	20191029_093415.png Views:	0 Size:	66.4 KB ID:	1679316

                    In Level 2 I have another trigger volume that send the player back to Level 1. This triggers the 'Event BeginPlay' for Level 1, which looks like this:

                    Click image for larger version  Name:	20191029_093904.png Views:	0 Size:	28.2 KB ID:	1679318

                    What I'm seeing is the following:

                    Player picks up item in Level 1 (marking it as destroyed).
                    Player transitions to Level 2 (after level is saved to slot).
                    Player transitions back to Level 1 (level is loaded from slot).
                    Item that player picked up is NOT in the level (all good here).
                    Player transitions to Level 2 again (level is saved to slot again, overwriting previous).
                    Player transitions back to Level 1 (level is loaded from slot).
                    Item that player picked up IS back in the level.

                    I would expect the item, since it is destroyed, to never appear again. But what I'm assuming to happen in this scenario is that since the item is not in the level the second save to slot writes no information about it being destroyed (and the previous save information is overwitten). Thus on the next load it will reappear.

                    Is this expected behaviour (bug?) or am I doing something wrong with how I destroy an actor/save/load level?
                    Last edited by Naveed; 10-29-2019, 08:24 AM.
                    twitter: @NaveedHIQ

                    Comment


                      I will check plugin code to see if there's a bug.
                      But when you overwrite save data, the pickup from Level 1 is no longer saved into the plugin's list of destroyed instances in the slot... This is why you see it come back.

                      I think if you have to overwrite slot data often maybe you should create a pickup list and force them delete after load, since auto destroy information is lost by the slot.
                      Last edited by BrUnO XaVIeR; 10-29-2019, 08:40 AM.
                      | Savior | USQLite | FSM | Object Pool | Sound Occlusion | Property Transfer | Magic Nodes | MORE |

                      Comment


                        Originally posted by BrUnO XaVIeR View Post
                        I will check plugin code to see if there's a bug.
                        But when you overwrite save data, the pickup from Level 1 is no longer saved into the plugin's list of destroyed instances in the slot... This is why you see it come back.

                        I think if you have to overwrite slot data often maybe you should create a pickup list and force them delete after load, since auto destroy information is lost by the slot.
                        Certainly seems that way. I wonder if the SGUID 'create once' function could be enhanced (or a derivation created) to keep it the same no matter how many times a level is loaded. This could then be used as a pickup list, as you mentioned. However, right now, the SGUID that is created is different for an actor every time a level loads, understandably. Just a thought, it would save a bunch of time over keying actor references by hand.

                        That said, I cannot see how useful the MarkDestroyed functionality is. We're saying that it will only destroy items you flagged as destroyed on the previous play of the level as long as you never save the level in the same slot again. I hope it can be improved!
                        twitter: @NaveedHIQ

                        Comment


                          A new Sguid value is only generated if the actual guid value is invalid.
                          If you apply manually a fixed Guid value to it then the node in constructor should never replace that Sguid value you already have.

                          If you spawn an Actor with a 0000-0000 etc, invalid guid value, then the node triggers generating a new one in constructor.
                          | Savior | USQLite | FSM | Object Pool | Sound Occlusion | Property Transfer | Magic Nodes | MORE |

                          Comment


                            Originally posted by BrUnO XaVIeR View Post
                            A new Sguid value is only generated if the actual guid value is invalid.
                            If you apply manually a fixed Guid value to it then the node in constructor should never replace that Sguid value you already have.

                            If you spawn an Actor with a 0000-0000 etc, invalid guid value, then the node triggers generating a new one in constructor.
                            This is mentioned in a previous post and I totally forgot about it! Just tried it and it works, this will save me a bunch of time. What a great little utility. Thank you!
                            twitter: @NaveedHIQ

                            Comment


                              What is the difference between the standard GUID and these plugins SGUID?

                              Comment


                                Originally posted by Rob-bb View Post
                                What is the difference between the standard GUID and these plugins SGUID?
                                Several internal C++ systems in the plugin use code reflection to lurk into your blueprints and see if a "SGUID" property is present.
                                The difference is only in the name of the GUID property, if a FGuid named "SGUID" is present the plugin assumes you want that Actor/Component to be taken into considerastion for auto-respawn and/or auto-destroy sequence of actions every time a level is loaded.

                                Also the plugin has nodes that can load an Actor instance from a slot based purely on these "SGUID" properties instead of relying on ObjectIDs
                                (perfect for inventory systems).
                                | Savior | USQLite | FSM | Object Pool | Sound Occlusion | Property Transfer | Magic Nodes | MORE |

                                Comment

                                Working...
                                X