Now for those that don't know about what Happen to "The SCV Team" the Map creator here in a reply post on his YouTube Video said that The SCV Team can no longer be worked on due to corrupt files and that means abandoned forever.
It would be interesting to know which kind of corruption. If he has still access to trigger files within the map (e.g. via MPQ Editor), then nothing is lost. Everything but trigger editor's GUI code can be retrieved from the battle.net cache. Trigger GUI xml is really the only aspect that you cannot just recover (and de-obfuscating the map script, if that option was enabled). Everything else is forcefully existing and accessible when you are able to download it on battle.net (= are able to enter a lobby using the map/mod).
The tech tree is a part of GameUI (since patch 3.0 I believe). So, editing the panel via UI xml code should be possible. This would be required, if you want to add new structures into it.
However, I do not know, if we can add TechTreeStructureFrames. They might be flagged as Blizzard-only. So, the worst case scenario would be putting the data into the images and labels yourself, which should be possible.
The unit names listed at each structure are taken from the unit data in data module. Edit the "Tech Tree Unlocked Units" and the "Tech Tree Produced Units" fields, if you want to add/remove units listed.
Why are there only 9 types supported? I need triggers, dialogs dialog items.
Triggers are Strings (I believe), dialogs and dialog items are integers.
You can write your own conversion functions in GUI via just adding a return action into the function and writing lp_parameterName (= paremter's ID) into its custom code. That references the parameter and the code works, if the file types match. So, e.g. your function's paremter is named "val", then you write lp_val into the return action's custom script section.
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.
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.
1. Leaderpanel .../FullscreenUpperContainer/Leaderpanel
You can see the Pulldown "SelectPulldown" and if you use hotkeys or select something in the dropdown, you should see the content of the leaderpanel.
This frame might be made visible at the start of the game by the game, if you are an observer.
3.
Frame .../FullscreenUpperContainer/MenuBarFullscreenAnchor
Frame .../FullscreenUpperContainer/MenuBarConsoleAnchor
The menu bar is a frame which is moved between the console and the fullscreen anchor frame positions, so you can move those two to alter the position of the menu bar.
The default UI uses hidden back-end implementations for this. There is nothing special defined in UI that reads that value from the selected unit (and currently there is no special frame that does this, although other aspects like life/shields/energy/behaviors can be added separately now).
The first solution idea might be animations, but since you need to show the InfoPaneUnit frame, you would need to hide its other elements to only show the attribute labels. The problem with this is, that it might be impossible to properly detect. It can be done via tricks with a unit selection panel, but that is buggy with observers and AI and I don't think Blizzard fixed that issue (I ran into that in some of my GameHeart UI versions).
But this is still possible with only using UI. But it needs to use an old dirty trick of mine. You can create a new InfoPanel within the InfoPanel's pages and hide the elements you don't want to see.
Usually, you cannot create new InfoPanels as they are flagged as Blizzard-only. But you can create multiple new info panels via using "Frame" as the type instead of "InfoPanel" and then applying the template to that Frame.
The resulting info panel will not work 100% (or at least it used to, no idea what changed over the last 2+ years).
<Frametype="InfoPanel"name="GameUI/UIContainer/ConsoleUIContainer/InfoPanel"file="GameUI"><Frametype="InfoPaneProgress"name="InfoPaneProgress"><!-- The new info panel - anchored to the default InfoPanel --><!-- Do NOT correct the type of the frame. In theory, we are not allowed to create InfoPanel (Blizzard-only), but with "Frame" plus template, we can. --><Frametype="Frame"name="CustomInfoPanel"template="InfoPanel/InfoPanelTemplate"><Anchorrelative="$parent/$parent"/><Heightval="199"/><Widthval="580"/><Frametype="InfoPaneCoopAI"name="InfoPaneCoopAI"><Visibleval="false"/></Frame><Frametype="InfoPaneUnit"name="UnitPanel"><Visibleval="false"/></Frame><Frametype="InfoPaneHero"name="InfoPaneHero"><Visibleval="false"/></Frame><Frametype="InfoPaneQueue"name="InfoPaneQueue"><Visibleval="false"/></Frame><Frametype="InfoPaneCargo"name="InfoPaneCargo"><Visibleval="false"/></Frame><Frametype="InfoPaneGroup"name="InfoPaneGroup"><Visibleval="false"/></Frame><!-- moved offscreen because it does not hide --><Frametype="InfoPaneProgress"name="InfoPaneProgress"><Anchorside="Top"relative="$parent"pos="Max"offset="999"/><Anchorside="Bottom"relative="$parent"pos="Max"offset="999"/><Visibleval="false"/></Frame><!-- InfoPaneUnit contains the attribute label --><Frametype="InfoPaneUnit"name="InfoPaneUnit"><Frametype="Label"name="NameLabel"><Visibleval="false"/></Frame><Frametype="Label"name="SubtitleLabel"><Visibleval="false"/></Frame><Frametype="ProgressBar"name="ProgressBar"><Visibleval="false"/></Frame><Frametype="Label"name="InfoLabel"><Visibleval="false"/></Frame><!-- hide equipment panel as only its position determines the equipment icons, not its visibility --><Frametype="EquipmentPanel"name="EquipmentPanel"><Anchorside="Top"relative="$parent"pos="Min"offset="1000"/><Visibleval="false"/></Frame><!-- Unit attributes --><!-- top offset is equipment panel's default top offset + its height + typeLabel's orig default top offset --><Frametype="Label"name="TypeLabel"><Anchorside="Top"relative="$parent"pos="Min"offset="176"/></Frame></Frame></Frame></Frame></Frame></Desc>
I've resolved the lobby bug in my maps. The issue was caused by using both Void Multi and Void Campaign dependencies in the same map. This worked fine right up until 3.1.2.
Since patch 3.0, Blizzard uses a new data system called CASC. You can access the content via editors like CASC Viewer.
But most files can be found via the sc2editor, already:
sc2editor -> windows -> console -> enter "browse" -> search the file you want. Right click to export a file.
Unfortunately, this will not grant you access to files whose names appear multiple times in the archive, e.g. "Assets.txt".
Random real is not costly. 1k executions use 0.431ms on my computer which is pretty much nothing. The trigger debugger is good at showing how the native functions perform.
Btw, if there is no enemy unit left on the map, the trigger will create errors.
I have recreated your trigger in a test map and I do not experience any big FPS drops. I am applying this to 500 units. The pathing in my test map is quite simple.
After selecting 500 Marines, I have 161 fps. After the trigger finishes, I have 71 fps and the game does not drop below that level.
Skunk, do you experience the problem in my test map, too?
I reduced the Marine's movement speed, so there is a lot of time before the units start fighting as there my FPS dropped down to 37 FPS with normal speed, I assume due to alerts and new pathfinding to targets and around neighbor units firing. I've tested with the 64 bit client.
1. As a mapmaker, I would love to be contacted by others about possible improvements, collaboration, etc. I would be happy to encounter other people that are such involved in your own creation. People just doing so without asking before seems rude to me. If you are not actively developing your game right now, then you might become out of touch with its current state and what it needs to improve. Input is always great, but it is still your creation, so you should have the last voice. (The other person could just recreate the game (NOT copy) and add their own touch/ideas into it...)
2. No no.
3. I would still try to contact the author, but already start working in secret as he announced to abandon it. Btw, if the map is small, just recreate your own version instead of editing existing maps. Btw, always give credit to the original author then as either inspiration, idea or original author and that you took over due to his/her inactivity.
But I assume I would just always recreate the map unless you are only doing a few bug fixes.
4. Same as 3.
5. A couple of weeks. But I would be working on it already, though. But just don't publish it publicly, yet...
6. Well, there will be a time where you don't have time or the energy to work on your maps. But a person contacting you about the map might bring the necessary momentum to get the author back on track.
7. Always try to add your own spin to it! Try to improve it for the sake of evolution! For example, use diff tilesets, create better terrain, add more features, add AI, add statistics, better UI, etc.
That is pretty much what I kept doing in SCBW. I took games I loved, recreated them and made better/different games out of it. Sometimes it was just to learn how something was created and then it became addicting.
For example, in SCBW I created "Poker Temple" because the existing poker defense map (I forgot the name, but the author was something like Tourmenteur, I am too lazy to open my old map again) at that time was buggy and thus unplayable. During that, I made the layout bigger, added better pathing and alternative game mode (which turned out to be more fun as it had a strategical element).
Not sure if known because this thread is so long...
Pitfall: Removing a unit does not instantly remove it from unit groups anymore Solution: remove it manually, else maybe a check for it being alive works. It basically means that you now need to actively prevent this... same for inventory items, though.
0
It would be interesting to know which kind of corruption. If he has still access to trigger files within the map (e.g. via MPQ Editor), then nothing is lost. Everything but trigger editor's GUI code can be retrieved from the battle.net cache. Trigger GUI xml is really the only aspect that you cannot just recover (and de-obfuscating the map script, if that option was enabled). Everything else is forcefully existing and accessible when you are able to download it on battle.net (= are able to enter a lobby using the map/mod).
0
The tech tree is a part of GameUI (since patch 3.0 I believe). So, editing the panel via UI xml code should be possible. This would be required, if you want to add new structures into it.
However, I do not know, if we can add TechTreeStructureFrames. They might be flagged as Blizzard-only. So, the worst case scenario would be putting the data into the images and labels yourself, which should be possible.
The unit names listed at each structure are taken from the unit data in data module. Edit the "Tech Tree Unlocked Units" and the "Tech Tree Produced Units" fields, if you want to add/remove units listed.
0
Triggers are Strings (I believe), dialogs and dialog items are integers.
You can write your own conversion functions in GUI via just adding a return action into the function and writing lp_parameterName (= paremter's ID) into its custom code. That references the parameter and the code works, if the file types match. So, e.g. your function's paremter is named "val", then you write lp_val into the return action's custom script section.
0
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.
0
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.
0
CASC viewer asks for a key, so most likely the files are encrypted.
0
1. Leaderpanel .../FullscreenUpperContainer/Leaderpanel
You can see the Pulldown "SelectPulldown" and if you use hotkeys or select something in the dropdown, you should see the content of the leaderpanel.
This frame might be made visible at the start of the game by the game, if you are an observer.
2.
AlliancePanelToggleButton .../FullscreenUpperContainer/AllianceButton
TeamResourcePanelToggleButton .../FullscreenUpperContainer/TeamResourceButton
3.
Frame .../FullscreenUpperContainer/MenuBarFullscreenAnchor
Frame .../FullscreenUpperContainer/MenuBarConsoleAnchor
The menu bar is a frame which is moved between the console and the fullscreen anchor frame positions, so you can move those two to alter the position of the menu bar.
0
The default UI uses hidden back-end implementations for this. There is nothing special defined in UI that reads that value from the selected unit (and currently there is no special frame that does this, although other aspects like life/shields/energy/behaviors can be added separately now).
The first solution idea might be animations, but since you need to show the InfoPaneUnit frame, you would need to hide its other elements to only show the attribute labels. The problem with this is, that it might be impossible to properly detect. It can be done via tricks with a unit selection panel, but that is buggy with observers and AI and I don't think Blizzard fixed that issue (I ran into that in some of my GameHeart UI versions).
But this is still possible with only using UI. But it needs to use an old dirty trick of mine. You can create a new InfoPanel within the InfoPanel's pages and hide the elements you don't want to see.
Usually, you cannot create new InfoPanels as they are flagged as Blizzard-only. But you can create multiple new info panels via using "Frame" as the type instead of "InfoPanel" and then applying the template to that Frame.
The resulting info panel will not work 100% (or at least it used to, no idea what changed over the last 2+ years).
Example Map
Example code snippet:
Screenshot:
![http://i.snag.gy/JEjLP.jpg](http://i.snag.gy/JEjLP.jpg)
0
They applied an update on the servers earlier today. This might have addressed this.
0
The editor does not support animations in the code right now.
Thus, you have to edit the UI outside the sc2 editor, if you want to use animations in that layout file.
Btw, it is possible to have the animations in a different layout file than the rest of the UI code.
0
Since patch 3.0, Blizzard uses a new data system called CASC. You can access the content via editors like CASC Viewer.
But most files can be found via the sc2editor, already:
sc2editor -> windows -> console -> enter "browse" -> search the file you want. Right click to export a file.
Unfortunately, this will not grant you access to files whose names appear multiple times in the archive, e.g. "Assets.txt".
0
Random real is not costly. 1k executions use 0.431ms on my computer which is pretty much nothing. The trigger debugger is good at showing how the native functions perform.
Btw, if there is no enemy unit left on the map, the trigger will create errors.
I have recreated your trigger in a test map and I do not experience any big FPS drops. I am applying this to 500 units. The pathing in my test map is quite simple.
After selecting 500 Marines, I have 161 fps. After the trigger finishes, I have 71 fps and the game does not drop below that level.
Skunk, do you experience the problem in my test map, too?
I reduced the Marine's movement speed, so there is a lot of time before the units start fighting as there my FPS dropped down to 37 FPS with normal speed, I assume due to alerts and new pathfinding to targets and around neighbor units firing. I've tested with the 64 bit client.
0
1. As a mapmaker, I would love to be contacted by others about possible improvements, collaboration, etc. I would be happy to encounter other people that are such involved in your own creation. People just doing so without asking before seems rude to me. If you are not actively developing your game right now, then you might become out of touch with its current state and what it needs to improve. Input is always great, but it is still your creation, so you should have the last voice. (The other person could just recreate the game (NOT copy) and add their own touch/ideas into it...)
2. No no.
3. I would still try to contact the author, but already start working in secret as he announced to abandon it. Btw, if the map is small, just recreate your own version instead of editing existing maps. Btw, always give credit to the original author then as either inspiration, idea or original author and that you took over due to his/her inactivity.
But I assume I would just always recreate the map unless you are only doing a few bug fixes.
4. Same as 3.
5. A couple of weeks. But I would be working on it already, though. But just don't publish it publicly, yet...
6. Well, there will be a time where you don't have time or the energy to work on your maps. But a person contacting you about the map might bring the necessary momentum to get the author back on track.
7. Always try to add your own spin to it! Try to improve it for the sake of evolution! For example, use diff tilesets, create better terrain, add more features, add AI, add statistics, better UI, etc.
That is pretty much what I kept doing in SCBW. I took games I loved, recreated them and made better/different games out of it. Sometimes it was just to learn how something was created and then it became addicting.
For example, in SCBW I created "Poker Temple" because the existing poker defense map (I forgot the name, but the author was something like Tourmenteur, I am too lazy to open my old map again) at that time was buggy and thus unplayable. During that, I made the layout bigger, added better pathing and alternative game mode (which turned out to be more fun as it had a strategical element).
0
0
Not sure if known because this thread is so long...
Pitfall: Removing a unit does not instantly remove it from unit groups anymore
Solution: remove it manually, else maybe a check for it being alive works. It basically means that you now need to actively prevent this... same for inventory items, though.
Caused some bugs in my diablo map.