Can you patch a save game?
#1
Posté 02 décembre 2013 - 03:50
Why is that? Can save games not be fixed?
This is making it so that every time I encounter a game-breaking bug, I have to start over from the beginning of the campaign. How the hell do you test a campaign this way? I mean, it's fine for the first 30 minutes of gameplay. But what if you got a bug into the 30th hour of play? Who wants to start over from there?
I have to be missing something... Because this CANNOT be the way the devs tested the OC.
#2
Posté 02 décembre 2013 - 04:45
If they're in the module folder, you can just put the fixed copies in your campaign folder or in your override folder.
#3
Posté 02 décembre 2013 - 06:58
I use campaign folder for convos of the main quest, since I might need them later. I also use it for scripts that are useful more than one time. But generally I use the module folder, at least in the beginning, so that I have space for overriding the problems.
However, I also encountered some problems related to this. Sometimes it seemed that once a module is loaded, I couldn't change some things in it. Areas already visited for example.
When PJ was testing for me, he encountered a problem on a convo. Until then, I thought that when a convo fires, no changes were possible. But he said to me that, he opened it in the toolset, and tweaked it a bit and then it worked, for he put it in the campaign folder
#4
Posté 02 décembre 2013 - 07:37
You can actually change areas already visited in many ways if you do itandysks wrote...
Sometimes it seemed that once a module is loaded, I couldn't change some things in it. Areas already visited for example.
by script, and not by opening up the area in the toolset.
#5
Posté 02 décembre 2013 - 09:02
#6
Guest_Iveforgotmypassword_*
Posté 02 décembre 2013 - 09:14
Guest_Iveforgotmypassword_*
I test modules in bits as I make them, all you have to do is keep changing the start area/waypoint, then by using a save I can jump the whole party from where I left them at the end of the previous module to any part of the new one. If vital stuff's happened I stick in an npc with a conversation at the new start point then delete him/her later.
#7
Posté 02 décembre 2013 - 09:21
Use the script thing, for example there is a local variable on an NPC node called "something". The variable tells it to fire only when it is 0, but then it is set to one, and something went wrong.
I open the console and type rs ga_local_int("something",0,oPC), and the node will fire again after the convo is fixed, no matter where I saved in the playthrough?
#8
Guest_Iveforgotmypassword_*
Posté 02 décembre 2013 - 12:25
Guest_Iveforgotmypassword_*
If you really want to check balance etc you can even unequip all your companions give everything to the PC and export him/her. Then make a conversation on an npc for their joining up and stick the companions in the area. Then run it as a module with your exported PC and that way you can have them join up near the new start point and they'll level up and be with their equipment once you give it back.
#9
Posté 02 décembre 2013 - 03:20
Iveforgotmypassword wrote...
I test modules in bits as I make them, all you have to do is keep changing the start area/waypoint, then by using a save I can jump the whole party from where I left them at the end of the previous module to any part of the new one. If vital stuff's happened I stick in an npc with a conversation at the new start point then delete him/her later.
I test modules in bit as well, with a script so I don't have to keep movig the starting waypoint (thus my test script just jumps me to the appropriate module and area, with a known waypoint, or a test waypoint I laid down). I have a pretty elaborate test script so all I have to type is rs x_plot(number) and it will do all the necessary work (journal settings, adding group members, equipping them appropriately for the level, etc).
Problem is, stuff changes over time, especially in this prologue as I was learning the toolset and figuring out the "best way" to do something. Some older stuff that had already been tested and worked was now broken. Some of it was minor, but if it is a major thing then that's a problem.
I'll have to figure out if I wanted to move stuff to the campaign folder or not... I have some conversations and scripts there. But others, that were specific to a module, got left in the module. For "fixing" purposes it seems to make more sense to put those in the campaign folder I guess.
Thanks guys.
#10
Posté 02 décembre 2013 - 03:25
andysks wrote...
I do the same, but sometimes you need to see the flow and realize something didn't work out too well. I mainly test cutscenes the moment I create them, also new scripts and so on.
Use the script thing, for example there is a local variable on an NPC node called "something". The variable tells it to fire only when it is 0, but then it is set to one, and something went wrong.
I open the console and type rs ga_local_int("something",0,oPC), and the node will fire again after the convo is fixed, no matter where I saved in the playthrough?
I test every cut-scene the moment I create it (and it usualy takes me several passes to get it just right). Same with an area encounter. I'll test the crap out of it to make sure it isn't too difficult.
But I wanted to do a complete playthrough of the prologue to get the "flow" and see if it felt right (and to use a stopwatch and time it to see how many hours of gameplay it is).
I found a few broken things. One encounter was way too hard. I must have lucked through it the first few times I tested it, because in actual gameplay I couldn't beat it. About the 8th time I failed I decided it needed to be reworked.
Most of the other issues were with cut-scenes failing. One node failed due to a wrong integer setting in a gc_journal_entry check. Another conversation failed altogether because the library I wrote that the script calls had changed since it was first written.
One thing I'm figuring out is, once something is tested and finished, I should really leave it alone. As a programmer, I tend to want to optimize stuff once I find a "better way" to do something. But in this engine, the way it's designed, once it's working I should just leave it alone... and if I do change something, it all needs to be re-tested.
Still, it's working. I'm a little over an hour and 15 minutes into the prologue and there's a lot left to go, so content-wise it's where I was hoping it would be. And it flows well. The pacing seems good. We'll see how many more bugs there are along the way....
#11
Posté 02 décembre 2013 - 04:29
I can explain more fully later and elsewhere (it's a big topic), but it's possible even without having an On Client Enter script (though it would be more convenient that way). It's a bit off-topic here. I will say, however, that for any area script slots that are empty, you should put fake names into them, for future contingencies. It won't hurt to have scripts in there that don't exist.andysks wrote...
How do you mean? I just need to state here that my areas rarely have an OnClientEnter event, since I am not a so experienced scripter. Only when I need something really special I use it (spawn companions for example). Therefore all my stuff are placed and not spawned. Maybe one day I'll learn how. In any case, I think this could be a reason for it.
#12
Posté 02 décembre 2013 - 04:51
Tchos: Should I expect a pm about these stuff
#13
Posté 02 décembre 2013 - 05:07
#14
Posté 02 décembre 2013 - 05:43
andysks wrote...
Colors : Have you installed the module testing kit, or MTT? It allows for some really good testing, including an insta kill or resurrect. So, for example on the super hard encounter, you try to do it "legally", but when you see it can't be passed you hit insta kill and note down to nerf it. It is really good, helped me a lot.
Yeah, I haven't got around to installing that yet. I had briefly looked at it.
If I would have been 30 hours into gameplay when I hit this encounter, I would have just wrote a script in the campaign folder and executed it with the console to kill the buggers. And then, like you said, nerf it later.
I find I have to nerf my encounters a lot. Which is okay; I'd rather put too many critters in there and have to nerf it rather than not have enough. It's easy to delete spawn points...
I'm actually pretty happy with my current test framework. I'm just not pleased with my own personal dilligence in testing. There were some things I should have gone back and tested again when I knew changes I was making may retroactively affect certain things. I just got impatient. I got tired of building and wanted to play the thing
Moving all the conversations and scripts to campaign seems like the solution that will work best for me. Because 99% of the time, what I'm finding is that the broken stuff is almost always a conversation or a script. And I know when stuff is going to happen, so I'm really good about saving right before an event. But when the changes didn't stick after reloading the save, I was kinda stumped. Now I understand... module level stuff is saved with the save game. So I'll rework my file strategy.
@Tchos: feel free to derail the thread. It's a pertinent conversation actually.
@Andy: Tchos script mechanism is actually pretty simple to understand. It basically works like this:
Short answer: You put scripts in all the script spots for an area, even if you are NOT going to use them. These just need to have an empty main() method. That's it. So, for every area, you have custom scripts that do nothing. Custom OnClientEnter, custom OnAreaHeartbeat, etc. If you have an area named ForestRuins, you have cient_enter_forest_ruins, client_enter_hb, etc. These scripts just do nothing. They have a blank main() method.
The key is - you have put them in the area as soon as you created it, so you can use them down the road if you need to, to dynamically add content to an area without having to open the toolset and place stuff. This means you can affect an area that could normally not be changed due to it being saved with the save game.
Let's say you have an area you want to affect a change in, but you don't want to open the toolset to make a change. You want to do it dynamically through a script. Let's say for the sake of simplicity you want to add a creature to an area at a very specific spot, because you want to introduce a conversation, or something.
Now, if you already have an existing OnClientEnter script for the area that does some spawning, it's easy: you can add the change in that script, and when the player zones in, the code spawns the new creature (provided it's a Campaign script, or in override).
But let's say you dont' use an OnClientEnter script for an area. What Tchos is saying is that you should still create a BLANK OnClientEnter script for the area. So let's say you have an area called ForestRuins. It has no OnClientEnter script when you start building it. That's fine - make an OnClientEnter script anyway and just leave it with a blank main() function.
Now, someday down the road you want to add that creature to that area. People are already playing your mod and have save games, and you want to add that creature. Well, you were smart and provided a blank client_enter_forest_ruins script for that area. So now you go into that script and instead of it being a blank main() method, you add the code to create the creature. You can pick a waypoint, or a specific location with x/y/z coordinates, and you spawn the creature. In this way, a save game can be affected.
It's how Tchos intends to add content after release, but it could be a lifesaver in other ways (he's had issues with his toolset not allowing him to open his main area; this allows him to keep adding content).
It's a very dynamic, script-based way to add stuff to an existing area. It just takes a little thinking ahead is all, to ensure you put blank scripts in those spots. (Well, they're not blank; they just have empty main() methods)
#15
Posté 02 décembre 2013 - 05:56
Also, I know how it feels. I even sent a version to two people for testing, even though I knew bugs were plenty. I guess sometimes we need to see and hear actual progress, playing the thing, instead of just placing placeables that look nice, and checking the area as complete on the excel sheet
#16
Posté 02 décembre 2013 - 06:00
#17
Posté 02 décembre 2013 - 06:03
doesn't that get problematic, when you click on a field with the name of a script that doesn't exist?Tchos wrote...
Actually, I'm not even saying to make scripts with blank main functions. The script doesn't have to actually exist, and you can create one with that name only later, and only if you need it. The game will just ignore missing scripts and move on.
sometimes they disappear and i'm like, "oh ***"
Modifié par kevL, 02 décembre 2013 - 06:04 .
#18
Posté 02 décembre 2013 - 06:10
Also, I keep a list of all scripts I have assigned to my areas, whether they exist or not.
Modifié par Tchos, 02 décembre 2013 - 06:11 .
#19
Guest_Iveforgotmypassword_*
Posté 02 décembre 2013 - 07:03
Guest_Iveforgotmypassword_*
ColorsFade wrote...
If I would have been 30 hours into gameplay when I hit this encounter, I would have just wrote a script in the campaign folder and executed it with the console to kill the buggers. And then, like you said, nerf it later.
rs ga_death("really tough bad monster",0) does the trick you just need the tag putting in -1 will wipe out the whole lot if there was a gang with the same tags.





Retour en haut







