I have a few questions regarding the creation, use, and functionality of banks, and I'd appreciate anyone who could help!
Question 1 - Is there a 'most optimal' or 'most efficient' manner of implementation when it comes to banks and bank sections, e.g. a preferred method of saving/loading data from a bank and using it in a trigger?
Question 2 - How complicated would it be to create a master archives, such as the ones that are used in Blizzard's campaigns? If there are bank-dependent assets (credits, mercenaries, etc.) that a player may or may not have collected throughout their run, does that complicate the implementation of this feature?
Question 3 - Are banks related to auto-save systems at all, and can they be tied to save files? How are auto-saves set up in custom campaigns?
If I have additional questions regarding banks I will edit this post or write a new one. Thanks again in advance for the assistance!
Question 1 - Is there a 'most optimal' or 'most efficient' manner of implementation when it comes to banks and bank sections, e.g. a preferred method of saving/loading data from a bank and using it in a trigger?
The steps. I use, are as followed:
1. Preload statements with typed in bank name and player ID. Variables don't work because preload actions are editor-only.
2. Enable signature.
3. Check, if bank is verified (which checks the signature). You need to differ between two cases:
- Edited or damaged banks are unverified and contain data. -> Clear the bank or disable saving bank data for them or handle it however you like.
- First time players will have an unverified and empty bank.
4. Save a bank version information inside the bank which will allow you to patch your players' bank data in future. Check the info you stored in the bank and edit the bank data as necessary. You might even want to consider resets, if you want to create something like seasons in your game.
I've created an example bank with a lot of comments. It validates the bank, clears the bank if damaged/unsigned, is able to apply patches to the bank file due to storing a version string.
Question 2 - How complicated would it be to create a master archives, such as the ones that are used in Blizzard's campaigns? If there are bank-dependent assets (credits, mercenaries, etc.) that a player may or may not have collected throughout their run, does that complicate the implementation of this feature?
Banks are a storage of data you put in. If you know how to do that with variables, then you can do it with triggers.
However, the data module received bank capabilities which I did not explore so far. I hope someone experienced with that aspect can shine some light on it and when it is great to use.
Question 3 - Are banks related to auto-save systems at all, and can they be tied to save files? How are auto-saves set up in custom campaigns?
Banks have to be saved by the trigger code. If you don't use any library like starcode that compresses information before saving, then you can save everything at any point of time without problems. For example, my Diablo map saves the player's data every couple of seconds and whenever the player leaves the game.
Usually, you can just save the bank whenever you do changes that need to be stored. Unless you save hundreds of entries, this will be no problem. If your data changes frequently and your banks are huge, then you should save every couple of seconds like I did in my Diablo map.
Only saving once the player leaves the game is not sufficient. In case the player looses connection or crashes, then he did not properly leave the game and the trigger does not fire on his computer. Thus, saving on data change or periodically might be required.
I'll take a look at the sample you provided. Thanks for the other insight you shared, as well. If anyone could share any additional advice, especially regarding question 2, I'd be much obliged.
A couple more questions.
Question 4 - I specifically want to implement a master archive that would allow players to play any mission at any time, so long as they had actually completed that mission. This would require that I keep their bank saved even after they complete the campaign. Is there a way to 'lock out' the master archive until the campaign has been completed? I imagine this would be as simple as storing a boolean (if custom variable 'campaign completed' equal to false, then you can't access the master archive), but I'm not sure.
Question 5 - Can one campaign have multiple banks active at a time? For example, if I want the masters archive autosaves to be tied to a different bank than the main campaign autosaves, is this possible? Would this even be necessary?
Question 4 - I specifically want to implement a master archive that would allow players to play any mission at any time, so long as they had actually completed that mission. This would require that I keep their bank saved even after they complete the campaign. Is there a way to 'lock out' the master archive until the campaign has been completed? I imagine this would be as simple as storing a boolean (if custom variable 'campaign completed' equal to false, then you can't access the master archive), but I'm not sure.
I assume your master archives are their own map file. You cannot prevent players from starting any map at any point. So, you need to check at the map start, if they are allowed to unlock it.
If your campaign is NOT on battle.net, then you can load other maps just like in SC 1.
I've played an offline campaign that did something like that very well. It had one map as a main entry point. It showed me the completed/uncompleted missions and let me start the missions depending on my progress. Maybe, you should do the same, if your campaign will not be on battle.net.
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
I have a few questions regarding the creation, use, and functionality of banks, and I'd appreciate anyone who could help!
Question 1 - Is there a 'most optimal' or 'most efficient' manner of implementation when it comes to banks and bank sections, e.g. a preferred method of saving/loading data from a bank and using it in a trigger?
Question 2 - How complicated would it be to create a master archives, such as the ones that are used in Blizzard's campaigns? If there are bank-dependent assets (credits, mercenaries, etc.) that a player may or may not have collected throughout their run, does that complicate the implementation of this feature?
Question 3 - Are banks related to auto-save systems at all, and can they be tied to save files? How are auto-saves set up in custom campaigns?
If I have additional questions regarding banks I will edit this post or write a new one. Thanks again in advance for the assistance!
My YouTube | My SoundCloud | My Twitter
The steps. I use, are as followed:
1. Preload statements with typed in bank name and player ID. Variables don't work because preload actions are editor-only.
2. Enable signature.
3. Check, if bank is verified (which checks the signature). You need to differ between two cases:
- Edited or damaged banks are unverified and contain data. -> Clear the bank or disable saving bank data for them or handle it however you like.
- First time players will have an unverified and empty bank.
4. Save a bank version information inside the bank which will allow you to patch your players' bank data in future. Check the info you stored in the bank and edit the bank data as necessary. You might even want to consider resets, if you want to create something like seasons in your game.
I've created an example bank with a lot of comments. It validates the bank, clears the bank if damaged/unsigned, is able to apply patches to the bank file due to storing a version string.
Banks are a storage of data you put in. If you know how to do that with variables, then you can do it with triggers.
However, the data module received bank capabilities which I did not explore so far. I hope someone experienced with that aspect can shine some light on it and when it is great to use.
Banks have to be saved by the trigger code. If you don't use any library like starcode that compresses information before saving, then you can save everything at any point of time without problems. For example, my Diablo map saves the player's data every couple of seconds and whenever the player leaves the game.
Usually, you can just save the bank whenever you do changes that need to be stored. Unless you save hundreds of entries, this will be no problem. If your data changes frequently and your banks are huge, then you should save every couple of seconds like I did in my Diablo map.
Only saving once the player leaves the game is not sufficient. In case the player looses connection or crashes, then he did not properly leave the game and the trigger does not fire on his computer. Thus, saving on data change or periodically might be required.
I'll take a look at the sample you provided. Thanks for the other insight you shared, as well. If anyone could share any additional advice, especially regarding question 2, I'd be much obliged.
A couple more questions.
Question 4 - I specifically want to implement a master archive that would allow players to play any mission at any time, so long as they had actually completed that mission. This would require that I keep their bank saved even after they complete the campaign. Is there a way to 'lock out' the master archive until the campaign has been completed? I imagine this would be as simple as storing a boolean (if custom variable 'campaign completed' equal to false, then you can't access the master archive), but I'm not sure.
Question 5 - Can one campaign have multiple banks active at a time? For example, if I want the masters archive autosaves to be tied to a different bank than the main campaign autosaves, is this possible? Would this even be necessary?
My YouTube | My SoundCloud | My Twitter
I assume your master archives are their own map file. You cannot prevent players from starting any map at any point. So, you need to check at the map start, if they are allowed to unlock it.
If your campaign is NOT on battle.net, then you can load other maps just like in SC 1.
I've played an offline campaign that did something like that very well. It had one map as a main entry point. It showed me the completed/uncompleted missions and let me start the missions depending on my progress. Maybe, you should do the same, if your campaign will not be on battle.net.